VTK  9.3.1
vtkShaderProperty.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
21 #ifndef vtkShaderProperty_h
22 #define vtkShaderProperty_h
23 
24 #include "vtkNew.h" // For iVars
25 #include "vtkObject.h"
26 #include "vtkRenderingCoreModule.h" // For export macro
27 
28 VTK_ABI_NAMESPACE_BEGIN
29 class vtkUniforms;
30 
31 class VTKRENDERINGCORE_EXPORT vtkShaderProperty : public vtkObject
32 {
33 public:
34  vtkTypeMacro(vtkShaderProperty, vtkObject);
35  void PrintSelf(ostream& os, vtkIndent indent) override;
36 
40  static vtkShaderProperty* New();
41 
45  void DeepCopy(vtkShaderProperty* p);
46 
57  vtkMTimeType GetShaderMTime();
58 
60 
66  bool HasVertexShaderCode();
67  bool HasFragmentShaderCode();
68  bool HasGeometryShaderCode();
69  vtkSetStringMacro(VertexShaderCode);
70  vtkGetStringMacro(VertexShaderCode);
71  vtkSetStringMacro(FragmentShaderCode);
72  vtkGetStringMacro(FragmentShaderCode);
73  vtkSetStringMacro(GeometryShaderCode);
74  vtkGetStringMacro(GeometryShaderCode);
76 
78 
82  vtkGetObjectMacro(FragmentCustomUniforms, vtkUniforms);
83  vtkGetObjectMacro(VertexCustomUniforms, vtkUniforms);
84  vtkGetObjectMacro(GeometryCustomUniforms, vtkUniforms);
86 
88 
95  virtual void AddVertexShaderReplacement(const std::string& originalValue,
96  bool replaceFirst, // do this replacement before the default
97  const std::string& replacementValue, bool replaceAll) = 0;
98  virtual void AddFragmentShaderReplacement(const std::string& originalValue,
99  bool replaceFirst, // do this replacement before the default
100  const std::string& replacementValue, bool replaceAll) = 0;
101  virtual void AddGeometryShaderReplacement(const std::string& originalValue,
102  bool replaceFirst, // do this replacement before the default
103  const std::string& replacementValue, bool replaceAll) = 0;
104  virtual int GetNumberOfShaderReplacements() = 0;
105  virtual std::string GetNthShaderReplacementTypeAsString(vtkIdType index) = 0;
106  virtual void GetNthShaderReplacement(vtkIdType index, std::string& name, bool& replaceFirst,
107  std::string& replacementValue, bool& replaceAll) = 0;
108  virtual void ClearVertexShaderReplacement(
109  const std::string& originalValue, bool replaceFirst) = 0;
110  virtual void ClearFragmentShaderReplacement(
111  const std::string& originalValue, bool replaceFirst) = 0;
112  virtual void ClearGeometryShaderReplacement(
113  const std::string& originalValue, bool replaceFirst) = 0;
114  virtual void ClearAllVertexShaderReplacements() = 0;
115  virtual void ClearAllFragmentShaderReplacements() = 0;
116  virtual void ClearAllGeometryShaderReplacements() = 0;
117  virtual void ClearAllShaderReplacements() = 0;
119 
120 protected:
122  ~vtkShaderProperty() override;
123 
127 
131 
132 private:
133  vtkShaderProperty(const vtkShaderProperty&) = delete;
134  void operator=(const vtkShaderProperty&) = delete;
135 };
136 
137 VTK_ABI_NAMESPACE_END
138 #endif
abstract base class for most VTK objects
Definition: vtkObject.h:51
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:270
int vtkIdType
Definition: vtkType.h:315
a simple class to control print indentation
Definition: vtkIndent.h:28
represent GPU shader properties
vtkNew< vtkUniforms > FragmentCustomUniforms
helper class to set custom uniform variables in GPU shaders.
Definition: vtkUniforms.h:32
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
vtkNew< vtkUniforms > VertexCustomUniforms
vtkNew< vtkUniforms > GeometryCustomUniforms