VTK  9.7.1
vtkGLSLModPixelDebugger.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
61 #ifndef vtkGLSLModPixelDebugger_h
62 #define vtkGLSLModPixelDebugger_h
63 
64 #include "vtkGLSLModifierBase.h"
65 
66 #include "vtkOpenGLRenderer.h" // for ivar
67 #include "vtkRenderingOpenGL2Module.h" // for export macro
68 #include "vtkStringToken.h" // for ivar
69 
70 VTK_ABI_NAMESPACE_BEGIN
71 class vtkActor;
73 class vtkOpenGLRenderer;
74 
75 class VTKRENDERINGOPENGL2_EXPORT vtkGLSLModPixelDebugger : public vtkGLSLModifierBase
76 {
77 public:
78  static vtkGLSLModPixelDebugger* New();
80  void PrintSelf(ostream& os, vtkIndent indent) override;
81 
85  {
86  this->SubstitutionJSONFileName = filename;
87  }
88 
89  // vtkGLSLModifierBase virtuals:
90  bool ReplaceShaderValues(vtkOpenGLRenderer* renderer, std::string& vertexShader,
91  std::string& tessControlShader, std::string& tessEvalShader, std::string& geometryShader,
92  std::string& fragmentShader, vtkAbstractMapper* mapper, vtkActor* actor) override;
94  vtkAbstractMapper* mapper, vtkActor* actor, vtkOpenGLVertexArrayObject* VAO = nullptr) override;
95  bool IsUpToDate(vtkOpenGLRenderer* vtkNotUsed(renderer), vtkAbstractMapper* vtkNotUsed(mapper),
96  vtkActor* vtkNotUsed(actor)) override
97  {
98  return this->HashSubstitutionJSONFileContents() ==
99  this->LastSubstitutionJSONFileContentsToken &&
100  this->HashGLSLFilesContents() == this->LastGLSLFilesContentsToken;
101  }
102 
103 protected:
105  ~vtkGLSLModPixelDebugger() override;
106 
108 
111 
112  vtkStringToken HashSubstitutionJSONFileContents();
113  vtkStringToken HashGLSLFilesContents();
114 
115 private:
117  void operator=(const vtkGLSLModPixelDebugger&) = delete;
118 };
119 
120 VTK_ABI_NAMESPACE_END
121 #endif
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:41
virtual bool SetShaderParameters(vtkOpenGLRenderer *renderer, vtkShaderProgram *program, vtkAbstractMapper *mapper, vtkActor *actor, vtkOpenGLVertexArrayObject *VAO=nullptr)=0
bool IsUpToDate(vtkOpenGLRenderer *renderer, vtkAbstractMapper *mapper, vtkActor *actor) override
Whether mod needs to be re-applied.
a simple class to control print indentation
Definition: vtkIndent.h:28
The VertexArrayObject class uses, or emulates, vertex array objects.
Allow live pixel debugging by overwriting gl_FragData[0] output.
Key for vtkObjectBase values.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
Represent a string by its integer hash.
abstract class specifies interface to map data
Abstract class that helps you develop modifier for VTK GLSL shaders.
virtual bool ReplaceShaderValues(vtkOpenGLRenderer *renderer, std::string &vertexShader, std::string &tessControlShader, std::string &tessEvalShader, std::string &geometryShader, std::string &fragmentShader, vtkAbstractMapper *mapper, vtkActor *actor)=0
Abstract interfaces to replace shader values and apply parameters as uniform values.
vtkStringToken LastSubstitutionJSONFileContentsToken
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
OpenGL renderer.
void SetSubstitutionJSONFileName(const std::string &filename)
Set this to a json file on your file system.
The ShaderProgram uses one or more Shader objects.