Загальна інформація
Файли level версії 4 використовуються в білді 749 на рівні l1_day (єдиний рівень у білді). Наразі конвертер Бардака цей рівень декомпілювати не може. Файл складається з наступних чанків:
Чанки файлу
Ідентифікатор чанка | Дані |
---|---|
0x1 | Заголовок |
0x2 | текстури |
0x3 | шейдери |
0x4 | візуали |
0x5 | вершинний буфер |
0x6 | геометрія для розрахунку зіткнень |
0x7 | портали |
0x8 | джерела світла |
0xa | корони джерел світла |
0xb | сектора |
Типи даних
Введемо позначення типів даних
Позначення | Тип | Діапазон | Розмір (в байтах) |
---|---|---|---|
B | Ціле число | 0 - 255 | 1 |
H | Ціле число | 0 - 65535 | 2 |
I | Ціле число | 0 - 4294967295 | 4 |
f | Дробове число | - | 4 |
Структура чанка
Дані | Тип |
---|---|
Ідентифікатор чанка | H |
Стиснення | H |
Розмір даних чанка | I |
Дані чанка | - |
Якщо стиск встановлено в 0x0000, то чанк не стиснутий, а якщо встановлено в 0x8000, то чанк стиснутий за методом Хафмана. Для декомпресії стиснутих чанків можна використовувати програму з xray_re_tools (trunk\garbage\lzhuf\lzhuf.c)
Заголовок
I версія формату (у даному випадку дорівнює 4)
Далі йде рядок довжиною 124 байти, який є описом рівня
Текстури
I кількість текстур
Далі йдуть текстури, які представлені у вигляді рядків, наприклад: LMAP:L#1,STD:Bricks1\x00
Кожна текстура закінчується нульовим байтом.
Шейдери
I кількість шейдерів
Далі йдуть шейдери, які представлені у вигляді рядків.
Візуали
I ідентифікатор візуалу
I розмір візуалу (у байтах)
Дані візуалу
Дані візуалу
Дані візуалу представлені чанками
Ідентифікатор чанка | Дані |
---|---|
0x1 | Тип візуалу |
0x3 | Шейдер та текстура |
0x6 | Обмежуючий паралелепіпед |
0x8 | Індекси трикутників |
0xb | Інформація про вершини |
0xс | Центр та радіус |
0xd | Невідомий чанк |
Тип візуалу
I тип (може бути 0x102 або 0x1e0002 або 0x3e0002)
Шейдер та текстура
I ідентифікатор шейдера
I ідентифікатор текстури
Обмежуючий паралелепіпед
3f мінімальний кордон
3f максимальний кордон
Цей чанк містить дві вершини, які мають три координати (X, Y, Z) типу f, і є вершинами діагоналі обмежуючого паралелепіпеда.
Індекси трикутників
I кількість індексів
H індекс * кількість індексів
Інформація про вершини
I індекс вершинного буфера з якого беруться вершини
I індекс базової вершини (це та вершина з буфера, з якої починається відлік індексів трикутників даного візуалу)
I кількість трикутників візуалу
Центр та радіус
3f центр візуалу
f радіус описуючої сфери візуалу
Невідомий чанк
I кількість візуалів
I ідентифікатори візуалів * кількість візуалів
Вершинні буфери
I кількість вершинних буферів
Далі йдуть вершинні буфери
Структура вершинного буфера
І тип буфера
I кількість вершин
Вершини
Структура вершин
Якщо тип дорівнює 0x212:
3f позиція у просторі (три координати X, Y, Z)
3f нормаль вершини
2f юві координати для карт освітлення
2f юві координати для дифузної карти
Якщо тип дорівнює 0x152:
3f позиція у просторі (три координати X, Y, Z)
3f нормаль вершини
4B колір вертексного освітлення (R, G, B, A)
2f юві координати для дифузної карти
Геометрія для розрахунку зіткнень
I версія формату (в даному випадку 2)
I кількість вершин
I кількість трикутників
6f діагональ обмежуючого паралелепіпеда
3f вершина (координати X, Y, Z) * кількість вершин
трикутники
Структура трикутників
3I 3 індексу вершин, за якими будується даних трикутник
14B невідомі 14 байт
H ідентифікатор сектора, де знаходиться трикутник
I ідентифікатор матеріалу
Портали
Цей чанк містить інформацію про портали, які являють собою полігон з 6 вершин. Один портал зберігається у 80 байтах. Кількість порталів дорівнює розмір чанка/80.
Нижче описано один портал:
H передній сектор
H задній сектор
3f координати X, Y, Z для першої вершини
3f координати X, Y, Z для другої вершини
3f координати X, Y, Z для третьої вершини
3f координати X, Y, Z для четвертої вершини
3f координати X, Y, Z для п'ятої вершини
3f координати X, Y, Z для шостої вершини
Джерела світла
Кількість джерел світла дорівнює розміру чанка / 124.
Нижче описано одне джерело світла:
I тип джерела світла (0x1 – point, 0x2 – spot, 0x3 – directional)
4f дифузний колір
4f відблиск
4f ембієнт колір
3f позиція
3f напрям
f радіус (range)
f falloff
f attenuation0
f attenuation1
f attenuation2
f theta
f phi
20B невідомі 20 байт
Корони джерел світла
Або glows. Кількість glow дорівнює розмір чанка/24.
Нижче описано 1 glow:
3f позиція
f радіус
I індекс текстури
I індекс шейдера
далі буде...