Difference between revisions of "Sims 3:0x033A1435"

From SimsWiki
Jump to: navigation, search
m (Format)
(Properties)
 
(32 intermediate revisions by 3 users not shown)
Line 1: Line 1:
[[Sims 3:Main Page]] -> [[Sims 3:PackedFileTypes]]
+
{{TS3AdvancedModdingHeader}}
<hr/>
+
{{TS3Resource
 +
|name=Texture Compositor - TXTC
 +
|typeid= 0x033A1435
 +
|expansion=The Sims 3
 +
}}
 +
<br clear="all">
 +
 
 
==Overview==
 
==Overview==
This format is internally known as the "TextureCompositor".
+
This format is internally known as the "TextureCompositor".  It describes the process of combining various texture files into what is actually rendered in the game.  Texture Steps are to be read sequentially, as the previous ones affect the ones that follow.  Sources are generally external textures referenced by an image key, destination represents the render texture specified by the steps, thus a virtual texture.
 
==Format==
 
==Format==
 
  DWORD // Version
 
  DWORD // Version
  DWORD // Offset of the TGI Block (+8)
+
  DWORD // Offset of the I<sub>64</sub>GT Count from the end of this DWORD
 
   
 
   
 
  --if ''Version'' >= 7
 
  --if ''Version'' >= 7
  BYTE // Main Superblock count
+
  BYTE EmbeddedTxtcCount
  --repetition(Main Superblock count)
+
  --repetition(EmbeddedTxtcCount)
  BYTE // Some sort of 0 based index (sequential in superblocks)
+
  BYTE // TGI index for this embedded txtc's resource key
  DWORD // Offset from end of this DWORD to the beginning of the next superblock
+
  DWORD // byte size of this embedded txtc
  DWORD
+
  --Insert another TXTC
DWORD // Offset from end of this DWORD to the end of the entries
+
  BYTE[3] // don't know but seems needed
// (from there, 1 DWORD to the next  superblock)
+
  BYTE[10] // 0x00
+
DWORD // Entry count in this superblock
+
BYTE
+
--repetition(Entry count in this superblock)
+
{Entry} // [[#Entry Format|see below]]
+
DWORD
+
 
   
 
   
  DWORD
