VTFX file format: Difference between revisions
Kat.swales (talk | contribs) No edit summary |
No edit summary |
||
Line 6: | Line 6: | ||
== VTFX file format== | == VTFX file format== | ||
=== VTFX header === | === VTFX header === | ||
Line 41: | Line 32: | ||
#define VTF_X360_MINOR_VERSION 8 | #define VTF_X360_MINOR_VERSION 8 | ||
== ResourceEntryInfo Info == | |||
VTF_LEGACY_RSRC_LOW_RES_IMAGE = MK_VTF_RSRC_ID( 0x01, 0, 0 ), // Low-res image data | |||
VTF_LEGACY_RSRC_IMAGE = MK_VTF_RSRC_ID( 0x30, 0, 0 ), // Image data | |||
VTF_RSRC_SHEET = MK_VTF_RSRC_ID( 0x10, 0, 0 ), // Sheet data | |||
RSRCF_HAS_NO_DATA_CHUNK = MK_VTF_RSRCF( 0x02 ), // Resource doesn't have a corresponding data chunk | |||
RSRCF_MASK = MK_VTF_RSRCF( 0xFF ) // Mask for all the flags | |||
#define VTF_RSRC_TEXTURE_CRC ( MK_VTF_RSRC_ID( 'C','R','C' ) ) //CRC Checksum? | |||
#define VTF_RSRC_TEXTURE_SETTINGS_EX ( MK_VTF_RSRC_ID( 'T','S','0' ) ) //TextureSettingsEx_t | |||
#define VTF_RSRC_TEXTURE_LOD_SETTINGS ( MK_VTF_RSRC_ID( 'L','O','D' ) ) //TextureLODControlSettings_t | |||
struct ResourceEntryInfo | |||
{ | |||
union | |||
{ | |||
unsigned int eType; // Use MK_VTF_??? macros to be endian compliant with the type | |||
unsigned char chTypeBytes[4]; | |||
}; | |||
unsigned int resData; // Resource data or offset from the beginning of the file | |||
}; | |||
[[Category:Glossary]] | [[Category:Glossary]] | ||
[[Category:Material_System]] | [[Category:Material_System]] | ||
[[Category:Technical]] | [[Category:Technical]] |
Revision as of 14:14, 3 February 2010
VTFx is a file format used by Valve to store textures on the Xbox 360. It has a different header from normal VTF files and stores it's data in a compressed DirectDraw Surface. Conversion or reading from a VTFX file is not possible at this time. Compression seems to be varied depending on what game is using the vtfx
VTFX file format
VTFX header
typedef struct tagVTFXHEADER { char fileTypeString[4]; // VTFX. int version[2]; // version[0].version[1]. int headerSize; unsigned int flags; unsigned short width; // actual width of data in file. unsigned short height; // actual height of data in file. unsigned short depth; // actual depth of data in file. unsigned short numFrames; unsigned short preloadDataSize; // exact size of preload data (may extend into image!). unsigned char mipSkipCount; // used to resconstruct mapping dimensions. unsigned char numResources; Vector reflectivity; // Resides on 16 byte boundary!. float bumpScale; ImageFormat imageFormat; unsigned char lowResImageSample[4]; unsigned int compressedSize; // *** followed by *** ResourceEntryInfo resources[0]; } VTFXHEADER; #define VTF_X360_MAJOR_VERSION 0x0360 #define VTF_X360_MINOR_VERSION 8
ResourceEntryInfo Info
VTF_LEGACY_RSRC_LOW_RES_IMAGE = MK_VTF_RSRC_ID( 0x01, 0, 0 ), // Low-res image data VTF_LEGACY_RSRC_IMAGE = MK_VTF_RSRC_ID( 0x30, 0, 0 ), // Image data VTF_RSRC_SHEET = MK_VTF_RSRC_ID( 0x10, 0, 0 ), // Sheet data RSRCF_HAS_NO_DATA_CHUNK = MK_VTF_RSRCF( 0x02 ), // Resource doesn't have a corresponding data chunk RSRCF_MASK = MK_VTF_RSRCF( 0xFF ) // Mask for all the flags
- define VTF_RSRC_TEXTURE_CRC ( MK_VTF_RSRC_ID( 'C','R','C' ) ) //CRC Checksum?
- define VTF_RSRC_TEXTURE_SETTINGS_EX ( MK_VTF_RSRC_ID( 'T','S','0' ) ) //TextureSettingsEx_t
- define VTF_RSRC_TEXTURE_LOD_SETTINGS ( MK_VTF_RSRC_ID( 'L','O','D' ) ) //TextureLODControlSettings_t
struct ResourceEntryInfo
{
union
{
unsigned int eType; // Use MK_VTF_??? macros to be endian compliant with the type
unsigned char chTypeBytes[4];
};
unsigned int resData; // Resource data or offset from the beginning of the file
};