Решили: любой новый рисователь спрайтов поверх нашего тела обязан записать per-instance блок
до первой отрисовки, даже если писать в него нечего. Для призрачных копий это делает
GhostImage.PrimeParts, общий для боя и стенда Post FX Lab.
Почему: спрайтовый шейдер тела (SRP Batcher) подхватывает SpriteRenderer.color только после
первой записи MaterialPropertyBlock. Без неё рендерер игнорирует и цвет, и альфу: копия выходит
БЕЛОЙ и не гаснет. У живого тела эту роль давно исполняет IUnitBodyVisual.Prime — там причина
записана в докстринге, но она про юнита, и на новый визуал, который тем же материалом рисует что-то
своё, никто её не переносил.
Грабли: дефект прожил ровно до первой раскадровки и был бы невидим в коде — числа правильные, логика правильная, компилируется, тесты зелёные. На листе из 24 кадров он читался за секунду: стена одинаковых белых силуэтов вместо гаснущего хвоста. Это ровно тот класс промахов, ради которого заведено правило «тронул VFX — сними раскадровку САМА»; в тот же заход правило окупилось второй раз (нулевой кадр стенда Лаборатории показывал пустую сцену, потому что рывок на нём ещё не начался).
Владелец правды: GhostImage.PrimeParts (прайм), SkeletalBodyVisual.Prime (та же причина у
живого тела), PostFxLabWindow.BuildGhosts (зовёт общий прайм, своего не имеет).