//----------------------------------------------------------------------- bool TriplanarTexturing::resolveDependencies(ProgramSet* programSet) { Program* psProgram = programSet->getCpuFragmentProgram(); Program* vsProgram = programSet->getCpuVertexProgram(); psProgram->addDependency("SGXLib_TriplanarTexturing"); vsProgram->addDependency(FFP_LIB_COMMON); return true; }
//----------------------------------------------------------------------- bool HardwareSkinning::resolveDependencies(ProgramSet* programSet) { Program* vsProgram = programSet->getCpuVertexProgram(); vsProgram->addDependency(FFP_LIB_COMMON); vsProgram->addDependency(FFP_LIB_TRANSFORM); return true; }
//----------------------------------------------------------------------- bool DualQuaternionSkinning::resolveDependencies(ProgramSet* programSet) { Program* vsProgram = programSet->getCpuVertexProgram(); vsProgram->addDependency(FFP_LIB_COMMON); vsProgram->addDependency(FFP_LIB_TRANSFORM); vsProgram->addDependency(SGX_LIB_DUAL_QUATERNION); return true; }
//----------------------------------------------------------------------- bool FFPLighting::resolveDependencies(ProgramSet* programSet) { Program* vsProgram = programSet->getCpuVertexProgram(); vsProgram->addDependency(FFP_LIB_COMMON); vsProgram->addDependency(FFP_LIB_LIGHTING); return true; }
//----------------------------------------------------------------------- bool FFPColour::resolveDependencies(ProgramSet* programSet) { Program* vsProgram = programSet->getCpuVertexProgram(); Program* psProgram = programSet->getCpuFragmentProgram(); vsProgram->addDependency(FFP_LIB_COMMON); psProgram->addDependency(FFP_LIB_COMMON); return true; }
//----------------------------------------------------------------------- bool IntegratedPSSM3::resolveDependencies(ProgramSet* programSet) { Program* vsProgram = programSet->getCpuVertexProgram(); Program* psProgram = programSet->getCpuFragmentProgram(); vsProgram->addDependency(FFP_LIB_COMMON); psProgram->addDependency(FFP_LIB_COMMON); psProgram->addDependency(SGX_LIB_INTEGRATEDPSSM); return true; }
//----------------------------------------------------------------------- bool ShaderExInstancedViewports::resolveDependencies(ProgramSet* programSet) { Program* vsProgram = programSet->getCpuVertexProgram(); Program* psProgram = programSet->getCpuFragmentProgram(); vsProgram->addDependency(FFP_LIB_COMMON); vsProgram->addDependency(SGX_LIB_INSTANCED_VIEWPORTS); psProgram->addDependency(FFP_LIB_COMMON); psProgram->addDependency(SGX_LIB_INSTANCED_VIEWPORTS); return true; }
//----------------------------------------------------------------------- bool RTShaderSRSSegmentedLights::resolveDependencies(ProgramSet* programSet) { Program* vsProgram = programSet->getCpuVertexProgram(); Program* psProgram = programSet->getCpuFragmentProgram(); vsProgram->addDependency(FFP_LIB_COMMON); vsProgram->addDependency(SL_LIB_PERPIXELLIGHTING); psProgram->addDependency(FFP_LIB_COMMON); psProgram->addDependency(SL_LIB_PERPIXELLIGHTING); return true; }
//----------------------------------------------------------------------- bool ShaderExReflectionMap::resolveDependencies(ProgramSet* programSet) { Program* vsProgram = programSet->getCpuVertexProgram(); Program* psProgram = programSet->getCpuFragmentProgram(); vsProgram->addDependency(FFP_LIB_COMMON); vsProgram->addDependency(FFP_LIB_TEXTURING); psProgram->addDependency(FFP_LIB_COMMON); psProgram->addDependency(FFP_LIB_TEXTURING); psProgram->addDependency(SGX_LIB_REFLECTIONMAP); return true; }
//----------------------------------------------------------------------- bool FFPTransform::createCpuSubPrograms(ProgramSet* programSet) { //! [param_resolve] Program* vsProgram = programSet->getCpuVertexProgram(); Function* vsEntry = vsProgram->getEntryPointFunction(); // Resolve World View Projection Matrix. UniformParameterPtr wvpMatrix = vsProgram->resolveAutoParameterInt(GpuProgramParameters::ACT_WORLDVIEWPROJ_MATRIX, 0); // Resolve input position parameter. ParameterPtr positionIn = vsEntry->resolveInputParameter(Parameter::SPS_POSITION, 0, Parameter::SPC_POSITION_OBJECT_SPACE, GCT_FLOAT4); // Resolve output position parameter. ParameterPtr positionOut = vsEntry->resolveOutputParameter(Parameter::SPS_POSITION, 0, Parameter::SPC_POSITION_PROJECTIVE_SPACE, GCT_FLOAT4); if (!wvpMatrix || !positionIn || !positionOut) { OGRE_EXCEPT( Exception::ERR_INTERNAL_ERROR, "Not all parameters could be constructed for the sub-render state.", "FFPTransform::createCpuSubPrograms" ); } //! [param_resolve] // Add dependency. vsProgram->addDependency(FFP_LIB_TRANSFORM); FunctionInvocation* transformFunc = OGRE_NEW FunctionInvocation(FFP_FUNC_TRANSFORM, FFP_VS_TRANSFORM, 0); transformFunc->pushOperand(wvpMatrix, Operand::OPS_IN); transformFunc->pushOperand(positionIn, Operand::OPS_IN); transformFunc->pushOperand(positionOut, Operand::OPS_OUT); vsEntry->addAtomInstance(transformFunc); return true; }
//----------------------------------------------------------------------- bool RTShaderSRSTexturedFog::resolveDependencies(ProgramSet* programSet) { if (mFogMode == FOG_NONE) return true; Program* vsProgram = programSet->getCpuVertexProgram(); Program* psProgram = programSet->getCpuFragmentProgram(); vsProgram->addDependency(FFP_LIB_FOG); psProgram->addDependency(FFP_LIB_COMMON); psProgram->addDependency(FFP_LIB_FOG); psProgram->addDependency(FFP_LIB_TEXTURING); return true; }
//----------------------------------------------------------------------- bool LayeredBlending::resolveDependencies(ProgramSet* programSet) { FFPTexturing::resolveDependencies(programSet); Program* psProgram = programSet->getCpuProgram(GPT_FRAGMENT_PROGRAM); psProgram->addDependency(SGX_LIB_LAYEREDBLENDING); return true; }
//----------------------------------------------------------------------- bool LayeredBlending::resolveDependencies(ProgramSet* programSet) { FFPTexturing::resolveDependencies(programSet); Program* psProgram = programSet->getCpuFragmentProgram(); psProgram->addDependency(SGX_LIB_LAYEREDBLENDING); return true; }
//----------------------------------------------------------------------- bool FFPFog::resolveDependencies(ProgramSet* programSet) { if (mFogMode == FOG_NONE) return true; Program* vsProgram = programSet->getCpuVertexProgram(); Program* psProgram = programSet->getCpuFragmentProgram(); vsProgram->addDependency(FFP_LIB_FOG); psProgram->addDependency(FFP_LIB_COMMON); // Per pixel fog. if (mCalcMode == CM_PER_PIXEL) { psProgram->addDependency(FFP_LIB_FOG); } return true; }
//----------------------------------------------------------------------- bool FFPTransform::createCpuSubPrograms(ProgramSet* programSet) { Program* vsProgram = programSet->getCpuVertexProgram(); // Resolve World View Projection Matrix. UniformParameterPtr wvpMatrix = vsProgram->resolveAutoParameterInt(GpuProgramParameters::ACT_WORLDVIEWPROJ_MATRIX, 0); if (wvpMatrix.get() == NULL) return false; Function* vsEntry = vsProgram->getEntryPointFunction(); assert(vsEntry != NULL); // Resolve input position parameter. ParameterPtr positionIn = vsEntry->resolveInputParameter(Parameter::SPS_POSITION, 0, Parameter::SPC_POSITION_OBJECT_SPACE, GCT_FLOAT4); if (positionIn.get() == NULL) return false; // Resolve output position parameter. ParameterPtr positionOut = vsEntry->resolveOutputParameter(Parameter::SPS_POSITION, 0, Parameter::SPC_POSITION_PROJECTIVE_SPACE, GCT_FLOAT4); if (positionOut.get() == NULL) return false; // Add dependency. vsProgram->addDependency(FFP_LIB_TRANSFORM); FunctionInvocation* transformFunc = OGRE_NEW FunctionInvocation(FFP_FUNC_TRANSFORM, FFP_VS_TRANSFORM, 0); transformFunc->pushOperand(wvpMatrix, Operand::OPS_IN); transformFunc->pushOperand(positionIn, Operand::OPS_IN); transformFunc->pushOperand(positionOut, Operand::OPS_OUT); vsEntry->addAtomInstace(transformFunc); return true; }
//----------------------------------------------------------------------- bool FFPAlphaTest::resolveDependencies(ProgramSet* programSet) { Program* psProgram = programSet->getCpuProgram(GPT_FRAGMENT_PROGRAM); psProgram->addDependency(FFP_LIB_ALPHA_TEST); return true; }
//----------------------------------------------------------------------- bool FFPAlphaTest::resolveDependencies(ProgramSet* programSet) { Program* psProgram = programSet->getCpuFragmentProgram(); psProgram->addDependency(FFP_LIB_ALPHA_TEST); return true; }