fix(render): scale Control light radius with emitter transform
Docs Deploy / Build and Deploy MkDocs (push) Successful in 39s
Docs Deploy / Build and Deploy MkDocs (push) Successful in 39s
This commit is contained in:
5 files changed
+92
-23
No files matched your search
@@ -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 и точные формулы редких
|
||||
|
||||
@@ -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` и использует
|
||||
их авторские значения. У синего источника в проверенном захвате добавки нулевые.
|
||||
|
||||
## Элемент отрисовки
|
||||
|
||||
Подготовленный элемент отрисовки содержит:
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in new issue
Block a user