Решили: базовый размер всех шести боевых VFX поднят единым множителем ×1.5 (hit_spark 0.384 → 0.576, то есть 56 px в боевом кадре), а стенд контактных листов красит тело в серый через IUnitBodyVisual.Apply вместо белого по умолчанию.

Почему: на белом теле светлый аддитивный эффект не читается ни при каком размере — измерено: контраст на силуэте держится 0.09 и не растёт вместе с площадью. На сером теле тот же эффект даёт 0.13 и отлично виден глазами. Проверка тремя размерами (×1.0 / ×1.5 / ×2.0) показала, что контраст не зависит от размера вовсе (0.13 во всех трёх), меняется только площадь пятна: 1006 → 2560 → 4658 пикселей. То есть размер решает «заметен ли эффект», а цвет тела — «виден ли он вообще»; это две независимые оси, и путать их дорого.

Следствие для контента, не для кода: UnitView_BoneStandart — заготовка с белым телом, и в бою дев-дуэлянт тоже белый (White = не красим). Значит на нём эффекты будут тонуть и после этой правки. Боевые тела должны быть НЕ белыми, либо у частиц должно появиться тёмное ядро — иначе эффект бьётся о собственный потолок яркости. Задача открыта.

Грабли: первым выводом я назвала причиной «контраст», посчитав размер по startSize и не заметив кривую (см. запись «Particle Size Was Choked By The Lifetime Curve»). Порядок правильный: сначала мерить размер эффекта в пикселях кадра, и только потом — контраст на теле. Обратный порядок даёт диагноз, который звучит убедительно и лечит не то.

Владелец правды: ScriptableObjects/Vfx/*.asset (_sizeUnits), тест VfxSizeContractTests (реестр размеров в пикселях), VfxData remarks (почему владелец один).