diff options
| author | Valentin Popov <valentin@popov.link> | 2026-10-31 19:46:33 +0300 |
|---|---|---|
| committer | Valentin Popov <valentin@popov.link> | 2026-10-31 19:46:33 +0300 |
| commit | 3f4059b72665061da72175faa2ea82db7ddf2c13 (patch) | |
| tree | b91417305893eb5c0c8f1db02eec337684c7e383 /docs/reference/atmosphere.md | |
| parent | 9df0d8594f606c518fdf53cde4da55a44001031e (diff) | |
| download | fparkan-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.md | 20 |
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` — нормированный |
