MCPcopy Create free account
hub / github.com/Kitware/VTK / ReadyShaderProgram

Method ReadyShaderProgram

Rendering/OpenGL2/vtkOpenGLShaderCache.cxx:263–339  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

261}
262
263vtkShaderProgram* vtkOpenGLShaderCache::ReadyShaderProgram(
264 std::map<vtkShader::Type, vtkShader*> shaders, vtkTransformFeedback* cap)
265{
266 vtkShader* vertShader = nullptr;
267 vtkShader* fragShader = nullptr;
268 // vertex and fragment shader must always be provided.
269 auto vsIter = shaders.find(vtkShader::Vertex);
270 if (vsIter != shaders.end())
271 {
272 vertShader = vsIter->second;
273 }
274 else
275 {
276 vtkErrorMacro(<< "A vertex shader is required!");
277 return nullptr;
278 }
279 auto fsIter = shaders.find(vtkShader::Fragment);
280 if (fsIter != shaders.end())
281 {
282 fragShader = fsIter->second;
283 }
284 else
285 {
286 vtkErrorMacro(<< "A fragment shader is required!");
287 return nullptr;
288 }
289 // now prepare placeholders for optional shaders.
290 vtkSmartPointer<vtkShader> geomShader, tcShader, teShader;
291 auto gsIter = shaders.find(vtkShader::Geometry);
292 if (gsIter != shaders.end())
293 {
294 geomShader = gsIter->second;
295 }
296 else
297 {
298 geomShader = vtk::TakeSmartPointer(vtkShader::New());
299 shaders[vtkShader::Geometry] = geomShader;
300 }
301 auto tcsIter = shaders.find(vtkShader::TessControl);
302 if (tcsIter != shaders.end())
303 {
304 tcShader = tcsIter->second;
305 }
306 else
307 {
308 tcShader = vtk::TakeSmartPointer(vtkShader::New());
309 shaders[vtkShader::TessControl] = tcShader;
310 }
311 auto tesIter = shaders.find(vtkShader::TessEvaluation);
312 if (tesIter != shaders.end())
313 {
314 teShader = tesIter->second;
315 }
316 else
317 {
318 teShader = vtk::TakeSmartPointer(vtkShader::New());
319 shaders[vtkShader::TessEvaluation] = teShader;
320 }

Callers 15

CopyOpaqueDepthBufferMethod · 0.45
BlendBackBufferMethod · 0.45
BlendFinalImageMethod · 0.45
RenderMethod · 0.45
RenderMethod · 0.45
ProjectMethod · 0.45
ApplyFilterMethod · 0.45
UpdateShadersMethod · 0.45
TextureDepthBlitMethod · 0.45

Calls 12

ReplaceShaderValuesMethod · 0.95
GetShaderProgramMethod · 0.95
ReleaseCurrentShaderMethod · 0.95
BindShaderMethod · 0.95
CompileShaderMethod · 0.80
NewFunction · 0.50
findMethod · 0.45
endMethod · 0.45
GetSourceMethod · 0.45
SetSourceMethod · 0.45
c_strMethod · 0.45

Tested by 3

TestComputeShaderFunction · 0.36
ExecuteMethod · 0.36