diff options
| author | Valentin Popov <valentin@popov.link> | 2026-10-31 17:43:05 +0300 |
|---|---|---|
| committer | Valentin Popov <valentin@popov.link> | 2026-10-31 17:43:05 +0300 |
| commit | 108a04b70e0cd5032d417cc7fd00cec2a385246b (patch) | |
| tree | ba0380f1d581b6554acaaf12722db944296d4e6b /docs | |
| parent | c31e5b734252c9191afe7809f7ef32f85f68aa0f (diff) | |
| download | fparkan-108a04b70e0cd5032d417cc7fd00cec2a385246b.tar.xz fparkan-108a04b70e0cd5032d417cc7fd00cec2a385246b.zip | |
fix(render): scale Control light radius with emitter transform
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/appendices/knowledge-boundaries.md | 4 | ||||
| -rw-r--r-- | docs/reference/render-frame.md | 15 | ||||
| -rw-r--r-- | docs/tomes/05-render.md | 8 |
3 files changed, 26 insertions, 1 deletions
diff --git a/docs/appendices/knowledge-boundaries.md b/docs/appendices/knowledge-boundaries.md index f587743..6fbedf4 100644 --- a/docs/appendices/knowledge-boundaries.md +++ b/docs/appendices/knowledge-boundaries.md @@ -59,6 +59,10 @@ log на минимальных сценах с одним типом матер ## FXID field-level semantics +Control Op1 пока использует цвет и радиус без случайных добавок команды; +это явное приближение считается в `render_coverage control_op1_jitter_unsupported`. +Масштаб радиуса длиной преобразованного направления и нижняя замена 0,01 восстановлены. + Размеры команд, resource references, lifecycle, flags families и используемые time modes известны. Не закрыто значение каждого поля body opcodes 1--10, отсутствующий во всех проверенных каталогах opcode 6 и точные формулы редких diff --git a/docs/reference/render-frame.md b/docs/reference/render-frame.md index 08d7c37..3244d1b 100644 --- a/docs/reference/render-frame.md +++ b/docs/reference/render-frame.md @@ -71,6 +71,21 @@ RVA `0x1B0F0`, заменяет diffuse alpha пакета без type 16 с bat путь и ещё не декодирован. Это ограничивает приёмку на частично отсечённых порталах и не позволяет считать интерьер принятой эталонной сценой. +## Радиус Control Op1 + +GOG `Effect.dll` (SHA-256 +`386a3e8db1ce23f61957825d633c7dae1ed40c25cab0cf10a534385fd7cee789`), +RVA `0xF6E0`, преобразует направление текущей матрицей, сохраняет его длину +перед нормализацией и умножает на неё интерполированный локальный радиус. +Умножение видно по RVA `0xFB13`; перед LightManager `+0x10` неположительный +результат заменяется на `0.01`. В живом «Конструкторе» для синего источника +завода локальный радиус 7 и длина `0x409B1F91` дали радиус `0x4207BB9F`. +Это же значение проверяется Rust-тестом общего Op1 evaluator. + +Случайные добавки цвета и радиуса ещё не воспроизводятся; приложение сообщает +число таких Control-команд как `control_op1_jitter_unsupported` и использует +их авторские значения. У синего источника в проверенном захвате добавки нулевые. + ## Элемент отрисовки Подготовленный элемент отрисовки содержит: diff --git a/docs/tomes/05-render.md b/docs/tomes/05-render.md index 295e718..bd23875 100644 --- a/docs/tomes/05-render.md +++ b/docs/tomes/05-render.md @@ -839,7 +839,13 @@ node poses входят в transform до локальной FX basis. РеалÐ охватывают Op3 modes 0–2, Op4, Op7/8 particle pools и Op9 generated mesh. Op1 selector 1 добавляет point lights без native flag `0x80000000` в общий diffuse список; остальные active records сохраняют flags для специальных путей и -projected shadows. Effect renderer подавляет header bit `0x800` только при +projected shadows. Радиус источника масштабируется длиной его преобразованного +направления до нормализации. Например, локальный радиус 7 при масштабе узла +около 4,85 освещает область радиусом около 34. Потеря этого множителя оставляла +синий свет завода почти незаметным. Неположительный итог заменяется на 0,01. +Случайные добавки к цвету и радиусу пока явно считаются в +`render_coverage control_op1_jitter_unsupported`. +Effect renderer подавляет header bit `0x800` только при render selector 0. Native AniMesh component path захвачен с selector 1, а в его 53-entry manager присутствуют FX entries с header `0xD00`; preview использует selector 1 и пропускает такие visual commands. Изменения manager |
