Texture Native (Секция RW) — различия между версиями

Материал из GTAModding.ru
Перейти к: навигация, поиск
(Смотри также)
(Платформа и фильтр)
Строка 17: Строка 17:
 
::* [[Sky_Mipmap_Val_(Секция_RW)|Sky Mipmap Val]] - 4 байта (пока неизвестно)
 
::* [[Sky_Mipmap_Val_(Секция_RW)|Sky Mipmap Val]] - 4 байта (пока неизвестно)
  
 +
<div style="color:#880000;border: 1px dashed #AA0000;padding-left: 10px;background-color:#FFEEEE">
 +
<b>Информация</b> ниже находится на этапе эксперементирования и проверки, а, следовательно, <b>может оказаться неточной</b>.
 +
</div>
 
=== Платформа и фильтр ===
 
=== Платформа и фильтр ===
 +
Информация о платформе и фильтрах хранится в стандартной 8-байтовой структуре:
 
  BYTE[4] - 4 байта - Строка "PS2" с завершающим нулём
 
  BYTE[4] - 4 байта - Строка "PS2" с завершающим нулём
  BYTE    - 1 байт  - Координата U (маска rwTEXTUREADDRESSINGUMASK = 0x0F00)
+
  DWORD  - 4 байта - Флажки фильтра и UV Wrapping
BYTE    - 1 байт  - Координата V (маска rwTEXTUREADDRESSINGVMASK = 0xF000)
+
Флажки фильтра (<code>RwTextureFilterMode</code>) предствалены ниже.<br />
WORD    - 2 байта - Флажки фильтра (маска rwTEXTUREFILTERMODEMASK = 0x00FF)
+
Флажки фильтра (RwTextureFilterMode) предствалены ниже.<br />
+
 
Использовать можно только один из фильтров.
 
Использовать можно только один из фильтров.
 
  0x01  rwFILTERNEAREST            - Point sampled
 
  0x01  rwFILTERNEAREST            - Point sampled
Строка 30: Строка 32:
 
  0x05  rwFILTERLINEARMIPNEAREST  - MipMap interp point sampled
 
  0x05  rwFILTERLINEARMIPNEAREST  - MipMap interp point sampled
 
  0x06  rwFILTERLINEARMIPLINEAR    - Trilinear
 
  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
  
 
=== Основная структура информации ===
 
=== Основная структура информации ===

Версия 19:16, 19 августа 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
  • Struct - 4 байта ширина, 4 байта - высота, 4 байта - глубина цвета (bpp), далее - неизвестно
  • Struct - 80 байт - информация о изображении, растр, (80 байт - информация о палитре), палитра

Информация ниже находится на этапе эксперементирования и проверки, а, следовательно, может оказаться неточной.

Платформа и фильтр

Информация о платформе и фильтрах хранится в стандартной 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
...

Флаги изображения

Это обычные флаги 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-байтовых блоках).

Смотри также

  1. TXD - информация о TXD-архивах (Texture Dictionary)
  2. Texture Native Struct на gtamodding.com (англ.)