diff options
Diffstat (limited to 'docs/specs')
| -rw-r--r-- | docs/specs/render.md | 8 | ||||
| -rw-r--r-- | docs/specs/texture.md | 14 |
2 files changed, 22 insertions, 0 deletions
diff --git a/docs/specs/render.md b/docs/specs/render.md index 2994049..ea63197 100644 --- a/docs/specs/render.md +++ b/docs/specs/render.md @@ -87,6 +87,14 @@ Material pipeline на кадре: 4. Резолвятся ссылки на texture/lightmap. 5. Невалидные ссылки обрабатываются fallback-стратегией. +Практическая цепочка привязки для большинства `*.msh` ассетов из `*.rlb`: + +1. Для модели выбирается одноимённый `WEAR` (`<model_stem>.wea`). +2. Из `WEAR` берётся material-слот (по имени, `legacyId` не участвует в выборе). +3. В `Material.lib` ищется `MAT0` по имени (`DEFAULT`, затем индекс `0` как fallback). +4. Из выбранной material-фазы берётся `textureName`. +5. `Texm` ищется в `Textures.lib` (и/или lightmap-архиве для lightmap-ветки). + ## 6. Texture path При резолве текстуры: diff --git a/docs/specs/texture.md b/docs/specs/texture.md index 5fa1e9d..c25ec56 100644 --- a/docs/specs/texture.md +++ b/docs/specs/texture.md @@ -59,6 +59,20 @@ pixelCount = sum(max(1, width>>i) * max(1, height>>i), i=0..mipCount-1); sizeCore = 32 + (format==0 ? 1024 : 0) + bytesPerPixel * pixelCount; ``` +## 4.1. Декодирование в RGBA8 (runtime/инструменты) + +Для CPU-пути (preview, валидация, оффлайн-конвертация) используется декодирование: + +- `0` (`Indexed8`): `index -> palette[index]` (`RGBA` из палитры 256×4). +- `565`: `R5 G6 B5`, `A=255`. +- `556`: `R5 G5 B6`, `A=255`. +- `4444`: `A4 R4 G4 B4` (с расширением 4-битных каналов в 8-битные). +- `88`: `L8 A8` (`R=G=B=L`). +- `888`: `R8 G8 B8` + padding/служебный байт, `A=255`. +- `8888`: `A8 R8 G8 B8`. + +Это декодирование соответствует текущему test/demo pipeline проекта. + ## 5. `Page` chunk ```c |
