fix(render): apply celestial birth matrix to column vectors
Docs Deploy / Build and Deploy MkDocs (push) Successful in 40s

This commit is contained in:
Valentin Popov committed 2026-10-31 20:31:22 +04:00
1 parent f08476e655
commit 9df0d8594f
4 files changed
+51 -22

No files matched your search

+8 -12
View File
@@ -134,21 +134,17 @@ RVA `0xF6E0`, преобразует направление текущей ма
глубину. За фиксированными диапазонами окружения сохраняются их явные состояния.
Для MSH без потока цветов type 16 диапазон, цвет которого вычисляет CPU, при
raw-флаге `Batch20` `0x0008` получает переопределение alpha только в одном
подтверждённом случае. В GOG `Terrain.dll` с SHA-256
`af87d1b2e728a0be73c52be3b44cc196ab46da7799f25a15d40f8c9b0b425ead` проверка
по RVA `0x1B0F0` задаёт alpha `0`, когда установлен bit `0x0040` и сброшен
`0x0010`; поэтому для `0x0148` alpha равна нулю. Для `0x0108` и `0x0118`
превью сохраняет alpha MAT0; для `0x0058` действует приоритет bit `0x0010`,
также оставляя alpha MAT0. При наличии type 16 или отсутствии `0x0008`
переопределения нет. Оно относится к одному draw range и не меняет общий
raw-флаге `Batch20` `0x0008` получает переопределение alpha по
[дистанционной кривой портала](#прозрачность-порталов-msh). Bit `0x0010`
имеет приоритет; иначе bit `0x0040` задаёт нулевую alpha, а оставшаяся
ветвь использует границы 75/95 с поправкой на FOV. При наличии type 16 или
отсутствии `0x0008` переопределения нет. Оно относится к одному draw range и не меняет общий
материал; alpha `0` временно задаёт число индексов `0`, а при очистке
переопределения исходное число индексов восстанавливается.
Общий fade по расстоянию пока не реализован. Открыты точная метрика расстояния,
выбор первого CPU-принятого треугольника диапазона и эквивалентность frustum- и
culling-отбору оригинала. Поэтому состояния `0x0108` и `0x0118` оставляют alpha
MAT0, пока эти входные данные не установлены.
Fade обновляется с камерой каждый кадр. Открыт выбор первой принятой вершины
после native CPU clipping: приложение пока берёт первую индексированную
вершину диапазона и считает это приближение в `render_coverage`.
В превью с фиксированной камерой диапазоны туманности и звёзд, купола и облаков
явно помечаются как прозрачный фон. Непрозрачные диапазоны мира остаются на