Difference between revisions of "THQ Material (RW Section)"
Jump to navigation
Jump to search
(→Structure) |
|||
Line 16: | Line 16: | ||
uint32 renderProps | uint32 renderProps | ||
+ | int32 AlphaTestFunc | ||
int32 AlphaTestRef | int32 AlphaTestRef | ||
bool ZTest | bool ZTest | ||
Line 26: | Line 27: | ||
RwCullMode FaceCullMode | RwCullMode FaceCullMode | ||
− | AlphaTestRef = | + | AlphaTestFunc = (renderProps & 0x7800) >> 11; |
− | ZTest = renderProps & 0x800000; | + | AlphaTestRef = (renderProps & 0x7F8000) >> 15; |
− | ZWrite = | + | ZTest = (renderProps & 0x800000) >> 17; |
+ | ZWrite = (renderProps << 9) & 0x800000) >> 17; | ||
SrcBlend = (renderProps & 0x78) >> 3; | SrcBlend = (renderProps & 0x78) >> 3; | ||
DstBlend = (renderProps & 0x780) >> 7; | DstBlend = (renderProps & 0x780) >> 7; | ||
Line 36: | Line 38: | ||
AlphaEnabled = FALSE | AlphaEnabled = FALSE | ||
else | else | ||
+ | { | ||
AlphaEnabled = TRUE | AlphaEnabled = TRUE | ||
+ | |||
+ | if (renderProps & 0x4000000) | ||
+ | FaceCullIndex = 2; | ||
+ | } | ||
switch( FaceCullIndex ) | switch( FaceCullIndex ) |
Revision as of 02:51, 7 December 2023
THQ Material (Custom) | |
---|---|
RenderWare Stream Section | |
Vendor | THQ |
Module | Plug-In |
Module ID | 0x00CAFE
|
Identifier | 0x45
|
Chunk ID | 0x00CAFE45
|
Versions | All |
Hierarchy | |
Parents: Material (Extension), Atomic (Extension, see below) | |
Children: None | |
Extensions: None | |
File Format |
The custom material extension was developed by THQ to attach geometric rendering properties to a material, using alpha referencing, z-test flags, blend functions, and culling, used for the known game Jimmy Neutron: Attack of the Twonkies.
Structure
{ uint32 header int32 sectionSize uint32 renderProps int32 AlphaTestFunc int32 AlphaTestRef bool ZTest bool ZWrite int32 SrcBlend int32 DestBlend int32 FaceCullIndex RwBool AlphaEnabled RwCullMode FaceCullMode AlphaTestFunc = (renderProps & 0x7800) >> 11; AlphaTestRef = (renderProps & 0x7F8000) >> 15; ZTest = (renderProps & 0x800000) >> 17; ZWrite = (renderProps << 9) & 0x800000) >> 17; SrcBlend = (renderProps & 0x78) >> 3; DstBlend = (renderProps & 0x780) >> 7; FaceCullIndex = renderProps & 0x7; if (DstBlend == rwBLENDZERO) AlphaEnabled = FALSE else { AlphaEnabled = TRUE if (renderProps & 0x4000000) FaceCullIndex = 2; } switch( FaceCullIndex ) { case 0: { FaceCullMode = rwCULLMODECULLNONE; break; } case 1: { FaceCullMode = rwCULLMODECULLBACK; break; } case 2: { FaceCullMode = rwCULLMODECULLFRONT; break; } } }