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

+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` — нормированный