Difference between revisions of "THQ Material (RW Section)"
Jump to navigation
Jump to search
| Line 11: | Line 11: | ||
==Structure== | ==Structure== | ||
| − | |||
uint32 header | uint32 header | ||
int32 sectionSize | int32 sectionSize | ||
uint32 renderProps | uint32 renderProps | ||
| + | void THQMaterial(void) | ||
| + | { | ||
int32 AlphaTestFunc | int32 AlphaTestFunc | ||
int32 AlphaTestRef | int32 AlphaTestRef | ||
bool ZTest | bool ZTest | ||
bool ZWrite | bool ZWrite | ||
| + | bool FogEnabled | ||
int32 SrcBlend | int32 SrcBlend | ||
int32 DestBlend | int32 DestBlend | ||
| Line 30: | Line 32: | ||
AlphaTestRef = (renderProps & 0x7F8000) >> 15; | AlphaTestRef = (renderProps & 0x7F8000) >> 15; | ||
ZTest = (renderProps & 0x800000) >> 17; | ZTest = (renderProps & 0x800000) >> 17; | ||
| − | |||
SrcBlend = (renderProps & 0x78) >> 3; | SrcBlend = (renderProps & 0x78) >> 3; | ||
DstBlend = (renderProps & 0x780) >> 7; | DstBlend = (renderProps & 0x780) >> 7; | ||
Revision as of 03:17, 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
void THQMaterial(void)
{
int32 AlphaTestFunc
int32 AlphaTestRef
bool ZTest
bool ZWrite
bool FogEnabled
int32 SrcBlend
int32 DestBlend
int32 FaceCullIndex
RwBool AlphaEnabled
RwCullMode FaceCullMode
AlphaTestFunc = (renderProps & 0x7800) >> 11;
AlphaTestRef = (renderProps & 0x7F8000) >> 15;
ZTest = (renderProps & 0x800000) >> 17;
SrcBlend = (renderProps & 0x78) >> 3;
DstBlend = (renderProps & 0x780) >> 7;
FaceCullIndex = renderProps & 0x7;
if (DstBlend == (void *)rwBLENDZERO)
AlphaEnabled = FALSE
else
{
AlphaEnabled = TRUE
if (renderProps & 0x4000000)
FaceCullIndex = (void *)rwCULLMODECULLNONE;
}
switch( FaceCullIndex )
{
case 0:
{
FaceCullMode = rwCULLMODECULLNONE;
break;
}
case 1:
{
FaceCullMode = rwCULLMODECULLBACK;
break;
}
case 2:
{
FaceCullMode = rwCULLMODECULLFRONT;
break;
}
}
}