MCPcopy Create free account
hub / github.com/OGRECave/ogre / createGpuPrograms

Method createGpuPrograms

Components/RTShaderSystem/src/OgreShaderProgramManager.cpp:117–153  ·  view source on GitHub ↗

-----------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

115
116//-----------------------------------------------------------------------------
117void 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//-----------------------------------------------------------------------------
156GpuProgramPtr ProgramManager::createGpuProgram(Program* shaderProgram,

Callers 1

acquireProgramsMethod · 0.80

Calls 5

frontMethod · 0.80
preCreateGpuProgramsMethod · 0.80
getCpuProgramMethod · 0.80
postCreateGpuProgramsMethod · 0.80
setGpuProgramMethod · 0.45

Tested by

no test coverage detected