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. state transitions и окончательный порядок части transparent/FX/shadow subpasses.
Дистанционная кривая тумана по квадратам границ подтверждена в живом CShade. Дистанционная кривая тумана по квадратам границ подтверждена в живом CShade.
Выбор проходов по native shade-state и GPU fog color пока заменён общим туманом мира с цветом горизонта; Обычный GPU fog color из горизонта подтверждён исполнением; выбор проходов по
native shade-state и их временные изменения цвета пока заменены общим туманом мира;
это приближение считается как `render_coverage fog_pass_eligibility_approx`. это приближение считается как `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` повторяет этот контракт: `FogFrame` повторяет этот контракт:
```text ```text
fog.start = sky.values[0] * 700 fog.start = sky.values[0] * 700
fog.end = sky.values[1] * 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 `SkySample`, а преобразование выполняется только в `fog_frame`. Нижняя граница
передаёт цвет и дальности в frame uniforms; vertex shader вычисляет линейный освещения ограничивает результат расчёта света снизу; она не задаёт цвет тумана.
коэффициент по расстоянию до камеры, а fragment shader смешивает RGB материала Обычный цвет тумана выбирается из `sky.colors[0..4]` по направлению камеры,
с fog color в ветвях combiner, которые используют туман. Конкретный draw state как цвет горизонта. Это подтверждено в `CSky::Render` и живым совпадением
может обходить это смешивание. его значения с `D3DRENDERSTATE_FOGCOLOR` в том же игровом тике.
Vulkan path передаёт эти параметры раздельно. Vertex shader вычисляет
коэффициент по квадратам расстояния и границ, а fragment shader смешивает
RGB материала с цветом тумана. Конкретный native draw state может обходить
смешивание или временно менять его цвет, например на чёрный для отдельного
прохода. Полный выбор таких проходов ещё не воспроизведён.
Цвет primary света солнца — RGB palette 12, нормированный делением на 255 и Цвет primary света солнца — RGB palette 12, нормированный делением на 255 и
умноженный на trailing parameter 2. `SunFrame::direction` — нормированный умноженный на trailing parameter 2. `SunFrame::direction` — нормированный
+7 -3
View File
@@ -85,9 +85,13 @@ RVA `0x1B0F0`, заменяет diffuse alpha пакета без type 16 с bat
квадраты границ по этому наблюдению. GLSL вычисляет квадрат расстояния вершины, квадраты границ по этому наблюдению. GLSL вычисляет квадрат расстояния вершины,
после чего растеризатор интерполирует коэффициент по треугольнику. после чего растеризатор интерполирует коэффициент по треугольнику.
`native_fog.effective.sink_rgb` совпадает с `sky.packed[1]`, нижней границей `native_fog.effective.sink_rgb` совпадает с `sky.packed[1]`, нижней границей
освещения CShade. Это не подтверждает значение GPU fog color. Приложение пока освещения CShade. Обычный GPU fog color подтверждён отдельно: `CSky::Render`
сохраняет цвет экранного горизонта; выбор цвета и проходов требует отдельной по RVA `0x48341` задаёт renderer default из цвета горизонта. В живом замере
проверки GPU-состояния. `0xFF404064` дошёл до `IDirect3DDevice7::SetRenderState(34)` в том же игровом
тике. В другом ракурсе палитра `[0xFFA8A5CE, 0xFFABA9D5, 0xFFBAA9D5,
0xFFABA9D5]` дала default `0xFFA9A7D1`. Это не покрывает временные изменения
цвета отдельных проходов: например, native render path устанавливает чёрный
цвет и затем восстанавливает сохранённый.
Выбор проходов по native shade-state пока приближён общим туманом мира и Выбор проходов по native shade-state пока приближён общим туманом мира и
считается как `render_coverage fog_pass_eligibility_approx`. считается как `render_coverage fog_pass_eligibility_approx`.