-----------------------------------------------------------------------------
| 115 | |
| 116 | //----------------------------------------------------------------------------- |
| 117 | void ProgramManager::createGpuPrograms(ProgramSet* programSet) |
| 118 | { |
| 119 | // Before we start we need to make sure that the pixel shader input |
| 120 | // parameters are the same as the vertex output, this required by |
| 121 | // shader models 4 and 5. |
| 122 | matchVStoPSInterface(programSet); |
| 123 | |
| 124 | // Grab the matching writer. |
| 125 | const String& language = ShaderGenerator::getSingleton().getTargetLanguage(); |
| 126 | |
| 127 | auto programWriter = ProgramWriterManager::getSingleton().getProgramWriter(language); |
| 128 | |
| 129 | ProgramProcessor* programProcessor = mDefaultProgramProcessors.front(); |
| 130 | |
| 131 | // Call the pre creation of GPU programs method. |
| 132 | if (!programProcessor->preCreateGpuPrograms(programSet)) |
| 133 | OGRE_EXCEPT(Exception::ERR_INTERNAL_ERROR, "preCreateGpuPrograms failed"); |
| 134 | |
| 135 | // Create the shader programs |
| 136 | for(auto type : {GPT_VERTEX_PROGRAM, GPT_FRAGMENT_PROGRAM}) |
| 137 | { |
| 138 | auto gpuProgram = createGpuProgram(programSet->getCpuProgram(type), programWriter, language, |
| 139 | ShaderGenerator::getSingleton().getShaderProfiles(type), |
| 140 | ShaderGenerator::getSingleton().getShaderCachePath()); |
| 141 | programSet->setGpuProgram(gpuProgram); |
| 142 | } |
| 143 | |
| 144 | // update VS flags |
| 145 | auto gpuVs = programSet->getGpuProgram(GPT_VERTEX_PROGRAM); |
| 146 | auto cpuVs = programSet->getCpuProgram(GPT_VERTEX_PROGRAM); |
| 147 | gpuVs->setSkeletalAnimationIncluded(cpuVs->getSkeletalAnimationIncluded()); |
| 148 | gpuVs->setInstancingIncluded(cpuVs->getInstancingIncluded()); |
| 149 | |
| 150 | // Call the post creation of GPU programs method. |
| 151 | if(!programProcessor->postCreateGpuPrograms(programSet)) |
| 152 | OGRE_EXCEPT(Exception::ERR_INTERNAL_ERROR, "postCreateGpuPrograms failed"); |
| 153 | } |
| 154 | |
| 155 | //----------------------------------------------------------------------------- |
| 156 | GpuProgramPtr ProgramManager::createGpuProgram(Program* shaderProgram, |
no test coverage detected