docs(render): distinguish fog color from the lighting floor
Docs Deploy / Build and Deploy MkDocs (push) Successful in 40s
Docs Deploy / Build and Deploy MkDocs (push) Successful in 40s
This commit is contained in:
3 files changed
+22
-11
No files matched your search
@@ -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`.
|
||||
|
||||
После ограничения цели рельефом интерактивная камера проверяет движение
|
||||
|
||||
@@ -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` — нормированный
|
||||
|
||||
@@ -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`.
|
||||
|
||||
|
||||
Reference in new issue
Block a user