VTK  9.2.6
vtkShaderProperty.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkShaderProperty.h
5
6 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7 All rights reserved.
8 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9
10 This software is distributed WITHOUT ANY WARRANTY; without even
11 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12 PURPOSE. See the above copyright notice for more information.
13
14=========================================================================*/
32
33#ifndef vtkShaderProperty_h
34#define vtkShaderProperty_h
35
36#include "vtkNew.h" // For iVars
37#include "vtkObject.h"
38#include "vtkRenderingCoreModule.h" // For export macro
39
40class vtkUniforms;
41
42class VTKRENDERINGCORE_EXPORT vtkShaderProperty : public vtkObject
43{
44public:
46 void PrintSelf(ostream& os, vtkIndent indent) override;
47
52
57
69
71
80 vtkSetStringMacro(VertexShaderCode);
81 vtkGetStringMacro(VertexShaderCode);
82 vtkSetStringMacro(FragmentShaderCode);
83 vtkGetStringMacro(FragmentShaderCode);
84 vtkSetStringMacro(GeometryShaderCode);
85 vtkGetStringMacro(GeometryShaderCode);
87
89
94 vtkGetObjectMacro(VertexCustomUniforms, vtkUniforms);
97
99
106 virtual void AddVertexShaderReplacement(const std::string& originalValue,
107 bool replaceFirst, // do this replacement before the default
108 const std::string& replacementValue, bool replaceAll) = 0;
109 virtual void AddFragmentShaderReplacement(const std::string& originalValue,
110 bool replaceFirst, // do this replacement before the default
111 const std::string& replacementValue, bool replaceAll) = 0;
112 virtual void AddGeometryShaderReplacement(const std::string& originalValue,
113 bool replaceFirst, // do this replacement before the default
114 const std::string& replacementValue, bool replaceAll) = 0;
116 virtual std::string GetNthShaderReplacementTypeAsString(vtkIdType index) = 0;
117 virtual void GetNthShaderReplacement(vtkIdType index, std::string& name, bool& replaceFirst,
118 std::string& replacementValue, bool& replaceAll) = 0;
120 const std::string& originalValue, bool replaceFirst) = 0;
122 const std::string& originalValue, bool replaceFirst) = 0;
124 const std::string& originalValue, bool replaceFirst) = 0;
128 virtual void ClearAllShaderReplacements() = 0;
130
131protected:
134
138
142
143private:
144 vtkShaderProperty(const vtkShaderProperty&) = delete;
145 void operator=(const vtkShaderProperty&) = delete;
146};
147
148#endif
a simple class to control print indentation
Definition vtkIndent.h:40
Allocate and hold a VTK object.
Definition vtkNew.h:62
bool HasFragmentShaderCode()
Allow the program to set the shader codes used directly instead of using the built in templates.
void DeepCopy(vtkShaderProperty *p)
Assign one property to another.
virtual int GetNumberOfShaderReplacements()=0
This function enables you to apply your own substitutions to the shader creation process.
~vtkShaderProperty() override
vtkMTimeType GetShaderMTime()
GetShaderMTime returns the last time a modification was made that affected the code of the shader (ei...
virtual void ClearGeometryShaderReplacement(const std::string &originalValue, bool replaceFirst)=0
This function enables you to apply your own substitutions to the shader creation process.
virtual void ClearAllGeometryShaderReplacements()=0
This function enables you to apply your own substitutions to the shader creation process.
virtual void ClearAllFragmentShaderReplacements()=0
This function enables you to apply your own substitutions to the shader creation process.
virtual void ClearAllVertexShaderReplacements()=0
This function enables you to apply your own substitutions to the shader creation process.
virtual void AddVertexShaderReplacement(const std::string &originalValue, bool replaceFirst, const std::string &replacementValue, bool replaceAll)=0
This function enables you to apply your own substitutions to the shader creation process.
bool HasGeometryShaderCode()
Allow the program to set the shader codes used directly instead of using the built in templates.
virtual void AddGeometryShaderReplacement(const std::string &originalValue, bool replaceFirst, const std::string &replacementValue, bool replaceAll)=0
This function enables you to apply your own substitutions to the shader creation process.
vtkNew< vtkUniforms > GeometryCustomUniforms
bool HasVertexShaderCode()
Allow the program to set the shader codes used directly instead of using the built in templates.
virtual void ClearAllShaderReplacements()=0
This function enables you to apply your own substitutions to the shader creation process.
virtual void ClearFragmentShaderReplacement(const std::string &originalValue, bool replaceFirst)=0
This function enables you to apply your own substitutions to the shader creation process.
vtkNew< vtkUniforms > FragmentCustomUniforms
virtual void GetNthShaderReplacement(vtkIdType index, std::string &name, bool &replaceFirst, std::string &replacementValue, bool &replaceAll)=0
This function enables you to apply your own substitutions to the shader creation process.
virtual std::string GetNthShaderReplacementTypeAsString(vtkIdType index)=0
This function enables you to apply your own substitutions to the shader creation process.
virtual void AddFragmentShaderReplacement(const std::string &originalValue, bool replaceFirst, const std::string &replacementValue, bool replaceAll)=0
This function enables you to apply your own substitutions to the shader creation process.
vtkNew< vtkUniforms > VertexCustomUniforms
static vtkShaderProperty * New()
Construct object with no shader replacements.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual void ClearVertexShaderReplacement(const std::string &originalValue, bool replaceFirst)=0
This function enables you to apply your own substitutions to the shader creation process.
helper class to set custom uniform variables in GPU shaders.
Definition vtkUniforms.h:43
int vtkIdType
Definition vtkType.h:332
vtkTypeUInt32 vtkMTimeType
Definition vtkType.h:287