+
  DWORD [[#Pattern_Size|Pattern Size]]
  DWORD
+
  DWORD [[Sims_3:CAS_Part_Flags#Type|PartType]]
  BYTE
+
  BYTE //00
 
  DWORD // entry count
 
  DWORD // entry count
 
   
 
   
 
  --if ''Version'' >= 8
 
  --if ''Version'' >= 8
  BYTE
+
  BYTE //00
 
   
 
   
 
  --repetition(entry count)
 
  --repetition(entry count)
 
  {Entry} // [[#Entry Format|see below]]
 
  {Entry} // [[#Entry Format|see below]]
 
   
 
   
  BYTE // TGI<sub>64</sub> Count
+
  BYTE // I<sub>64</sub>GT Count
  --repetition(TGI<sub>64</sub> Count)
+
  --repetition(I<sub>64</sub>GT Count)
  TGI<sub>64</sub>
+
  I<sub>64</sub>GT
 
===Entry format===
 
===Entry format===
  DWORD // Property ID - see [[#Properties|Properties]] below
+
An "entry" is made up of a repeating group, as follows:
BYTE // Data type - see [[#Data types|Data types]] below
+
  --Repeat until the next "property id" is 0x00000000
{Data} //  
+
DWORD // Property ID - see [[#Properties|Properties]] below
(Repeat this format using the code list above until the next property id is 0x00000000. Then end entry.
+
BYTE // 0x00
 +
BYTE // Data type - see [[#Data Types|Data types]] below
 +
{Data} //  
 +
DWORD // 0x00000000 the next "property id"; not a full entry group
  
 
by Karybdis
 
by Karybdis
 +
 +
====Pattern Size====
 +
{| class="wikitable" border="1"
 +
|-
 +
| 0x00000000 || Default
 +
|-
 +
| 0x00000001 || Large
 +
|}
  
 
====Properties====
 
====Properties====
 
Property IDs are derived from an internal name hashed with the [[FNV|FNV32]] algorithm.
 
Property IDs are derived from an internal name hashed with the [[FNV|FNV32]] algorithm.
{| border="1"
+
{| class="wikitable sortable" border="1"
! ID !! Name !! Description
+
|- Sortable table
 +
! ID !! Name !! Description !! DataType
 
|-
 
|-
| 0x687720A6 || ID || Possible values are Texture Step IDs - [[#Step Types|see below]].
+
| 0x048F7567 || Destination Blend || See [[#Blend Factors|Blend Factors]] below || 0x03
 
|-
 
|-
| 0xB01748DA || Colour ||
+
| 0x06A775CE || Skip Shader Model || See [[#Shader Models|Shader Models]] below. || 0x03
 
|-
 
|-
| 0x4C47D5C0 || Height ||  
+
| 0x10DA0B6A || Mask Source || ||  
 
|-
 
|-
| 0x182E64EB || Width ||  
+
| 0x182E64EB || Width || || 0x07
 
|-
 
|-
| 0x49F996DB || Rotation ||  
+
| 0x1F091259 || Mask Select || || 0x0B
 
|-
 
|-
| 0xD0E69002 || Channel Select ||  
+
| 0x2EDF5F53 || Min Shader Model || || 0x03
 
|-
 
|-
| 0xB67C2EF8 || HSV Shift ||  
+
| 0x331178DF || Skip Detail Level || See [[#Detail Levels|Detail Levels]] below|| 0x07
 
|-
 
|-
| 0x3A3260E6 || Mask Bias ||  
+
| 0x3A3260E6 || Mask Bias || || 0x09
 
|-
 
|-
| 0x1F091259 || Mask Select ||  
+
| 0x49DE3B16 || Mask Key || || 0x0C
 
|-
 
|-
| 0x49DE3B16 || Mask Key ||  
+
| 0x49F996DB || Rotation || || 0x09
 
|-
 
|-
| 0x10DA0B6A || Mask Source ||  
+
| 0x4C47D5C0 || Height || || 0x07
 
|-
 
|-
| 0x6B7119C1 || Description ||  
+
| 0x64399EC5 || Default Colour || || 0x07
 
|-
 
|-
| 0xD92A4C8B || UI Visible ||  
+
| 0x687720A6 || ID || See [[#Step Types|Step Types]] below.|| 0x07
 
|-
 
|-
| 0x2EDF5F53 || Min Shader Model ||  
+
| 0x6B7119C1 || Description || || 0x0D
 
|-
 
|-
| 0x06A775CE || Skip Shader Model ||  
+
| 0x8A7006DB || Image Source || See [[#Render Targets|Render Targets]] below || 0x07
 
|-
 
|-
| 0xAE5FE82A || Min Detail Level ||  
+
| 0xA2C91332 || Render Target || See [[#Render Targets|Render Targets]] below || 0x07
 
|-
 
|-
| 0x331178DF || Skip Detail Level ||  
+
| 0xA3AAFC98 || Source Rectangle || || 0x0A
 
|-
 
|-
| 0xF6CC8471 || Image Key ||  
+
| 0xAE5FE82A || Min Detail Level || See [[#Detail Levels|Detail Levels]] below || 0x07
 
|-
 
|-
| 0xDCFF6D7B || Default Fabric ||  
+
| 0xB01748DA || Colour || || 0x07
 
|-
 
|-
| 0xB07B3B93 || Colour Write ||  
+
| 0xB07B3B93 || Colour Write ||See [[#Colour Write Flags|Colour Write Flags]] below || 0x03
 
|-
 
|-
| 0xE1D6D01F || Destination Rectangle ||  
+
| 0xB67C2EF8 || HSV Shift || || 0x0B
 
|-
 
|-
| 0xFBF310C7 || Enable Blending ||  
+
| 0xD0E69002 || Channel Select || || 0x0B
 
|-
 
|-
| 0x048F7567 || Destination Blend ||  
+
| 0xD92A4C8B || UI Visible || || 0x00
 
|-
 
|-
| 0xE055EE36 || Source Blend ||  
+
| 0xD49E8879 || ? || ? || 0x00
 
|-
 
|-
| 0xA2C91332 || Render Target ||  
+
| 0xDCFF6D7B || Default Fabric || References embedded superblock || 0x0C
 
|-
 
|-
| 0xA3AAFC98 || Source Rectangle ||  
+
| 0xE055EE36 || Source Blend || See [[#Blend Factors|Blend Factors]] below || 0x03
 
|-
 
|-
| 0x8A7006DB || Image Source ||  
+
| 0xE1D6D01F || Destination Rectangle || || 0x0A
 
|-
 
|-
| 0xE27FE962 || Enable Filtering ||   
+
| 0xE27FE962 || Enable Filtering ||  || 0x00
 
|-
 
|-
| 0x64399EC5 || Default Colour ||
+
| 0xF6CC8471 || Image Key || || 0x0C
 +
|-
 +
| 0xFBF310C7 || Enable Blending || Indicative whether or not there will be Source/Destination blend parameters || 0x00
 
|-
 
|-
 
|}
 
|}
 
=====Step Types=====
 
=====Step Types=====
These are the possible values for the ID field of the properties.  The ID is derived from a [[FNV|FNV32]] hashed internal name.
+
These are the known values for the ID field of the properties.  The ID is derived from a [[FNV|FNV32]] hashed internal name.
{| border="1"
+
{| class="wikitable" border="1"
 
! ID !! Name !! Description
 
! ID !! Name !! Description
 
|-
 
|-
| 0x034210A5 || Draw Fabric ||
+
| 0x034210A5 || Draw Fabric || Draws an embedded fabric txtc.  This comes from Default fabric parameter, which has overrides all over the place
 
|-
 
|-
| 0x1E363B9B || Channel Select ||  
+
| 0x1E363B9B || Channel Select || Masks future steps based upon the colour from the "Channel Select" parameter using the mask texture in the "Image Key"
 
|-
 
|-
 
| 0x43B554E3 || Skin Tone ||
 
| 0x43B554E3 || Skin Tone ||
Line 121: Line 134:
 
| 0x5D7C85D4 || Hair Tone ||  
 
| 0x5D7C85D4 || Hair Tone ||  
 
|-
 
|-
| 0x9CD1269D || Colour Fill ||  
+
| 0x890805DB || Remapped Channel Select ||
 
|-
 
|-
| 0xA15200B1 || Draw Image ||  
+
| 0x9CD1269D || Colour Fill || Fills the texture buffer with a colour, this is often limited to a masked channel
 +
|-
 +
| 0xA15200B1 || Draw Image || Draws an image to the buffer, this is affected by masked colour channels, src/dest rectangles and src/dest blend factors
 
|-
 
|-
 
| 0xC6B6AC1F || CAS Pick Data ||  
 
| 0xC6B6AC1F || CAS Pick Data ||  
 
|-
 
|-
| 0xD6BD8695 || Set Target ||  
+
| 0xD6BD8695 || Set Target || Sets which render target future steps will use
 
|-
 
|-
 
| 0xDC0984B9 || HSV to RGB ||  
 
| 0xDC0984B9 || HSV to RGB ||  
 
|-
 
|-
 
|}
 
|}
 +
 +
=====Detail Levels=====
 +
This is not an enumeration, rather min/max constants defined by EA
 +
{| class="wikitable" border="1"
 +
! ID !! Name !! Description
 +
|-
 +
| 0x00000000|| Lowest ||
 +
|-
 +
| 0x00000003|| Highest ||
 +
|-
 +
|}
 +
 +
=====Shader Models=====
 +
{| class="wikitable" border="1"
 +
! ID !! Name !! Description
 +
|-
 +
| 0x00000000|| SM_1_0 ||
 +
|-
 +
| 0x00000001|| SM_1_1 ||
 +
|-
 +
| 0x00000002|| SM_2_0 ||
 +
|-
 +
| 0x00000003|| SM_2_1 ||
 +
|-
 +
| 0x7FFFFFFF|| SM_Highest ||
 +
|-
 +
|}
 +
 +
 +
=====Render Textures=====
 +
{| class="wikitable" border="1"
 +
! ID !! Name !! Description
 +
|-
 +
| 0x21E9CD3|| RenderTexture_A ||
 +
|-
 +
| 0x21E9CD5|| RenderTexture_B ||
 +
|-
 +
|}
 +
 +
 +
 +
=====Render Targets=====
 +
Analogous to [http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphics.rendertarget%28v=xnagamestudio.31%29.aspx .NET Render Targets]
 +
{| class="wikitable" border="1"
 +
! ID !! Name !! Description
 +
|-
 +
| 0x21E9CD2|| RenderTarget_A ||
 +
|-
 +
| 0x21E9CD4|| RenderTarget_B ||
 +
|-
 +
|}
 +
 +
 +
 +
 +
=====Colour Write Flags=====
 +
Filters colour channels that are used in a step
 +
{| class="wikitable" border="1"
 +
! ID !! Name !! Description
 +
|-
 +
| 0x00000001|| Red ||
 +
|-
 +
| 0x00000002|| Green ||
 +
|-
 +
| 0x00000004|| Blue ||
 +
|-
 +
| 0x00000008|| Alpha ||
 +
|-
 +
|}
 +
 +
=====Blend Factors=====
 +
Analogous to [http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphics.blend.aspx .NET Blend Factors]
 +
{| class="wikitable" border="1"
 +
! ID !! Name !! Description
 +
|-
 +
| 0x00000000|| Zero ||
 +
|-
 +
| 0x00000001|| One ||
 +
|-
 +
| 0x00000002|| Source Colour||
 +
|-
 +
| 0x00000003|| Inverse Source Colour||
 +
|-
 +
| 0x00000004|| Source Alpha||
 +
|-
 +
| 0x00000005|| Inverse Source Alpha ||
 +
|-
 +
| 0x00000006|| Destination Alpha ||
 +
|-
 +
| 0x00000007|| Inverse Destination Alpha ||
 +
|-
 +
| 0x00000008|| Destination Colour ||
 +
|-
 +
| 0x00000009|| Inverse Destination Colour ||
 +
|-
 +
| 0x0000000A|| Source Alpha Saturation ||
 +
|-
 +
| 0x0000000B|| Blend Factor ||
 +
|-
 +
| 0x0000000C|| Inverse Blend Factor ||
 +
|-
 +
|}
 +
 
====Data Types====
 
====Data Types====
{| border="1"
+
{| class="wikitable" border="1"
 
! Typecode !! Data !! Comment
 
! Typecode !! Data !! Comment
 
|-
 
|-
Line 150: Line 268:
 
| 0x06 || WORD || unsigned short
 
| 0x06 || WORD || unsigned short
 
|-
 
|-
| 0x07 || DWORD || unsigned int
+
| 0x07 || DWORD || unsigned int (e.g. step type)
 
|-
 
|-
 
| 0x08 || QWORD || unsigned long int
 
| 0x08 || QWORD || unsigned long int
Line 162: Line 280:
 
| 0x0C || BYTE || Index into TGI<sub>64</sub> table
 
| 0x0C || BYTE || Index into TGI<sub>64</sub> table
 
|-
 
|-
| 0x0D || BYTE len, string[len] ||
+
| 0x0D || WORD len, string[len] ||
 
|}
 
|}
<hr/>
+
 
[[Sims 3:Main Page]] -> [[Sims 3:PackedFileTypes]]
+
{{TS3AdvancedModdingHeader}}

Latest revision as of 21:29, 13 February 2012

Modding Reference by Category

Sims 3 :DBPF | File Types | RCOL(Scene) | Catalog Resource | String Table | Key Table | TS3 Programmer's Reference 

Texture Compositor - TXTC
TypeID:0x033A1435
Game Version:The Sims 3



Contents

[edit] Overview

This format is internally known as the "TextureCompositor". It describes the process of combining various texture files into what is actually rendered in the game. Texture Steps are to be read sequentially, as the previous ones affect the ones that follow. Sources are generally external textures referenced by an image key, destination represents the render texture specified by the steps, thus a virtual texture.

[edit] Format

DWORD	// Version
DWORD	// Offset of the I64GT Count from the end of this DWORD

--if Version >= 7
	BYTE EmbeddedTxtcCount
	--repetition(EmbeddedTxtcCount)
		BYTE	// TGI index for this embedded txtc's resource key		
		DWORD	// byte size of this embedded txtc
		--Insert another TXTC
		BYTE[3]	// don't know but seems needed

DWORD Pattern Size
DWORD PartType
BYTE //00
DWORD	// entry count

--if Version >= 8
	BYTE //00

--repetition(entry count)
	{Entry}	// see below

BYTE	// I64GT Count
--repetition(I64GT Count)
	I64GT

[edit] Entry format

An "entry" is made up of a repeating group, as follows:

--Repeat until the next "property id" is 0x00000000
	DWORD	// Property ID - see Properties below
	BYTE	// 0x00
	BYTE	// Data type - see Data types below
	{Data}	// 
DWORD		// 0x00000000 the next "property id"; not a full entry group

by Karybdis

[edit] Pattern Size

0x00000000 Default
0x00000001 Large

[edit] Properties

Property IDs are derived from an internal name hashed with the FNV32 algorithm.

ID Name Description DataType
0x048F7567 Destination Blend See Blend Factors below 0x03
0x06A775CE Skip Shader Model See Shader Models below. 0x03
0x10DA0B6A Mask Source
0x182E64EB Width 0x07
0x1F091259 Mask Select 0x0B
0x2EDF5F53 Min Shader Model 0x03
0x331178DF Skip Detail Level See Detail Levels below 0x07
0x3A3260E6 Mask Bias 0x09
0x49DE3B16 Mask Key 0x0C
0x49F996DB Rotation 0x09
0x4C47D5C0 Height 0x07
0x64399EC5 Default Colour 0x07
0x687720A6 ID See Step Types below. 0x07
0x6B7119C1 Description 0x0D
0x8A7006DB Image Source See Render Targets below 0x07
0xA2C91332 Render Target See Render Targets below 0x07
0xA3AAFC98 Source Rectangle 0x0A
0xAE5FE82A Min Detail Level See Detail Levels below 0x07
0xB01748DA Colour 0x07
0xB07B3B93 Colour Write See Colour Write Flags below 0x03
0xB67C2EF8 HSV Shift 0x0B
0xD0E69002 Channel Select 0x0B
0xD92A4C8B UI Visible 0x00
0xD49E8879  ?  ? 0x00
0xDCFF6D7B Default Fabric References embedded superblock 0x0C
0xE055EE36 Source Blend See Blend Factors below 0x03
0xE1D6D01F Destination Rectangle 0x0A
0xE27FE962 Enable Filtering 0x00
0xF6CC8471 Image Key 0x0C
0xFBF310C7 Enable Blending Indicative whether or not there will be Source/Destination blend parameters 0x00
[edit] Step Types

These are the known values for the ID field of the properties. The ID is derived from a FNV32 hashed internal name.

ID Name Description
0x034210A5 Draw Fabric Draws an embedded fabric txtc. This comes from Default fabric parameter, which has overrides all over the place
0x1E363B9B Channel Select Masks future steps based upon the colour from the "Channel Select" parameter using the mask texture in the "Image Key"
0x43B554E3 Skin Tone
0x5D7C85D4 Hair Tone
0x890805DB Remapped Channel Select
0x9CD1269D Colour Fill Fills the texture buffer with a colour, this is often limited to a masked channel
0xA15200B1 Draw Image Draws an image to the buffer, this is affected by masked colour channels, src/dest rectangles and src/dest blend factors
0xC6B6AC1F CAS Pick Data
0xD6BD8695 Set Target Sets which render target future steps will use
0xDC0984B9 HSV to RGB
[edit] Detail Levels

This is not an enumeration, rather min/max constants defined by EA

ID Name Description
0x00000000 Lowest
0x00000003 Highest
[edit] Shader Models
ID Name Description
0x00000000 SM_1_0
0x00000001 SM_1_1
0x00000002 SM_2_0
0x00000003 SM_2_1
0x7FFFFFFF SM_Highest


[edit] Render Textures
ID Name Description
0x21E9CD3 RenderTexture_A
0x21E9CD5 RenderTexture_B


[edit] Render Targets

Analogous to .NET Render Targets

ID Name Description
0x21E9CD2 RenderTarget_A
0x21E9CD4 RenderTarget_B



[edit] Colour Write Flags

Filters colour channels that are used in a step

ID Name Description
0x00000001 Red
0x00000002 Green
0x00000004 Blue
0x00000008 Alpha
[edit] Blend Factors

Analogous to .NET Blend Factors

ID Name Description
0x00000000 Zero
0x00000001 One
0x00000002 Source Colour
0x00000003 Inverse Source Colour
0x00000004 Source Alpha
0x00000005 Inverse Source Alpha
0x00000006 Destination Alpha
0x00000007 Inverse Destination Alpha
0x00000008 Destination Colour
0x00000009 Inverse Destination Colour
0x0000000A Source Alpha Saturation
0x0000000B Blend Factor
0x0000000C Inverse Blend Factor

[edit] Data Types

Typecode Data Comment
0x00 BYTE boolean
0x01 BYTE signed
0x02 WORD signed short
0x03 DWORD signed int
0x04 QWORD signed long int
0x05 BYTE unsigned
0x06 WORD unsigned short
0x07 DWORD unsigned int (e.g. step type)
0x08 QWORD unsigned long int
0x09 FLOAT
0x0A FLOAT[4] RectFloat
0x0B FLOAT[4] Vector4
0x0C BYTE Index into TGI64 table
0x0D WORD len, string[len]
Modding Reference by Category

Sims 3 :DBPF | File Types | RCOL(Scene) | Catalog Resource | String Table | Key Table | TS3 Programmer's Reference 

Personal tools
Namespaces

Variants
Actions
Navigation
game select
Toolbox