fix(render): hide native zero-alpha MSH batches
Docs Deploy / Build and Deploy MkDocs (push) Successful in 1m43s
Docs Deploy / Build and Deploy MkDocs (push) Successful in 1m43s
This commit is contained in:
9 files changed
+234
-12
No files matched your search
@@ -18,6 +18,7 @@ type 9 service stream
|
||||
type 10 strings and node names
|
||||
type 13 Batch20 records
|
||||
type 15 auxiliary stream
|
||||
type 16 optional vertex-colour data
|
||||
type 17 auxiliary data
|
||||
type 18 packed UV1 (optional secondary coordinates)
|
||||
type 19 animation frame map
|
||||
@@ -25,6 +26,9 @@ type 20 rare auxiliary table
|
||||
```
|
||||
|
||||
Reader ищет entries по type, но сохраняет исходный порядок для roundtrip.
|
||||
Поле `ModelAsset.type16_present` отмечает только наличие entry типа 16. Данные
|
||||
payload сохраняются, но этот путь рендера пока не преобразует их в цвета
|
||||
вершин.
|
||||
|
||||
## Node and slot selection
|
||||
|
||||
|
||||
@@ -68,6 +68,23 @@ Pending frame хранит пакет MAT0 для мира и, при налич
|
||||
`batch` `0x108`. Такой диапазон при включённой проверке глубины не записывает
|
||||
глубину. За фиксированными диапазонами окружения сохраняются их явные состояния.
|
||||
|
||||
Для 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 и не меняет общий
|
||||
материал; alpha `0` временно задаёт число индексов `0`, а при очистке
|
||||
переопределения исходное число индексов восстанавливается.
|
||||
|
||||
Общий fade по расстоянию пока не реализован. Открыты точная метрика расстояния,
|
||||
выбор первого CPU-принятого треугольника диапазона и эквивалентность frustum- и
|
||||
culling-отбору оригинала. Поэтому состояния `0x0108` и `0x0118` оставляют alpha
|
||||
MAT0, пока эти входные данные не установлены.
|
||||
|
||||
В превью с фиксированной камерой диапазоны туманности и звёзд, купола и облаков
|
||||
явно помечаются как прозрачный фон. Непрозрачные диапазоны мира остаются на
|
||||
своих местах; прозрачная очередь мира сортируется от дальних элементов к
|
||||
|
||||
Reference in new issue
Block a user