protected virtual void RenderTextureShadowCasterQueueGroupObjects( RenderQueueGroup group )
{
// This is like the basic group render, except we skip all transparents
// and we also render any non-shadowed objects
// Note that non-shadow casters will have already been eliminated during
// FindVisibleObjects
// Override auto param ambient to force vertex programs and fixed function to
// use shadow colour
if ( this.IsShadowTechniqueAdditive )
{
this.autoParamDataSource.AmbientLight = ColorEx.Black;
this.targetRenderSystem.AmbientLight = ColorEx.Black;
}
else
{
this.autoParamDataSource.AmbientLight = this.shadowColor;
this.targetRenderSystem.AmbientLight = this.shadowColor;
}
// Iterate through priorities
foreach ( RenderPriorityGroup priorityGroup in group.PriorityGroups.Values )
{
// Sort the queue first
priorityGroup.Sort( this.cameraInProgress );
// Do solids, override light list in case any vertex programs use them
this.RenderSolidObjects( priorityGroup.solidPasses, false, this.nullLightList );
this.renderingNoShadowQueue = true;
this.RenderSolidObjects( priorityGroup.solidPassesNoShadow, false, this.nullLightList );
this.renderingNoShadowQueue = false;
// Do transparents that cast shadows
this.RenderTransparentShadowCasterObjects( priorityGroup.transparentPasses, false, this.nullLightList );
} // for each priority
// reset ambient light
this.autoParamDataSource.AmbientLight = this.ambientColor;
this.targetRenderSystem.AmbientLight = this.ambientColor;
}