Решили: боевой профиль пост-обработки BattlePostFX_Base наполнен настоящим подассетом Bloom
(порог 1.0, интенсивность 1.0, scatter 0.7). До этого в файле лежали четыре висячие ссылки
{fileID: 0} и ноль компонентов — и на диске, и в памяти редактора.
Почему: без bloom всё, что мы намеренно уводим за 1.0 (свечение части на касте ×2.5, осколки
×2.75, вспышка смерти ×1.8), просто клампится — то есть половина боевого VFX была физически
невыполнима. Это ВТОРОЙ заход тех же грабель: в первый раз bloom лежал с intensity: 0, теперь
профиль оказался пустой оболочкой. Порог 1.0 держит правило «bloom только на VFX»: обычный арт под
единицей не светится сам собой.
Грабли: VolumeProfile.Add<T>() создаёт компонент ТОЛЬКО в памяти. Без
AssetDatabase.AddObjectToAsset он не становится подассетом, файл сохраняется со ссылкой в никуда,
и после ближайшего reload профиль пуст — молча, без единой ошибки. Так, судя по всему, профиль и
родился пустым в коммите, который его завёл.
Второе: снимок из редактора без renderPostProcessing врёт в меньшую сторону. Кадр, снятый
голой камерой, показывает арт почти без свечения, и по нему легко решить, что эффект слабый. Честный
кадр требует URP-камеры с постом и временного глобального Volume с профилем — оба создаются на
время рендера и удаляются, чтобы не осесть в чужой открытой сцене.
Осталось незакрытым: ни одна сцена этот профиль не использует — Volume в WorldScene и
MaxSceneForTests ссылается на MapPostFX, который тоже пуст. То есть в игре пост-обработки нет
до сих пор; куда вешать боевой Volume и что должно лежать в профиле карты — вопрос к Максу.
Владелец правды: Assets/Settings/PostFX/BattlePostFX_Base.asset.