Texture Native (Секция RW) — различия между версиями
Материал из GTAModding.ru
Lego (обсуждение | вклад) (→Платформа и фильтр) |
Lego (обсуждение | вклад) (→Основная структура информации) |
||
Строка 44: | Строка 44: | ||
=== Основная структура информации === | === Основная структура информации === | ||
Здесь содержится вся или практически вся информация об изображении. | Здесь содержится вся или практически вся информация об изображении. | ||
− | DWORD - 4 байта - Ширина изображения в пикселях | + | DWORD - 4 байта - Ширина изображения в пикселях |
− | DWORD - 4 байта - Высота изображения в пикселях | + | DWORD - 4 байта - Высота изображения в пикселях |
− | DWORD - 4 байта - Глубина цвета (bpp) | + | DWORD - 4 байта - Глубина цвета (bpp) |
− | BYTE | + | BYTE - 1 байт - Неизвестно, везде равно 0x04 (скорее всего это RwRasterType и 0x04 означает Texture) |
− | WORD | + | WORD - 2 байта - Флаги изображения |
− | BYTE | + | BYTE - 1 байт - Неизвестно, всегда равно 0x00 (TODO) |
+ | BYTE[7] - 7 байт - неизвестно | ||
+ | BYTE - 1 байт - Тип палитры или что-то в этом роде (всегда равно 0x32, если палитры нет - всегда ноль и последующие 8 байт тоже нули) | ||
+ | WORD[4] - 8 байт - Флаги палитры (?) (TODO) | ||
... | ... | ||
+ | DWORD - 4 байта - дубль секции SkyMipMapVal, на деле - оба значения всегда равны 0x0FC0 (TODO) | ||
====Флаги изображения==== | ====Флаги изображения==== | ||
Это обычные флаги RenderWare Graphics, соеденённые в одном слове: | Это обычные флаги RenderWare Graphics, соеденённые в одном слове: |
Версия 09:36, 20 августа 2011
Секция RenderWare |
Texture Native |
0x0015 |
Texture Native - секция-контейнер, используемая в TXD-файлах внутри секции Texture Dictionary. Как правило, сопровождается секцией Struct.
Содержание |
PC / XBOX
PlayStation 2
- Texture Native
- Struct - 4 байта - Платформа (PS2), 4байта - Флаги Фильтра
- String - Название текстуры (размер кратен 4 байтам)
- String - Название альфа-канала (размер кратен 4 байтам)
- Struct
- Sky Mipmap Val - 4 байта (пока неизвестно)
Информация ниже находится на этапе эксперементирования и проверки, а, следовательно, может оказаться неточной.
Платформа и фильтр
Информация о платформе и фильтрах хранится в стандартной 8-байтовой структуре:
BYTE[4] - 4 байта - Строка "PS2" с завершающим нулём DWORD - 4 байта - Флажки фильтра и UV Wrapping
Флажки фильтра (RwTextureFilterMode
) предствалены ниже.
Использовать можно только один из фильтров.
0x01 rwFILTERNEAREST - Point sampled 0x02 rwFILTERLINEAR - Bilinear 0x03 rwFILTERMIPNEAREST - Point sampled per pixel mip map 0x04 rwFILTERMIPLINEAR - Bilinear per pixel mipmap 0x05 rwFILTERLINEARMIPNEAREST - MipMap interp point sampled 0x06 rwFILTERLINEARMIPLINEAR - Trilinear
По всей видимости, флажки UV на этапе разработки могут занимать по байту каждый, но в конечной версии используется лишь 1 байт под обе координаты. Можно добавить, что лишь пара-тройка текстур имеет этот байт отличный от 0x11.
Ниже предсталены флажки UV. По идее, wrapping может быть не использован вообще - т.е. 0x00.
0x00 rwTEXTUREADDRESSNATEXTUREADDRESS - ??? (вроде как N/A) 0x01 rwTEXTUREADDRESSWRAP - UV wraps (tiles) 0x02 rwTEXTUREADDRESSMIRROR - Alternate UV is flipped 0x03 rwTEXTUREADDRESSCLAMP - UV is clamped to 0-1 0x04 rwTEXTUREADDRESSBORDER - Border color takes effect outside of 0-1
Основная структура информации
Здесь содержится вся или практически вся информация об изображении.
DWORD - 4 байта - Ширина изображения в пикселях DWORD - 4 байта - Высота изображения в пикселях DWORD - 4 байта - Глубина цвета (bpp) BYTE - 1 байт - Неизвестно, везде равно 0x04 (скорее всего это RwRasterType и 0x04 означает Texture) WORD - 2 байта - Флаги изображения BYTE - 1 байт - Неизвестно, всегда равно 0x00 (TODO) BYTE[7] - 7 байт - неизвестно BYTE - 1 байт - Тип палитры или что-то в этом роде (всегда равно 0x32, если палитры нет - всегда ноль и последующие 8 байт тоже нули) WORD[4] - 8 байт - Флаги палитры (?) (TODO) ... DWORD - 4 байта - дубль секции SkyMipMapVal, на деле - оба значения всегда равны 0x0FC0 (TODO)
Флаги изображения
Это обычные флаги RenderWare Graphics, соеденённые в одном слове:
- RwRasterFormat (Как правило, встречаются лишь RGBA, 8bit pal и 4bit pal, но приведу остальные, которые могут встретится):
- Одновременно может использоваться только один флаг из каждой "группы" (группы флажков тут условно разделены пустой строкой).
0x0100 rwRASTERFORMAT1555 - 16 бит - 1 бит альфа, по 5 бит на красный, зелёный и синий (5-5-5, только первый бит - альфа) 0x0200 rwRASTERFORMAT565 - 16 бит - 5 бит - красный, 6 бит - зелёный, 5 бит - синий (5-6-5) 0x0300 rwRASTERFORMAT4444 - 16 бит - по 4 бита на красный, зелёный и синий 0x0400 rwRASTERFORMATLUM8 - 8 бит - белый (красный = зелёный = синий) 0x0500 rwRASTERFORMAT8888 - 32 бита - 8 bits per component 0x0600 rwRASTERFORMAT888 - 24 бита - 8 bits per component ... 0x0A00 rwRASTERFORMAT555 - 16 бит - по 5 бит на красный, зелёный и синий (обычный 5-5-5) 0x1000 rwRASTERFORMATAUTOMIPMAP - RenderWare генерирует мипмапы автоматически 0x2000 rwRASTERFORMATPAL8 - 8 бит с палитрой (в этих двух случаях тип палитры указан с помощью флагов выше) 0x4000 rwRASTERFORMATPAL4 - 4 бит с палитрой 0x8000 rwRASTERFORMATMIPMAP - Флаг наличия мипмапов.
- RwRasterPrivateFlag:
- Здесь я в данный момент не уверен, но если значение равно единице - нужно как-то корректировать палитру (или наоборот - не корректировать). Пока что привожу с оригинальными комментами разработчиков.
0x01 rwRASTERGAMMACORRECTED 0x02 rwRASTERPIXELLOCKEDREAD - pixels are locked for reading 0x04 rwRASTERPIXELLOCKEDWRITE - pixels are locked for writing 0x08 rwRASTERPALETTELOCKEDREAD - palette is locked for reading 0x10 rwRASTERPALETTELOCKEDWRITE - palette is locked for writing 0x20 rwRASTERPIXELLOCKEDRAW - the pixels are in platform specific
Блоки информация об изображении / палитре
Информация хранится в 80-байтовом блоке в любом из этих случаев. Здесь всегда содержится информация об размере последующей структуры (по всей видимости, размер выражен в 16-байтовых блоках).
Смотри также
- TXD - информация о TXD-архивах (Texture Dictionary)
- Texture Native Struct на gtamodding.com (англ.)