diff options
| -rw-r--r-- | docs/appendices/knowledge-boundaries.md | 3 | ||||
| -rw-r--r-- | docs/reference/atmosphere.md | 20 | ||||
| -rw-r--r-- | docs/reference/render-frame.md | 10 |
3 files changed, 22 insertions, 11 deletions
diff --git a/docs/appendices/knowledge-boundaries.md b/docs/appendices/knowledge-boundaries.md index 5470783..7c9daae 100644 --- a/docs/appendices/knowledge-boundaries.md +++ b/docs/appendices/knowledge-boundaries.md @@ -11,7 +11,8 @@ authoring API без динамического подтверждения. state transitions и окончательный порядок части transparent/FX/shadow subpasses. Дистанционная кривая тумана по квадратам границ подтверждена в живом CShade. -Выбор проходов по native shade-state и GPU fog color пока заменён общим туманом мира с цветом горизонта; +Обычный GPU fog color из горизонта подтверждён исполнением; выбор проходов по +native shade-state и их временные изменения цвета пока заменены общим туманом мира; это приближение считается как `render_coverage fog_pass_eligibility_approx`. После ограничения цели рельефом интерактивная камера проверяет движение diff --git a/docs/reference/atmosphere.md b/docs/reference/atmosphere.md index d755bfb..8d44e4e 100644 --- a/docs/reference/atmosphere.md +++ b/docs/reference/atmosphere.md @@ -185,21 +185,27 @@ RGB palette 12 с минимумом `80/255` на канал и alpha `150/255` ## Туман и свет -Нативное обновление `CSky` записывает две дальности и один packed RGB. +Нативное обновление `CSky` записывает две дальности и нижнюю границу освещения. `FogFrame` повторяет этот контракт: ```text fog.start = sky.values[0] * 700 fog.end = sky.values[1] * 700 -fog.color = RGB(sky.packed[1]) / 255 +lighting_floor = RGB(sky.packed[1]) / 255 ``` Поля не скрывают порядок исходных параметров: значения сохраняются в -`SkySample`, а преобразование выполняется только в `fog_frame`. Vulkan path -передаёт цвет и дальности в frame uniforms; vertex shader вычисляет линейный -коэффициент по расстоянию до камеры, а fragment shader смешивает RGB материала -с fog color в ветвях combiner, которые используют туман. Конкретный draw state -может обходить это смешивание. +`SkySample`, а преобразование выполняется только в `fog_frame`. Нижняя граница +освещения ограничивает результат расчёта света снизу; она не задаёт цвет тумана. +Обычный цвет тумана выбирается из `sky.colors[0..4]` по направлению камеры, +как цвет горизонта. Это подтверждено в `CSky::Render` и живым совпадением +его значения с `D3DRENDERSTATE_FOGCOLOR` в том же игровом тике. + +Vulkan path передаёт эти параметры раздельно. Vertex shader вычисляет +коэффициент по квадратам расстояния и границ, а fragment shader смешивает +RGB материала с цветом тумана. Конкретный native draw state может обходить +смешивание или временно менять его цвет, например на чёрный для отдельного +прохода. Полный выбор таких проходов ещё не воспроизведён. Цвет primary света солнца — RGB palette 12, нормированный делением на 255 и умноженный на trailing parameter 2. `SunFrame::direction` — нормированный diff --git a/docs/reference/render-frame.md b/docs/reference/render-frame.md index 3ba6602..19ccf3e 100644 --- a/docs/reference/render-frame.md +++ b/docs/reference/render-frame.md @@ -85,9 +85,13 @@ RVA `0x1B0F0`, заменяет diffuse alpha пакета без type 16 с bat квадраты границ по этому наблюдению. GLSL вычисляет квадрат расстояния вершины, после чего растеризатор интерполирует коэффициент по треугольнику. `native_fog.effective.sink_rgb` совпадает с `sky.packed[1]`, нижней границей -освещения CShade. Это не подтверждает значение GPU fog color. Приложение пока -сохраняет цвет экранного горизонта; выбор цвета и проходов требует отдельной -проверки GPU-состояния. +освещения CShade. Обычный GPU fog color подтверждён отдельно: `CSky::Render` +по RVA `0x48341` задаёт renderer default из цвета горизонта. В живом замере +`0xFF404064` дошёл до `IDirect3DDevice7::SetRenderState(34)` в том же игровом +тике. В другом ракурсе палитра `[0xFFA8A5CE, 0xFFABA9D5, 0xFFBAA9D5, +0xFFABA9D5]` дала default `0xFFA9A7D1`. Это не покрывает временные изменения +цвета отдельных проходов: например, native render path устанавливает чёрный +цвет и затем восстанавливает сохранённый. Выбор проходов по native shade-state пока приближён общим туманом мира и считается как `render_coverage fog_pass_eligibility_approx`. |
