//-----------------------------------------------------------------------------
bool GLSLProgramProcessor::postCreateGpuPrograms(ProgramSet* programSet)
{
	Program* vsCpuProgram = programSet->getCpuVertexProgram();
	Program* fsCpuProgram = programSet->getCpuFragmentProgram();
	GpuProgramPtr vsGpuProgram = programSet->getGpuVertexProgram();
	GpuProgramPtr fsGpuProgram = programSet->getGpuFragmentProgram();
	
	// Bind sub shaders for the vertex shader.
	bindSubShaders(vsCpuProgram, vsGpuProgram);
	
	// Bind sub shaders for the fragment shader.
	bindSubShaders(fsCpuProgram, fsGpuProgram);

	// Bind vertex shader auto parameters.
	bindAutoParameters(programSet->getCpuVertexProgram(), programSet->getGpuVertexProgram());

	// Bind fragment shader auto parameters.
	bindAutoParameters(programSet->getCpuFragmentProgram(), programSet->getGpuFragmentProgram());

	// Bind texture samplers for the vertex shader.
	bindTextureSamplers(vsCpuProgram, vsGpuProgram);

	// Bind texture samplers for the fragment shader.
	bindTextureSamplers(fsCpuProgram, fsGpuProgram);


	return true;
}
//-----------------------------------------------------------------------------
bool CGProgramProcessor::postCreateGpuPrograms( ProgramSet* programSet )
{
    // Bind vertex shader auto parameters.
    bindAutoParameters(programSet->getCpuVertexProgram(), programSet->getGpuVertexProgram());

    // Bind fragment shader auto parameters.
    bindAutoParameters(programSet->getCpuFragmentProgram(), programSet->getGpuFragmentProgram());

    return true;
}
//-----------------------------------------------------------------------------
bool CGProgramProcessor::postCreateGpuPrograms( ProgramSet* programSet )
{
    // Bind vertex auto parameters.
    for(auto type : {GPT_VERTEX_PROGRAM, GPT_FRAGMENT_PROGRAM})
        bindAutoParameters(programSet->getCpuProgram(type), programSet->getGpuProgram(type));

    return true;
}