fix(render): fade MSH portals with camera distance
Docs Deploy / Build and Deploy MkDocs (push) Successful in 36s

This commit is contained in:
Valentin Popov committed 2026-10-31 18:01:35 +04:00
1 parent 09fcd35023
commit c31e5b7342
7 files changed
+382 -44

No files matched your search

+6 -19
View File
@@ -45,26 +45,13 @@ MSH-запрос со свободной preview-камерой; это не п
стратегической и следящей камерами не подтверждено
([MSH](../reference/msh.md)).
Для MSH без потока цветов type 16 подтверждён только один постоянный alpha
override для диапазонов с CPU-цветом и raw-флагом `Batch20` `0x0008`: GOG
`Terrain.dll`, SHA-256
`af87d1b2e728a0be73c52be3b44cc196ab46da7799f25a15d40f8c9b0b425ead`, RVA
`0x1B0F0`, задаёт alpha `0`, если установлен bit `0x0040` и сброшен `0x0010`.
Это покрывает `0x0148`; `0x0108`, `0x0118` и `0x0058` сохраняют alpha MAT0,
причём в `0x0058` bit `0x0010` имеет приоритет. Поток type 16 или отсутствие
`0x0008` исключают override. Проверка заводской сцены с фиксированной нативной
камерой подтвердила на одном кадре входа восстановление X-образного рисунка
двери, который виден и в оригинале; прежний Vulkan-readback показывал на этом
месте сплошной чёрный прямоугольник. Сравнение выполнено при времени сцены
2000 мс и трёх кадрах, запуск с Vulkan validation завершился без предупреждений
и ошибок. Это подтверждает только структуру проёма в этой сцене: правильность
освещения и полный попиксельный паритет не установлены.
Кривые alpha и метрика расстояния порталов реализованы для MSH без type 16
([описание кадра](../reference/render-frame.md#прозрачность-порталов-msh)). Native CPU clipping может выбрать другую первую вершину;
это приближение явно считается как `portal_fade_packet_selection_approx`.
Общее fade-поведение по расстоянию в preview не реализовано. Открыты точная
метрика расстояния, выбор первого CPU-принятого треугольника диапазона и
эквивалентность frustum/culling-отбора оригинала; эти вопросы нельзя вывести из
захвата заводской двери. Данные потока type 16 ещё не декодированы, поэтому
правило выше относится только к MSH-диапазонам без этого потока цветов.
Данные type 16 ещё не декодированы. Внутренний ракурс «Конструктора» после
настоящего входа игрока подтверждает исчезновение чёрной поверхности в проходе;
для всей приёмки R2 ещё нужны пары обеих миссий на трёх дистанциях.
Закрывающий эксперимент: запустить оригинал в совместимой Windows/DirectX
среде, перехватить DirectDraw/Direct3D calls и surface flips, сохранить state