VTK
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes
vtkGLSLShader Class Reference

GLSL Shader. More...

#include <vtkGLSLShader.h>

Inheritance diagram for vtkGLSLShader:
[legend]
Collaboration diagram for vtkGLSLShader:
[legend]

List of all members.

Public Types

typedef vtkShader Superclass
- Public Types inherited from vtkShader
- Public Types inherited from vtkObject

Public Member Functions

virtual const char * GetClassName ()
virtual int IsA (const char *type)
void PrintSelf (ostream &os, vtkIndent indent)
virtual int Compile ()
unsigned int GetHandle ()
virtual void SetProgram (unsigned int)
virtual unsigned int GetProgram ()
- Public Member Functions inherited from vtkShader
virtual void PassShaderVariables (vtkActor *actor, vtkRenderer *ren)
virtual void Bind ()
virtual void Unbind ()
int HasShaderVariable (const char *name)
int GetShaderVariableSize (const char *name)
int GetShaderVariableType (const char *name)
void SetXMLShader (vtkXMLShader *)
virtual vtkXMLShaderGetXMLShader ()
void AddShaderVariable (const char *name, int num_of_elements, const int *values)
void AddShaderVariable (const char *name, int num_of_elements, const float *values)
void AddShaderVariable (const char *name, int num_of_elements, const double *values)
int GetShaderVariable (const char *name, int *values)
int GetShaderVariable (const char *name, float *values)
int GetShaderVariable (const char *name, double *values)
int GetScope ()
- Public Member Functions inherited from vtkObject
virtual void DebugOn ()
virtual void DebugOff ()
unsigned char GetDebug ()
void SetDebug (unsigned char debugFlag)
virtual void Modified ()
virtual unsigned long GetMTime ()
unsigned long AddObserver (unsigned long event, vtkCommand *, float priority=0.0f)
unsigned long AddObserver (const char *event, vtkCommand *, float priority=0.0f)
vtkCommandGetCommand (unsigned long tag)
void RemoveObserver (vtkCommand *)
void RemoveObservers (unsigned long event, vtkCommand *)
void RemoveObservers (const char *event, vtkCommand *)
int HasObserver (unsigned long event, vtkCommand *)
int HasObserver (const char *event, vtkCommand *)
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)
template<class U , class T >
unsigned long AddObserver (unsigned long event, U observer, void(T::*callback)(), float priority=0.0f)
template<class U , class T >
unsigned long AddObserver (unsigned long event, U observer, void(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f)
int InvokeEvent (unsigned long event, void *callData)
int InvokeEvent (const char *event, void *callData)
int InvokeEvent (unsigned long event)
int InvokeEvent (const char *event)
- Public Member Functions inherited from vtkObjectBase
const char * GetClassName () const
virtual void Delete ()
virtual void FastDelete ()
void Print (ostream &os)
virtual void Register (vtkObjectBase *o)
virtual void UnRegister (vtkObjectBase *o)
void SetReferenceCount (int)
void PrintRevisions (ostream &os)
virtual void PrintHeader (ostream &os, vtkIndent indent)
virtual void PrintTrailer (ostream &os, vtkIndent indent)
int GetReferenceCount ()

Static Public Member Functions

static vtkGLSLShaderNew ()
static int IsTypeOf (const char *type)
static vtkGLSLShaderSafeDownCast (vtkObject *o)

Protected Member Functions

int IsShader ()
int IsCompiled ()
void LoadShader ()
virtual void SetSamplerParameter (const char *name, vtkTexture *texture, int textureIndex)
virtual void SetUniformParameter (const char *name, int numValues, const int *value)
virtual void SetUniformParameter (const char *name, int numValues, const float *value)
virtual void SetUniformParameter (const char *name, int numValues, const double *value)
virtual void SetMatrixParameter (const char *name, int numValues, int order, const float *value)
virtual void SetMatrixParameter (const char *name, int numValues, int order, const double *value)
virtual void SetMatrixParameter (const char *name, const char *state_matix_type, const char *transform_type)
- Protected Member Functions inherited from vtkShader
void SetUniformParameter (vtkActor *, vtkRenderer *, vtkXMLDataElement *)
void SetCameraParameter (vtkActor *, vtkRenderer *, vtkXMLDataElement *)
void SetPropertyParameter (vtkActor *, vtkRenderer *, vtkXMLDataElement *)
void SetLightParameter (vtkActor *, vtkRenderer *, vtkXMLDataElement *)
void SetMatrixParameter (vtkActor *, vtkRenderer *, vtkXMLDataElement *)
void SetSamplerParameter (vtkActor *, vtkRenderer *, vtkXMLDataElement *)
void SetApplicationParameter (vtkXMLDataElement *)
virtual void SetShaderParameters (vtkActor *, vtkRenderer *, vtkXMLDataElement *)
 vtkShader ()
 ~vtkShader ()
- Protected Member Functions inherited from vtkObject
 vtkObject ()
virtual ~vtkObject ()
virtual void RegisterInternal (vtkObjectBase *, int check)
virtual void UnRegisterInternal (vtkObjectBase *, int check)
void InternalGrabFocus (vtkCommand *mouseEvents, vtkCommand *keypressEvents=NULL)
void InternalReleaseFocus ()
- Protected Member Functions inherited from vtkObjectBase
 vtkObjectBase ()
virtual ~vtkObjectBase ()
virtual void CollectRevisions (ostream &os)
virtual void ReportReferences (vtkGarbageCollector *)
 vtkObjectBase (const vtkObjectBase &)
void operator= (const vtkObjectBase &)

Protected Attributes

unsigned int Program
unsigned int Shader
- Protected Attributes inherited from vtkShader
vtkXMLShaderXMLShader
vtkShaderInternals * Internals
vtkTimeStamp PassShaderVariablesTime
- Protected Attributes inherited from vtkObject
unsigned char Debug
vtkTimeStamp MTime
vtkSubjectHelper * SubjectHelper
- Protected Attributes inherited from vtkObjectBase
int ReferenceCount
vtkWeakPointerBase ** WeakPointers
virtual void ReleaseGraphicsResources (vtkWindow *)
 vtkGLSLShader ()
virtual ~vtkGLSLShader ()

Additional Inherited Members

- Protected Types inherited from vtkShader
enum  MatrixOrders { RowMajor, ColumnMajor }

Detailed Description

GLSL Shader.

vtkGLSLShader is a concrete class that creates and compiles hardware shaders written in the OpenGL Shadering Language (GLSL, OpenGL2.0). While step linking a vertex and a fragment shader is performed by vtkGLSLShaderProgram, all shader parameters are initialized in this class.

vtkOpenGLExtensionManager:
All OpenGL calls are made through vtkOpenGLExtensionManager.
Supported Basic Shader Types::
Scalar Types uniform float uniform int uniform int – boolean scalar not yet tested
Supported Basic Shader Types::
Vector Types: uniform vec{2|3|4} uniform ivec{2|3|4} uniform bvec{2|3|4} – boolean vector not yet tested
Supported Basic Shader Types::
Matrix Types: uniform mat{2|3|4}
Supported Basic Shader Types::
Texture Samplers: sample1D – Not yet implemented in this cless. sample2D – Not yet implemented in this class. sample3D – Not yet implemented in this class. sampler1DShadow – Not yet implemented in this class. sampler1DShadow – Not yet implemented in this class.
Supported Basic Shader Types::
User-Defined structures: uniform struct NOTE: these must be defined and declared outside of the 'main' shader function.
Thanks:
Shader support in VTK includes key contributions by Gary Templet at Sandia National Labs.

Definition at line 87 of file vtkGLSLShader.h.


Member Typedef Documentation

Reimplemented from vtkShader.

Definition at line 91 of file vtkGLSLShader.h.


Constructor & Destructor Documentation

vtkGLSLShader::vtkGLSLShader ( )
protected

Release any graphics resources that are being consumed by this actor. The parameter window could be used to determine which graphic resources to release.

virtual vtkGLSLShader::~vtkGLSLShader ( )
protectedvirtual

Release any graphics resources that are being consumed by this actor. The parameter window could be used to determine which graphic resources to release.


Member Function Documentation

static vtkGLSLShader* vtkGLSLShader::New ( )
static

Create an object with Debug turned off, modified time initialized to zero, and reference counting on.

Reimplemented from vtkObject.

virtual const char* vtkGLSLShader::GetClassName ( )
virtual

Reimplemented from vtkShader.

static int vtkGLSLShader::IsTypeOf ( const char *  name)
static

Return 1 if this class type 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 vtkShader.

virtual int vtkGLSLShader::IsA ( const char *  name)
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 vtkShader.

static vtkGLSLShader* vtkGLSLShader::SafeDownCast ( vtkObject o)
static

Reimplemented from vtkShader.

void vtkGLSLShader::PrintSelf ( ostream &  os,
vtkIndent  indent 
)
virtual

Methods invoked by print to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.

Reimplemented from vtkShader.

virtual int vtkGLSLShader::Compile ( )
virtual

Called to compile the shader code. The subclasses must only compile the code in this method. Returns if the compile was successful. Subclasses should compile the code only if it was not already compiled.

Implements vtkShader.

unsigned int vtkGLSLShader::GetHandle ( )
inline

The vtkGLSLShaderProgram needs the shader handle for attaching.

Definition at line 101 of file vtkGLSLShader.h.

virtual void vtkGLSLShader::SetProgram ( unsigned  int)
virtual

The Shader needs the id of the ShaderProgram to obtain uniform variable locations. This is set by vtkGLSLShaderProgram.

virtual unsigned int vtkGLSLShader::GetProgram ( )
virtual

The Shader needs the id of the ShaderProgram to obtain uniform variable locations. This is set by vtkGLSLShaderProgram.

virtual void vtkGLSLShader::ReleaseGraphicsResources ( vtkWindow )
virtual

Release any graphics resources that are being consumed by this actor. The parameter window could be used to determine which graphic resources to release.

Reimplemented from vtkShader.

int vtkGLSLShader::IsShader ( )
protected
int vtkGLSLShader::IsCompiled ( )
protected
void vtkGLSLShader::LoadShader ( )
protected

Create an empty Shader context.

virtual void vtkGLSLShader::SetUniformParameter ( const char *  name,
int  numValues,
const int *  value 
)
protectedvirtual

Equivalent to cgGLSetParameter and glUniform.

Implements vtkShader.

virtual void vtkGLSLShader::SetUniformParameter ( const char *  name,
int  numValues,
const float *  value 
)
protectedvirtual

Equivalent to cgGLSetParameter and glUniform.

Implements vtkShader.

virtual void vtkGLSLShader::SetUniformParameter ( const char *  name,
int  numValues,
const double *  value 
)
protectedvirtual

Equivalent to cgGLSetParameter and glUniform.

Implements vtkShader.

virtual void vtkGLSLShader::SetMatrixParameter ( const char *  name,
int  numValues,
int  order,
const float *  value 
)
protectedvirtual

Equivalent to cgGLSetMatrixParameterfc and glUniformMatrix.

Implements vtkShader.

virtual void vtkGLSLShader::SetMatrixParameter ( const char *  name,
int  numValues,
int  order,
const double *  value 
)
protectedvirtual

Equivalent to cgGLSetMatrixParameterfc and glUniformMatrix.

Implements vtkShader.

virtual void vtkGLSLShader::SetMatrixParameter ( const char *  name,
const char *  state_matix_type,
const char *  transform_type 
)
protectedvirtual

Equivalent to cgGLSetMatrixParameterfc and glUniformMatrix.

Implements vtkShader.

virtual void vtkGLSLShader::SetSamplerParameter ( const char *  name,
vtkTexture texture,
int  textureIndex 
)
protectedvirtual

Establishes the given texture as the uniform sampler to perform lookups on. The textureIndex argument corresponds to the indices of the textures in a vtkProperty. Subclass may have to cast the texture to vtkOpenGLTexture to obtain the GLuint for texture this texture. Subclasses must override these and perform GLSL or Cg calls.

Implements vtkShader.


Member Data Documentation

unsigned int vtkGLSLShader::Program
protected

Definition at line 121 of file vtkGLSLShader.h.

unsigned int vtkGLSLShader::Shader
protected

Definition at line 122 of file vtkGLSLShader.h.


The documentation for this class was generated from the following file: