VTK
|
The ShaderProgram uses one or more Shader objects. More...
#include <vtkShaderProgram.h>
Classes | |
struct | cmp_str |
Public Types | |
enum | NormalizeOption { Normalize, NoNormalize } |
Options for attribute normalization. More... | |
typedef vtkObject | Superclass |
Public Member Functions | |
virtual int | IsA (const char *type) |
Return 1 if this class is the same type of (or a subclass of) the named class. More... | |
vtkShaderProgram * | NewInstance () const |
void | PrintSelf (ostream &os, vtkIndent indent) |
Methods invoked by print to print information about the object including superclasses. More... | |
std::string | GetMD5Hash () const |
Set/Get the md5 hash of this program. More... | |
void | SetMD5Hash (const std::string &hash) |
bool | isBound () const |
Check if the program is currently bound, or not. More... | |
void | ReleaseGraphicsResources (vtkWindow *win) |
release any graphics resources this class is using. More... | |
int | GetHandle () const |
Get the handle of the shader program. More... | |
std::string | GetError () const |
Get the error message (empty if none) for the shader program. More... | |
bool | EnableAttributeArray (const char *name) |
Enable the named attribute array. More... | |
bool | DisableAttributeArray (const char *name) |
Disable the named attribute array. More... | |
bool | UseAttributeArray (const char *name, int offset, size_t stride, int elementType, int elementTupleSize, NormalizeOption normalize) |
Use the named attribute array with the bound BufferObject. More... | |
template<class T > | |
bool | SetAttributeArray (const char *name, const T &array, int tupleSize, NormalizeOption normalize) |
Upload the supplied array of tightly packed values to the named attribute. More... | |
bool | SetUniformi (const char *name, int v) |
Set the name uniform value to int v . More... | |
bool | SetUniformf (const char *name, float v) |
bool | SetUniform2i (const char *name, const int v[2]) |
bool | SetUniform2f (const char *name, const float v[2]) |
bool | SetUniform3f (const char *name, const float v[3]) |
bool | SetUniform4f (const char *name, const float v[4]) |
bool | SetUniform3uc (const char *name, const unsigned char v[3]) |
bool | SetUniform4uc (const char *name, const unsigned char v[4]) |
bool | SetUniformMatrix (const char *name, vtkMatrix3x3 *v) |
bool | SetUniformMatrix (const char *name, vtkMatrix4x4 *v) |
bool | SetUniformMatrix3x3 (const char *name, float *v) |
bool | SetUniformMatrix4x4 (const char *name, float *v) |
bool | SetUniform1iv (const char *name, const int count, const int *f) |
Set the name uniform array to f with count elements. More... | |
bool | SetUniform1fv (const char *name, const int count, const float *f) |
bool | SetUniform2fv (const char *name, const int count, const float(*f)[2]) |
bool | SetUniform3fv (const char *name, const int count, const float(*f)[3]) |
bool | SetUniform4fv (const char *name, const int count, const float(*f)[4]) |
bool | SetUniformMatrix4x4v (const char *name, const int count, float *v) |
virtual void | SetNumberOfOutputs (unsigned int) |
bool | IsUniformUsed (const char *) |
methods to inquire as to what uniforms/attributes are used by this shader. More... | |
bool | IsAttributeUsed (const char *name) |
Return true if the compiled and linked shader has an attribute matching name. More... | |
virtual vtkShader * | GetVertexShader () |
Get the vertex shader for this program. More... | |
void | SetVertexShader (vtkShader *) |
Get the vertex shader for this program. More... | |
virtual vtkShader * | GetFragmentShader () |
Get the fragment shader for this program. More... | |
void | SetFragmentShader (vtkShader *) |
Get the fragment shader for this program. More... | |
virtual vtkShader * | GetGeometryShader () |
Get the geometry shader for this program. More... | |
void | SetGeometryShader (vtkShader *) |
Get the geometry shader for this program. More... | |
virtual vtkTransformFeedback * | GetTransformFeedback () |
Get/Set a TransformFeedbackCapture object on this shader program. More... | |
void | SetTransformFeedback (vtkTransformFeedback *tfc) |
Get/Set a TransformFeedbackCapture object on this shader program. More... | |
virtual bool | GetCompiled () |
Set/Get flag for if this program is compiled. More... | |
virtual void | SetCompiled (bool) |
Set/Get flag for if this program is compiled. More... | |
virtual void | CompiledOn () |
Set/Get flag for if this program is compiled. More... | |
virtual void | CompiledOff () |
Set/Get flag for if this program is compiled. More... | |
Public Member Functions inherited from vtkObject | |
vtkBaseTypeMacro (vtkObject, vtkObjectBase) | |
virtual void | DebugOn () |
Turn debugging output on. More... | |
virtual void | DebugOff () |
Turn debugging output off. More... | |
bool | GetDebug () |
Get the value of the debug flag. More... | |
void | SetDebug (bool debugFlag) |
Set the value of the debug flag. More... | |
virtual void | Modified () |
Update the modification time for this object. More... | |
virtual vtkMTimeType | GetMTime () |
Return this object's modified time. More... | |
void | RemoveObserver (unsigned long tag) |
void | RemoveObservers (unsigned long event) |
void | RemoveObservers (const char *event) |
void | RemoveAllObservers () |
int | HasObserver (unsigned long event) |
int | HasObserver (const char *event) |
int | InvokeEvent (unsigned long event) |
int | InvokeEvent (const char *event) |
unsigned long | AddObserver (unsigned long event, vtkCommand *, float priority=0.0f) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. More... | |
unsigned long | AddObserver (const char *event, vtkCommand *, float priority=0.0f) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. More... | |
vtkCommand * | GetCommand (unsigned long tag) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. More... | |
void | RemoveObserver (vtkCommand *) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. More... | |
void | RemoveObservers (unsigned long event, vtkCommand *) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. More... | |
void | RemoveObservers (const char *event, vtkCommand *) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. More... | |
int | HasObserver (unsigned long event, vtkCommand *) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. More... | |
int | HasObserver (const char *event, vtkCommand *) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. More... | |
template<class U , class T > | |
unsigned long | AddObserver (unsigned long event, U observer, void(T::*callback)(), float priority=0.0f) |
Overloads to AddObserver that allow developers to add class member functions as callbacks for events. More... | |
template<class U , class T > | |
unsigned long | AddObserver (unsigned long event, U observer, void(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f) |
Overloads to AddObserver that allow developers to add class member functions as callbacks for events. More... | |
template<class U , class T > | |
unsigned long | AddObserver (unsigned long event, U observer, bool(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f) |
Allow user to set the AbortFlagOn() with the return value of the callback method. More... | |
int | InvokeEvent (unsigned long event, void *callData) |
This method invokes an event and return whether the event was aborted or not. More... | |
int | InvokeEvent (const char *event, void *callData) |
This method invokes an event and return whether the event was aborted or not. More... | |
Public Member Functions inherited from vtkObjectBase | |
const char * | GetClassName () const |
Return the class name as a string. More... | |
virtual void | Delete () |
Delete a VTK object. More... | |
virtual void | FastDelete () |
Delete a reference to this object. More... | |
void | InitializeObjectBase () |
void | Print (ostream &os) |
Print an object to an ostream. More... | |
virtual void | Register (vtkObjectBase *o) |
Increase the reference count (mark as used by another object). More... | |
virtual void | UnRegister (vtkObjectBase *o) |
Decrease the reference count (release by another object). More... | |
int | GetReferenceCount () |
Return the current reference count of this object. More... | |
void | SetReferenceCount (int) |
Sets the reference count. More... | |
void | PrintRevisions (ostream &) |
Legacy. More... | |
virtual void | PrintHeader (ostream &os, vtkIndent indent) |
Methods invoked by print to print information about the object including superclasses. More... | |
virtual void | PrintTrailer (ostream &os, vtkIndent indent) |
Methods invoked by print to print information about the object including superclasses. More... | |
Static Public Member Functions | |
static vtkShaderProgram * | New () |
static int | IsTypeOf (const char *type) |
static vtkShaderProgram * | SafeDownCast (vtkObjectBase *o) |
static bool | Substitute (std::string &source, const std::string &search, const std::string &replace, bool all=true) |
perform in place string substitutions, indicate if a substitution was done this is useful for building up shader strings which typically involve lots of string substitutions. More... | |
Static Public Member Functions inherited from vtkObject | |
static vtkObject * | New () |
Create an object with Debug turned off, modified time initialized to zero, and reference counting on. More... | |
static void | BreakOnError () |
This method is called when vtkErrorMacro executes. More... | |
static void | SetGlobalWarningDisplay (int val) |
This is a global flag that controls whether any debug, warning or error messages are displayed. More... | |
static void | GlobalWarningDisplayOn () |
This is a global flag that controls whether any debug, warning or error messages are displayed. More... | |
static void | GlobalWarningDisplayOff () |
This is a global flag that controls whether any debug, warning or error messages are displayed. More... | |
static int | GetGlobalWarningDisplay () |
This is a global flag that controls whether any debug, warning or error messages are displayed. More... | |
Static Public Member Functions inherited from vtkObjectBase | |
static vtkTypeBool | IsTypeOf (const char *name) |
Return 1 if this class type is the same type of (or a subclass of) the named class. More... | |
static vtkObjectBase * | New () |
Create an object with Debug turned off, modified time initialized to zero, and reference counting on. More... | |
Protected Member Functions | |
virtual vtkObjectBase * | NewInstanceInternal () const |
vtkShaderProgram () | |
~vtkShaderProgram () | |
bool | AttachShader (const vtkShader *shader) |
Attach the supplied shader to this program. More... | |
bool | DetachShader (const vtkShader *shader) |
Detach the supplied shader from this program. More... | |
virtual int | CompileShader () |
Compile this shader program and attached shaders. More... | |
bool | Link () |
Attempt to link the shader program. More... | |
bool | Bind () |
Bind the program in order to use it. More... | |
void | Release () |
Releases the shader program from the current context. More... | |
bool | SetAttributeArrayInternal (const char *name, void *buffer, int type, int tupleSize, NormalizeOption normalize) |
void | ClearMaps () |
Protected Member Functions inherited from vtkObject | |
vtkObject () | |
~vtkObject () override | |
void | RegisterInternal (vtkObjectBase *, vtkTypeBool check) override |
void | UnRegisterInternal (vtkObjectBase *, vtkTypeBool check) override |
void | InternalGrabFocus (vtkCommand *mouseEvents, vtkCommand *keypressEvents=NULL) |
These methods allow a command to exclusively grab all events. More... | |
void | InternalReleaseFocus () |
These methods allow a command to exclusively grab all events. More... | |
Protected Member Functions inherited from vtkObjectBase | |
vtkObjectBase () | |
virtual | ~vtkObjectBase () |
virtual void | CollectRevisions (ostream &) |
virtual void | ReportReferences (vtkGarbageCollector *) |
vtkObjectBase (const vtkObjectBase &) | |
void | operator= (const vtkObjectBase &) |
Protected Attributes | |
vtkShader * | VertexShader |
vtkShader * | FragmentShader |
vtkShader * | GeometryShader |
vtkTransformFeedback * | TransformFeedback |
std::string | MD5Hash |
int | Handle |
int | VertexShaderHandle |
int | FragmentShaderHandle |
int | GeometryShaderHandle |
bool | Linked |
bool | Bound |
bool | Compiled |
unsigned int | NumberOfOutputs |
std::string | Error |
std::map< const char *, int, cmp_str > | AttributeLocs |
std::map< const char *, int, cmp_str > | UniformLocs |
Protected Attributes inherited from vtkObject | |
bool | Debug |
vtkTimeStamp | MTime |
vtkSubjectHelper * | SubjectHelper |
Protected Attributes inherited from vtkObjectBase | |
vtkAtomicInt32 | ReferenceCount |
vtkWeakPointerBase ** | WeakPointers |
Friends | |
class | vtkOpenGLShaderCache |
class | VertexArrayObject |
The ShaderProgram uses one or more Shader objects.
a glsl shader program
This class creates a Vertex or Fragment shader, that can be attached to a ShaderProgram in order to render geometry etc.
This class contains the vertex, fragment, geometry shaders that combine to make a shader program
Definition at line 44 of file vtkShaderProgram.h.
Definition at line 48 of file vtkShaderProgram.h.
Options for attribute normalization.
Definition at line 100 of file vtkShaderProgram.h.
|
protected |
|
protected |
|
static |
|
static |
|
virtual |
Return 1 if this class is the same type of (or a subclass of) the named class.
Returns 0 otherwise. This method works in combination with vtkTypeMacro found in vtkSetGet.h.
Reimplemented from vtkObjectBase.
|
static |
|
protectedvirtual |
vtkShaderProgram* vtkShaderProgram::NewInstance | ( | ) | const |
|
virtual |
|
virtual |
Get the vertex shader for this program.
void vtkShaderProgram::SetVertexShader | ( | vtkShader * | ) |
Get the vertex shader for this program.
|
virtual |
Get the fragment shader for this program.
void vtkShaderProgram::SetFragmentShader | ( | vtkShader * | ) |
Get the fragment shader for this program.
|
virtual |
Get the geometry shader for this program.
void vtkShaderProgram::SetGeometryShader | ( | vtkShader * | ) |
Get the geometry shader for this program.
|
virtual |
Get/Set a TransformFeedbackCapture object on this shader program.
void vtkShaderProgram::SetTransformFeedback | ( | vtkTransformFeedback * | tfc | ) |
Get/Set a TransformFeedbackCapture object on this shader program.
|
virtual |
Set/Get flag for if this program is compiled.
|
virtual |
Set/Get flag for if this program is compiled.
|
virtual |
Set/Get flag for if this program is compiled.
|
virtual |
Set/Get flag for if this program is compiled.
|
inline |
Set/Get the md5 hash of this program.
Definition at line 95 of file vtkShaderProgram.h.
|
inline |
Definition at line 96 of file vtkShaderProgram.h.
|
inline |
Check if the program is currently bound, or not.
Definition at line 119 of file vtkShaderProgram.h.
void vtkShaderProgram::ReleaseGraphicsResources | ( | vtkWindow * | win | ) |
release any graphics resources this class is using.
|
inline |
Get the handle of the shader program.
Definition at line 127 of file vtkShaderProgram.h.
|
inline |
Get the error message (empty if none) for the shader program.
Definition at line 130 of file vtkShaderProgram.h.
bool vtkShaderProgram::EnableAttributeArray | ( | const char * | name | ) |
Enable the named attribute array.
Return false if the attribute array is not contained in the linked shader program.
bool vtkShaderProgram::DisableAttributeArray | ( | const char * | name | ) |
Disable the named attribute array.
Return false if the attribute array is not contained in the linked shader program.
bool vtkShaderProgram::UseAttributeArray | ( | const char * | name, |
int | offset, | ||
size_t | stride, | ||
int | elementType, | ||
int | elementTupleSize, | ||
NormalizeOption | normalize | ||
) |
Use the named attribute array with the bound BufferObject.
name | of the attribute (as seen in the shader program). |
offset | into the bound BufferObject. |
stride | The stride of the element access (i.e. the size of each element in the currently bound BufferObject). 0 may be used to indicate tightly packed data. |
elementType | Tag identifying the memory representation of the element. |
elementTupleSize | The number of elements per vertex (e.g. a 3D position attribute would be 3). |
normalize | Indicates the range used by the attribute data. See NormalizeOption for more information. |
bool vtkShaderProgram::SetAttributeArray | ( | const char * | name, |
const T & | array, | ||
int | tupleSize, | ||
NormalizeOption | normalize | ||
) |
Upload the supplied array of tightly packed values to the named attribute.
BufferObject attributes should be preferred and this may be removed in future.
name | Attribute name |
array | Container of data. See note. |
tupleSize | The number of elements per vertex, e.g. a 3D coordinate array will have a tuple size of 3. |
normalize | Indicates the range used by the attribute data. See NormalizeOption for more information. |
bool vtkShaderProgram::SetUniformi | ( | const char * | name, |
int | v | ||
) |
Set the name
uniform value to int v
.
bool vtkShaderProgram::SetUniformf | ( | const char * | name, |
float | v | ||
) |
bool vtkShaderProgram::SetUniform2i | ( | const char * | name, |
const int | v[2] | ||
) |
bool vtkShaderProgram::SetUniform2f | ( | const char * | name, |
const float | v[2] | ||
) |
bool vtkShaderProgram::SetUniform3f | ( | const char * | name, |
const float | v[3] | ||
) |
bool vtkShaderProgram::SetUniform4f | ( | const char * | name, |
const float | v[4] | ||
) |
bool vtkShaderProgram::SetUniform3uc | ( | const char * | name, |
const unsigned char | v[3] | ||
) |
bool vtkShaderProgram::SetUniform4uc | ( | const char * | name, |
const unsigned char | v[4] | ||
) |
bool vtkShaderProgram::SetUniformMatrix | ( | const char * | name, |
vtkMatrix3x3 * | v | ||
) |
bool vtkShaderProgram::SetUniformMatrix | ( | const char * | name, |
vtkMatrix4x4 * | v | ||
) |
bool vtkShaderProgram::SetUniformMatrix3x3 | ( | const char * | name, |
float * | v | ||
) |
bool vtkShaderProgram::SetUniformMatrix4x4 | ( | const char * | name, |
float * | v | ||
) |
Set the name
uniform array to f
with count
elements.
|
virtual |
|
static |
perform in place string substitutions, indicate if a substitution was done this is useful for building up shader strings which typically involve lots of string substitutions.
Return true if a substitution was done.
bool vtkShaderProgram::IsUniformUsed | ( | const char * | ) |
methods to inquire as to what uniforms/attributes are used by this shader.
This can save some compute time if the uniforms or attributes are expensive to compute
bool vtkShaderProgram::IsAttributeUsed | ( | const char * | name | ) |
Return true if the compiled and linked shader has an attribute matching name.
|
protected |
Attach the supplied shader to this program.
|
protected |
Detach the supplied shader from this program.
|
protectedvirtual |
Compile this shader program and attached shaders.
|
protected |
Attempt to link the shader program.
|
protected |
Bind the program in order to use it.
If the program has not been linked then link() will be called.
|
protected |
Releases the shader program from the current context.
|
protected |
|
protected |
|
friend |
Definition at line 258 of file vtkShaderProgram.h.
|
friend |
Definition at line 332 of file vtkShaderProgram.h.
|
protected |
Definition at line 298 of file vtkShaderProgram.h.
|
protected |
Definition at line 299 of file vtkShaderProgram.h.
|
protected |
Definition at line 300 of file vtkShaderProgram.h.
|
protected |
Definition at line 301 of file vtkShaderProgram.h.
|
protected |
Definition at line 304 of file vtkShaderProgram.h.
|
protected |
Definition at line 309 of file vtkShaderProgram.h.
|
protected |
Definition at line 310 of file vtkShaderProgram.h.
|
protected |
Definition at line 311 of file vtkShaderProgram.h.
|
protected |
Definition at line 312 of file vtkShaderProgram.h.
|
protected |
Definition at line 314 of file vtkShaderProgram.h.
|
protected |
Definition at line 315 of file vtkShaderProgram.h.
|
protected |
Definition at line 316 of file vtkShaderProgram.h.
|
protected |
Definition at line 322 of file vtkShaderProgram.h.
|
protected |
Definition at line 324 of file vtkShaderProgram.h.
Definition at line 329 of file vtkShaderProgram.h.
Definition at line 330 of file vtkShaderProgram.h.