//-----------------------------------------------------------------------------
void FFPRenderStateBuilder::buildRenderState(ShaderGenerator::SGPass* sgPass, TargetRenderState* renderState)
{
    renderState->reset();

    // Build transformation sub state.
    buildFFPSubRenderState(FFP_TRANSFORM, FFPTransform::Type, sgPass, renderState); 

    // Build colour sub state.
    buildFFPSubRenderState(FFP_COLOUR, FFPColour::Type, sgPass, renderState);

    // Build lighting sub state.
    buildFFPSubRenderState(FFP_LIGHTING, FFPLighting::Type, sgPass, renderState);

    // Build texturing sub state.
    buildFFPSubRenderState(FFP_TEXTURING, FFPTexturing::Type, sgPass, renderState); 
    
    // Build fog sub state.
    buildFFPSubRenderState(FFP_FOG, FFPFog::Type, sgPass, renderState);
	
	RenderSystem* rs = Root::getSingleton().getRenderSystem();
	if (rs->getName().find("Direct3D11") != String::npos && 
		sgPass->getSrcPass()->getAlphaRejectFunction() != CMPF_ALWAYS_PASS)
	{
		buildFFPSubRenderState(FFP_ALPHA_TEST, FFPAlphaTest::Type, sgPass, renderState);
	}
	
    // Resolve colour stage flags.
    resolveColourStageFlags(sgPass, renderState);

}
//-----------------------------------------------------------------------------
void FFPRenderStateBuilder::buildRenderState(ShaderGenerator::SGPass* sgPass, TargetRenderState* renderState)
{
    renderState->reset();

    // Build transformation sub state.
    buildFFPSubRenderState(FFP_TRANSFORM, FFPTransform::Type, sgPass, renderState); 

    // Build colour sub state.
    buildFFPSubRenderState(FFP_COLOUR, FFPColour::Type, sgPass, renderState);

    // Build lighting sub state.
    buildFFPSubRenderState(FFP_LIGHTING, FFPLighting::Type, sgPass, renderState);

    // Build texturing sub state.
    buildFFPSubRenderState(FFP_TEXTURING, FFPTexturing::Type, sgPass, renderState); 
    
    // Build fog sub state.
    buildFFPSubRenderState(FFP_FOG, FFPFog::Type, sgPass, renderState);

    buildFFPSubRenderState(FFP_ALPHA_TEST, FFPAlphaTest::Type, sgPass, renderState);
	
    // Resolve colour stage flags.
    resolveColourStageFlags(sgPass, renderState);

}