Решили: тёмную обводку формы удара шейдер отдаёт только альфой при нулевом rgb, а сам шейдер переходит с Blend One One на premultiplied alpha (Blend One OneMinusSrcAlpha).

Почему: аддитив умеет складывать и не умеет вычитать, поэтому тёмный контур при нём невозможен физически — тёмный цвет, прибавленный к кадру, кадр не темнит. Premultiplied даёт оба режима в одном материале: пиксель с нулевой альфой ведёт себя как прежний аддитив (свет и bloom работают как работали), пиксель с альфой перекрывает то, что под ним. Отвергнуты: второй материал/проход под формой — это второй draw call на каждый удар и вторая копия геометрии, которую пришлось бы держать в синхроне с первой; тёмный цвет в палитре — обводка стала бы вторым владельцем цвета мимо палитры юнита, хотя она вообще не красит.

Сказано: «Давай чисто черную кайму» (05.08.2026, сессия a4e2eebd). Решение по виду пришло от Макса, выбор из четырёх стендов Лаборатории #/lineart.

Грабли:

  • «Кайма» в кластере уже занята и означает ПРОТИВОПОЛОЖНОЕ место: внешняя часть формы, несущая цвет элемента (_RimColor, способ смешения «ядро и кайма»). Тёмная граница снаружи названа обводкой (_LineWidth) — без этого следующая правка перекрасит элемент, думая, что чинит контур.
  • Обводке нужен запас quad. Меш натянут на форму впритык, и контур, лежащий снаружи, обрезался бы краем ровно там, где должен быть виден. Запас добавлен в quadSize, и он же нужен звезде дробящего.
  • Звезда живёт в координатах quad, а форма — в своих (p = q / _Len). Ширина обводки задана в долях полудлины формы, поэтому для звезды она переводится множителем _Len. Забыть перевод — получить контур звезды не той толщины при любом _Len ≠ 1.
  • MaterialPropertyBlock не соблюдает Range из проперти шейдера — диапазон ограничивает только инспектор материала. Потолок ширины продублирован константой в коде.
  • Расстояние до формы за её остриями меряется до самого острия, а не по продолжению осевой кривой: иначе обводка уходит хвостом в пустоту вдоль линии, которой уже нет.
  • Материал MAT_Vfx_HitForm_Add теперь назван неточно — «Add» осталось от прежнего блендинга. Переименование — работа для редактора (ассет), в этот заход не входило.

Владелец правды: SH_Vfx_HitForm.shader, HitFormVfx.cs (перевод в доли и запас quad), CombatFeelConfig (ширина и тумблер), тест FeelToggleCoverageTests. Дизайн-сторона — канон gdd/70-gamefeel/vfx-language §«Форму обводит чёрный контур» и запись журнала ГД 2026-08-05/3.