diff options
Diffstat (limited to 'docs/reference/environment-effects.md')
| -rw-r--r-- | docs/reference/environment-effects.md | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/docs/reference/environment-effects.md b/docs/reference/environment-effects.md index 2a17838..23115af 100644 --- a/docs/reference/environment-effects.md +++ b/docs/reference/environment-effects.md @@ -165,13 +165,32 @@ opcode 1; обе границы включены, а коэффициент вы Позиция, направление, цвет и range интерполируются по концам команды. Позиция и направление переводятся через основу родителя; направление после -этого нормализуется, а нулевой вектор остаётся нулевым. Range сохраняет -авторское значение без ограничения снизу. Типы Op1 `1`, `2`, `5`, `6` и `7` +этого нормализуется, а нулевой вектор остаётся нулевым. Радиус умножается на +длину преобразованного направления; неположительный результат заменяется на +`0,01`. Типы Op1 `1`, `2`, `5`, `6` и `7` выбирают point-light selector `1`; их native flags сохраняются. Типы `3` и `4` выбирают другие классы записей LightManager и не попадают в generic список точечного света. У `LightningEffect` выборка тех же полей использует отдельные ограничение по длительности FXID и правила безопасной обработки. +Generic Control Op1 добавляет к интерполированным RGBA и радиусу равномерный +шум `U × (amplitude / 65536) − amplitude / 2`, где `U` — очередное 16-битное +слово native FX-генератора. Цветовые амплитуды лежат в body `92..108`, +амплитуда радиуса — в `116..120`. Радиус с этой добавкой затем умножается на +длину преобразованного направления и ограничивается снизу `0,01`. +В [эталонной Effect.dll](original-binaries.md) RVA `0xF6E0` расходует слова +в порядке A, B, G, R, радиус: R использует общий поток DLL, остальные четыре +выборки — отдельный поток Op1. Нулевая амплитуда и выход за интервал команды +не отменяют расход этих слов. Четыре активные выборки RGBA и состояния обоих +генераторов после пяти вызовов совпали побитно с DLL при CW `0x007F`; +сравнение радиуса учитывает известное приближение native FastProc длины. + +Приложение сохраняет состояния между обновлениями сцены, не пересчитывая их +при повторной отправке кадра. Начальные seeds просмотра равны `1/1`; +инициализация и общий порядок выборок остальных FX ещё не воспроизведены. +Эта граница учитывается в `control_op1_rng_schedule_approx`: мерцание +подключено, но его конкретная последовательность ещё не служит эталоном parity. + ## Молния и звуковые события `decode_env_lightning_fxid` извлекает из FXID длительность, ссылки opcode 3 и |
