Difference between revisions of "Sims 3:0x033A1435"
m (→Format) |
(→Properties) |
||
(32 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
− | + | {{TS3AdvancedModdingHeader}} | |
− | < | + | {{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 | + | DWORD // Offset of the I<sub>64</sub>GT Count from the end of this DWORD |
--if ''Version'' >= 7 | --if ''Version'' >= 7 | ||
− | BYTE | + | BYTE EmbeddedTxtcCount |
− | --repetition( | + | --repetition(EmbeddedTxtcCount) |
− | BYTE | + | BYTE // TGI index for this embedded txtc's resource key |
− | DWORD | + | DWORD // byte size of this embedded txtc |
− | + | --Insert another TXTC | |
− | + | BYTE[3] // don't know but seems needed | |
− | + | ||
− | BYTE[ | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | 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 // | + | BYTE // I<sub>64</sub>GT Count |
− | --repetition( | + | --repetition(I<sub>64</sub>GT Count) |
− | + | 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: |
− | + | --Repeat until the next "property id" is 0x00000000 | |
− | + | DWORD // Property ID - see [[#Properties|Properties]] below | |
− | + | 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 | ||
|- | |- | ||
− | | | + | | 0x048F7567 || Destination Blend || See [[#Blend Factors|Blend Factors]] below || 0x03 |
|- | |- | ||
− | | | + | | 0x06A775CE || Skip Shader Model || See [[#Shader Models|Shader Models]] below. || 0x03 |
|- | |- | ||
− | | | + | | 0x10DA0B6A || Mask Source || || |
|- | |- | ||
− | | 0x182E64EB || Width || | + | | 0x182E64EB || Width || || 0x07 |
|- | |- | ||
− | | | + | | 0x1F091259 || Mask Select || || 0x0B |
|- | |- | ||
− | | | + | | 0x2EDF5F53 || Min Shader Model || || 0x03 |
|- | |- | ||
− | | | + | | 0x331178DF || Skip Detail Level || See [[#Detail Levels|Detail Levels]] below|| 0x07 |
|- | |- | ||
− | | 0x3A3260E6 || Mask Bias || | + | | 0x3A3260E6 || Mask Bias || || 0x09 |
|- | |- | ||
− | | | + | | 0x49DE3B16 || Mask Key || || 0x0C |
|- | |- | ||
− | | | + | | 0x49F996DB || Rotation || || 0x09 |
|- | |- | ||
− | | | + | | 0x4C47D5C0 || Height || || 0x07 |
|- | |- | ||
− | | | + | | 0x64399EC5 || Default Colour || || 0x07 |
|- | |- | ||
− | | | + | | 0x687720A6 || ID || See [[#Step Types|Step Types]] below.|| 0x07 |
|- | |- | ||
− | | | + | | 0x6B7119C1 || Description || || 0x0D |
|- | |- | ||
− | | | + | | 0x8A7006DB || Image Source || See [[#Render Targets|Render Targets]] below || 0x07 |
|- | |- | ||
− | | | + | | 0xA2C91332 || Render Target || See [[#Render Targets|Render Targets]] below || 0x07 |
|- | |- | ||
− | | | + | | 0xA3AAFC98 || Source Rectangle || || 0x0A |
|- | |- | ||
− | | | + | | 0xAE5FE82A || Min Detail Level || See [[#Detail Levels|Detail Levels]] below || 0x07 |
|- | |- | ||
− | | | + | | 0xB01748DA || Colour || || 0x07 |
|- | |- | ||
− | | 0xB07B3B93 || Colour Write || | + | | 0xB07B3B93 || Colour Write ||See [[#Colour Write Flags|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|Blend Factors]] below || 0x03 |
|- | |- | ||
− | | | + | | 0xE1D6D01F || Destination Rectangle || || 0x0A |
|- | |- | ||
− | | 0xE27FE962 || Enable Filtering || | + | | 0xE27FE962 || Enable Filtering || || 0x00 |
|- | |- | ||
− | | | + | | 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 | + | 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 || | ||
|- | |- | ||
− | | | + | | 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 || | + | | 0x0D || WORD len, string[len] || |
|} | |} | ||
− | + | ||
− | + | {{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 |