private void BuildFFPSubRenderState( int subRenderStateOrder, string subRenderStateType, ShaderGenerator.SGPass sgPass, TargetRenderState renderState ) { if ( subRenderStateOrder == -1 ) { throw new Exception( "Actual sub render type needs to be declared" ); } SubRenderState subRenderState; subRenderState = sgPass.GetCustomFFPSubState( subRenderStateOrder ); if ( subRenderState == null ) { subRenderState = ShaderGenerator.Instance.CreateSubRenderState( subRenderStateType ); } if ( subRenderState.PreAddToRenderState( renderState, sgPass.SrcPass, sgPass.DstPass ) ) { renderState.AddSubRenderStateInstance( subRenderState ); } else { ShaderGenerator.Instance.DestroySubRenderState( subRenderState ); } }