- Updated MSH documentation to reflect changes in material, wear, and texture specifications. - Introduced new `render.md` file detailing the render pipeline process. - Removed outdated sections from `runtime-pipeline.md` and redirected to `render.md`. - Added detailed specifications for `Texm` texture format and `WEAR` wear table. - Updated navigation in `mkdocs.yml` to align with new documentation structure.
3.1 KiB
3.1 KiB
Wear table (WEAR)
WEAR — текстовый ресурс, который связывает слоты wear с именами материалов и lightmap.
Связанные страницы:
1. Контейнер
- Тип ресурса:
0x52414557(WEAR). - Обычно хранится как
*.weaвнутри world/mission архивов.
2. Формат текста
<wearCount:int>
<legacyId:int> <materialName>
... (wearCount строк)
[пустая строка]
[LIGHTMAPS
<lightmapCount:int>
<legacyId:int> <lightmapName>
... (lightmapCount строк)]
legacyId читается, но логика выбора работает по имени.
3. Совместимость парсинга
В движке используются два режима чтения (из файла и из буфера), у которых различается обработка блока LIGHTMAPS.
Практическое правило для полного совпадения:
- если присутствует блок
LIGHTMAPS, перед строкойLIGHTMAPSдолжна быть пустая строка-разделитель.
4. Runtime-ограничения
- Число wear-таблиц в менеджере ограничено: максимум
70. - Для
wearCount <= 0ресурс считается некорректным. - Для
LIGHTMAPSблокаlightmapCount <= 0— также ошибка формата.
5. Поведение резолва
5.1. Материал
Для каждого wear-слота:
- Ищется материал по имени.
- Если не найден — используется fallback (
DEFAULT, затем индекс 0).
5.2. Lightmap
Для каждого lightmap-слота:
- Ищется текстура lightmap по имени.
- Если не найдено — слот получает
-1.
6. Handle-кодирование
Движок кодирует ссылку на material-slot как:
handle = (tableIndex << 16) | wearIndex
tableIndex— номер wear-таблицы.wearIndex— индекс строки внутри таблицы.
7. Правила writer/editor
- Сохранять порядок строк.
- Не переставлять и не нормализовать
legacyId. - Для совместимости buffer-парсинга сохранять пустую строку перед
LIGHTMAPS. - Проверять, что число строк соответствует
wearCount/lightmapCount.
8. Статус валидации
- Поведение
WEARсогласовано с текущей спецификацией материалов/текстур и runtime-пайплайном. - Массовый прогон по полному игровому набору в этом окружении не выполнялся из-за отсутствия корпуса данных в
testdata.