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

+25
View File
@@ -499,6 +499,31 @@ Material manager кэширует разобранный MAT0 и texture handles
лучше вычислять на экземпляр материала, если random offset или локальное время
различаются между объектами; immutable phase data остаются общими.
### Почему проём становится прозрачным вблизи
Портал здания — поверхность, которая закрывает интерьер издалека и постепенно
исчезает при приближении камеры. Если оставить ей постоянную непрозрачность,
вместо окна или перехода получится тёмный прямоугольник. Прозрачность материала
здесь заменяется значением, вычисленным для всего пакета треугольников; alpha
текстуры продолжает участвовать в смешивании.
Для MSH без потока цветов type 16 правило включает флаг batch `0x0008`.
В обычной ветви при горизонтальном FOV `1.3` поверхность прозрачна до расстояния
75 и непрозрачна после 95; между ними alpha растёт линейно. При другом FOV обе
границы умножаются на `1.3 / FOV`. Расстояние берётся до первой вершины первого
принятого треугольника, а не до центра здания.
Флаг `0x0010` выбирает другую кривую: сравнивается квадратный корень уже
вычисленного расстояния, границы равны `2.6 / FOV` и `7.7999997 / FOV`.
Например, при FOV `1.04` поверхность на расстоянии 25 имеет alpha примерно
`0.5`, а на расстоянии 5 полностью исчезает. Флаг `0x0040` без `0x0010`
сразу задаёт нулевую alpha; при наличии обоих побеждает `0x0010`.
FParkan пересчитывает эту alpha при каждом обновлении камеры, после анимации
модели. Нулевое значение временно выключает диапазон индексов; при удалении
камеры диапазон восстанавливается. Подробности оригинального вычисления и
пока приближённого выбора вершины приведены в [описании кадра](../reference/render-frame.md#прозрачность-порталов-msh).
## Texm: текстуры, mip-уровни и атласы
`Texm` -- основной формат изображений. Он хранится в `Textures.lib`,