VTFX file format: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
No edit summary
No edit summary
Line 6: Line 6:


== VTFX file format==
== VTFX file format==
=== VTFX layout ===
(estimated based on VTF)
VTFX Header
VTFX Low Resolution Image Data
For Each Mipmap (Smallest to Largest)
  For Each Frame (First to Last)
    For Each Face (First to Last)
      For Each Z Slice (Min to Max; Varies with Mipmap)
        VTFX High Resolution Image Data


=== 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

Stub

This article or section is a stub. You can help by expanding it.

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

  1. define VTF_RSRC_TEXTURE_CRC ( MK_VTF_RSRC_ID( 'C','R','C' ) ) //CRC Checksum?
  2. define VTF_RSRC_TEXTURE_SETTINGS_EX ( MK_VTF_RSRC_ID( 'T','S','0' ) ) //TextureSettingsEx_t
  3. 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 };