aboutsummaryrefslogtreecommitdiff
path: root/docs/reference
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2026-10-31 18:13:43 +0300
committerValentin Popov <valentin@popov.link>2026-10-31 18:13:43 +0300
commit9f643149a69a149612cffd65a953527630e95647 (patch)
tree16954a813dc0b7a870f75f2e1f113041676d0837 /docs/reference
parent108a04b70e0cd5032d417cc7fd00cec2a385246b (diff)
downloadfparkan-9f643149a69a149612cffd65a953527630e95647.tar.xz
fparkan-9f643149a69a149612cffd65a953527630e95647.zip
fix(render): use native squared distance for vertex fog
Diffstat (limited to 'docs/reference')
-rw-r--r--docs/reference/render-frame.md20
1 files changed, 20 insertions, 0 deletions
diff --git a/docs/reference/render-frame.md b/docs/reference/render-frame.md
index 3244d1b..b2a6a93 100644
--- a/docs/reference/render-frame.md
+++ b/docs/reference/render-frame.md
@@ -71,6 +71,26 @@ RVA `0x1B0F0`, заменяет diffuse alpha пакета без type 16 с bat
путь и ещё не декодирован. Это ограничивает приёмку на частично отсечённых
порталах и не позволяет считать интерьер принятой эталонной сценой.
+## Дистанционная кривая тумана
+
+Программный `CShade::ShadeIndexedStrided` в GOG Terrain.dll сравнивает квадрат
+дистанции с квадратами ближней и дальней границ. По RVA `0x2EEED–0x2EF45`
+видимость равна `1 - (distance² - near²) / (far² - near²)` между границами,
+единице перед ближней и нулю за дальней. Такой же закон использует отдельный
+путь цвета пакета `0x2F230`. Линейная интерполяция по самой дистанции давала
+слишком плотный туман в середине диапазона.
+
+В работающем оригинале границы 0 и `0x442389E6`, квадрат дистанции
+`0x47707B04` дали видимость `0x3F5B2B94`. Rust-тест проверяет передаваемые GPU
+квадраты границ по этому наблюдению. GLSL вычисляет квадрат расстояния вершины,
+после чего растеризатор интерполирует коэффициент по треугольнику.
+`native_fog.effective.sink_rgb` совпадает с `sky.packed[1]`, нижней границей
+освещения CShade. Это не подтверждает значение GPU fog color. Приложение пока
+сохраняет цвет экранного горизонта; выбор цвета и проходов требует отдельной
+проверки GPU-состояния.
+Выбор проходов по native shade-state пока приближён общим туманом мира и
+считается как `render_coverage fog_pass_eligibility_approx`.
+
## Радиус Control Op1
GOG `Effect.dll` (SHA-256