Difference between revisions of "Sims 3:0x033A1435"
m |
(→Properties) |
||
(13 intermediate revisions by 2 users not shown) | |||
Line 8: | Line 8: | ||
==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 | ||
Line 14: | Line 14: | ||
--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) | ||
Line 47: | Line 40: | ||
DWORD // Property ID - see [[#Properties|Properties]] below | DWORD // Property ID - see [[#Properties|Properties]] below | ||
BYTE // 0x00 | BYTE // 0x00 | ||
− | BYTE // Data type - see [[#Data | + | BYTE // Data type - see [[#Data Types|Data types]] below |
{Data} // | {Data} // | ||
DWORD // 0x00000000 the next "property id"; not a full entry group | 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. | ||
− | {| class="wikitable" border="1" | + | {| class="wikitable sortable" border="1" |
+ | |- Sortable table | ||
! ID !! Name !! Description !! DataType | ! ID !! Name !! Description !! DataType | ||
|- | |- | ||
− | | 0x048F7567 || Destination Blend || || 0x03 | + | | 0x048F7567 || Destination Blend || See [[#Blend Factors|Blend Factors]] below || 0x03 |
|- | |- | ||
− | | 0x06A775CE || Skip Shader Model || || 0x03 | + | | 0x06A775CE || Skip Shader Model || See [[#Shader Models|Shader Models]] below. || 0x03 |
|- | |- | ||
| 0x10DA0B6A || Mask Source || || | | 0x10DA0B6A || Mask Source || || | ||
Line 70: | Line 72: | ||
| 0x2EDF5F53 || Min Shader Model || || 0x03 | | 0x2EDF5F53 || Min Shader Model || || 0x03 | ||
|- | |- | ||
− | | 0x331178DF || Skip Detail Level || || 0x07 | + | | 0x331178DF || Skip Detail Level || See [[#Detail Levels|Detail Levels]] below|| 0x07 |
|- | |- | ||
| 0x3A3260E6 || Mask Bias || || 0x09 | | 0x3A3260E6 || Mask Bias || || 0x09 | ||
Line 86: | Line 88: | ||
| 0x6B7119C1 || Description || || 0x0D | | 0x6B7119C1 || Description || || 0x0D | ||
|- | |- | ||
− | | 0x8A7006DB || Image Source || || 0x07 | + | | 0x8A7006DB || Image Source || See [[#Render Targets|Render Targets]] below || 0x07 |
|- | |- | ||
− | | 0xA2C91332 || Render Target || || 0x07 | + | | 0xA2C91332 || Render Target || See [[#Render Targets|Render Targets]] below || 0x07 |
|- | |- | ||
| 0xA3AAFC98 || Source Rectangle || || 0x0A | | 0xA3AAFC98 || Source Rectangle || || 0x0A | ||
|- | |- | ||
− | | 0xAE5FE82A || Min Detail Level || || 0x07 | + | | 0xAE5FE82A || Min Detail Level || See [[#Detail Levels|Detail Levels]] below || 0x07 |
|- | |- | ||
| 0xB01748DA || Colour || || 0x07 | | 0xB01748DA || Colour || || 0x07 | ||
|- | |- | ||
− | | 0xB07B3B93 || Colour Write || || 0x03 | + | | 0xB07B3B93 || Colour Write ||See [[#Colour Write Flags|Colour Write Flags]] below || 0x03 |
|- | |- | ||
| 0xB67C2EF8 || HSV Shift || || 0x0B | | 0xB67C2EF8 || HSV Shift || || 0x0B | ||
Line 104: | Line 106: | ||
| 0xD92A4C8B || UI Visible || || 0x00 | | 0xD92A4C8B || UI Visible || || 0x00 | ||
|- | |- | ||
− | | | + | | 0xD49E8879 || ? || ? || 0x00 |
|- | |- | ||
− | | 0xE055EE36 || Source Blend || || 0x03 | + | | 0xDCFF6D7B || Default Fabric || References embedded superblock || 0x0C |
+ | |- | ||
+ | | 0xE055EE36 || Source Blend || See [[#Blend Factors|Blend Factors]] below || 0x03 | ||
|- | |- | ||
| 0xE1D6D01F || Destination Rectangle || || 0x0A | | 0xE1D6D01F || Destination Rectangle || || 0x0A | ||
Line 114: | Line 118: | ||
| 0xF6CC8471 || Image Key || || 0x0C | | 0xF6CC8471 || Image Key || || 0x0C | ||
|- | |- | ||
− | | 0xFBF310C7 || Enable Blending || || 0x00 | + | | 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. |
{| class="wikitable" 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 130: | 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 || | ||
|- | |- | ||
|} | |} |
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 |