docs(render): distinguish fog color from the lighting floor
Docs Deploy / Build and Deploy MkDocs (push) Successful in 40s

This commit is contained in:
Valentin Popov committed 2026-10-31 20:46:33 +04:00
1 parent 9df0d8594f
commit 3f4059b726
3 files changed
+22 -11

No files matched your search

+2 -1
View File
@@ -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`.
После ограничения цели рельефом интерактивная камера проверяет движение
+13 -7
View File
@@ -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` — нормированный
+7 -3
View File
@@ -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`.