aboutsummaryrefslogtreecommitdiff
path: root/docs/reference/atmosphere.md
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2026-10-31 19:46:33 +0300
committerValentin Popov <valentin@popov.link>2026-10-31 19:46:33 +0300
commit3f4059b72665061da72175faa2ea82db7ddf2c13 (patch)
treeb91417305893eb5c0c8f1db02eec337684c7e383 /docs/reference/atmosphere.md
parent9df0d8594f606c518fdf53cde4da55a44001031e (diff)
downloadfparkan-3f4059b72665061da72175faa2ea82db7ddf2c13.tar.xz
fparkan-3f4059b72665061da72175faa2ea82db7ddf2c13.zip
docs(render): distinguish fog color from the lighting floor
Diffstat (limited to 'docs/reference/atmosphere.md')
-rw-r--r--docs/reference/atmosphere.md20
1 files changed, 13 insertions, 7 deletions
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` — нормированный