fix(render): use native squared distance for vertex fog
Docs Deploy / Build and Deploy MkDocs (push) Successful in 36s
Docs Deploy / Build and Deploy MkDocs (push) Successful in 36s
This commit is contained in:
7 files changed
+75
-8
No files matched your search
@@ -10,6 +10,10 @@ authoring API без динамического подтверждения.
|
||||
Не доказаны символами точные имена renderer vtable slots, полный набор CShade
|
||||
state transitions и окончательный порядок части transparent/FX/shadow subpasses.
|
||||
|
||||
Дистанционная кривая тумана по квадратам границ подтверждена в живом CShade.
|
||||
Выбор проходов по native shade-state и GPU fog color пока заменён общим туманом мира с цветом горизонта;
|
||||
это приближение считается как `render_coverage fog_pass_eligibility_approx`.
|
||||
|
||||
После ограничения цели рельефом интерактивная камера проверяет движение
|
||||
против каждого отрисовываемого корневого строения класса `FORT` и его
|
||||
отрисовываемых компонентов. Для этого пути используются текущая Node38-поза
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -845,6 +845,9 @@ projected shadows. Радиус источника масштабируется
|
||||
синий свет завода почти незаметным. Неположительный итог заменяется на 0,01.
|
||||
Случайные добавки к цвету и радиусу пока явно считаются в
|
||||
`render_coverage control_op1_jitter_unsupported`.
|
||||
Туман также зависит от расстояния нелинейно: между ближней и дальней границами
|
||||
движок интерполирует по квадрату дистанции. При границах 0 и 700 точка в 350
|
||||
получает четверть тумана, а не половину. Это сохраняет контраст среднего плана.
|
||||
Effect renderer подавляет header bit `0x800` только при
|
||||
render selector 0. Native AniMesh component path захвачен с selector 1, а в
|
||||
его 53-entry manager присутствуют FX entries с header `0xD00`; preview
|
||||
|
||||
Reference in new issue
Block a user