Difference between revisions of "THQ Material (RW Section)"

From GTAMods Wiki
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)
 
  void THQMaterial(void)
Line 21: Line 21:
 
   bool ZTest
 
   bool ZTest
 
   bool ZWrite
 
   bool ZWrite
  bool FogEnabled
 
 
   int32 SrcBlend
 
   int32 SrcBlend
 
   int32 DestBlend
 
   int32 DestBlend
   int32 FaceCullIndex
+
   int32 FaceCullMode
 
+
   bool AlphaEnabled
   RwBool AlphaEnabled
 
  RwCullMode FaceCullMode
 
 
    
 
    
 
   AlphaTestFunc = (renderProps & 0x7800) >> 11;
 
   AlphaTestFunc = (renderProps & 0x7800) >> 11;
Line 45: Line 42:
 
       FaceCullIndex = (void *)rwCULLMODECULLNONE;
 
       FaceCullIndex = (void *)rwCULLMODECULLNONE;
 
   }
 
   }
 
 
  switch( FaceCullIndex )
 
    {
 
        case 0:
 
        {
 
            FaceCullMode = rwCULLMODECULLNONE;
 
            break;
 
        }
 
 
 
        case 1:
 
        {
 
            FaceCullMode = rwCULLMODECULLBACK;
 
            break;
 
        }
 
 
 
        case 2:
 
        {
 
            FaceCullMode = rwCULLMODECULLFRONT;
 
            break;
 
        }
 
    }
 
 
  }
 
  }

Revision as of 03:31, 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
 int32 SrcBlend
 int32 DestBlend
 int32 FaceCullMode
 bool AlphaEnabled
 
 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;
 }
}