Here's what I found
- Code: Select all
void __thiscall PRO_Culling_Node::SetGroupLayerNumber(PRO_Culling_Node *this, __int32 a2)
{
*((_DWORD *)this + 26) = a2;
}
Sets the layer number
- Code: Select all
void __thiscall PRO_Culling_Node::FormatCullingHierarchy(PRO_Culling_Node *this, __int32 a2)
{
// removed not applicable code
PRO_Culling_Node::AugmentCullingHierarchy(this, 1, *((_DWORD *)this + 26) >= 1u, a2);
}
This method is turning the layer number into a bool. If layerNumber >= 1
- Code: Select all
void __thiscall PRO_Culling_Node::AugmentCullingHierarchy(PRO_Culling_Node *this, __int32 a2, bool stencil, __int32 a4)
{
// other code
PRO_Culling_Node::fragmentPolygons(v5, stencil, vertexSharing);
}
Just calls another method to fragment the polys if needed
- Code: Select all
void __thiscall PRO_Culling_Node::fragmentPolygons(PRO_Culling_Node *this, bool stencil, bool vertexSharing)
{
PRO_Culling_Node::formatPolygons(
(void *)v42,
a3,
*((_DWORD *)v42 + 14),
*((_DWORD *)v42 + 15),
*((_DWORD *)v42 + 16),
stencil);
}
Finally ..
- Code: Select all
unsigned int __thiscall PRO_Culling_Node::formatPolygons(void *this, int a2, int a3, int a4, int a5, bool stencil)
{
if ( stencil )
PRO_Polygon::PolygonIsLayered(v42);
}
PolygonIsLayered simply sets ..
- Code: Select all
(this + 6) |= 8u;
Which just sets the layered flag.
So the too lazy didn't read, group layer just seems to set the stencil poly flag. Doesn't appear to do anything else. There must be something else in the culling nodes, or maybe even the viewport itself that turns on stenciling :/