protected override void RenderSingleObject( IRenderable renderable, Pass pass,
bool doLightIteration, LightList manualLightList )
{
if ( renderable is BspGeometry )
{
// Render static level geometry
if ( doLightIteration )
{
// render all geometry without lights first
RenderStaticGeometry();
// render geometry affected by each visible light
foreach ( Light l in lightsAffectingFrustum )
{
RenderTextureLighting( l );
}
}
else
{
if ( manualLightList.Count == 0 )
{
if ( illuminationStage == IlluminationRenderStage.RenderReceiverPass )
{
// texture shadows
RenderTextureShadowOnGeometry();
}
else
{
// ambient stencil pass, render geometry without lights
RenderStaticGeometry();
}
}
else
{
// render only geometry affected by the provided light
foreach ( Light l in manualLightList )
{
RenderTextureLighting( l );
}
}
}
}
else
{
base.RenderSingleObject( renderable, pass, doLightIteration, manualLightList );
}
}