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

#include <vtkShaderProgram.h>

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

List of all members.

Public Types

typedef vtkObject Superclass
- 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 vtkXMLMaterialGetMaterial ()
virtual void SetMaterial (vtkXMLMaterial *)
int AddShader (vtkShader *shader)
void RemoveShader (int index)
void RemoveShader (vtkShader *shader)
vtkCollectionIteratorNewShaderIterator ()
int GetNumberOfShaders ()
virtual void ReadMaterial ()
virtual void Render (vtkActor *, vtkRenderer *)=0
virtual void PostRender (vtkActor *, vtkRenderer *)
virtual void ReleaseGraphicsResources (vtkWindow *)
virtual void AddShaderVariable (const char *name, int numVars, int *x)
virtual void AddShaderVariable (const char *name, int numVars, float *x)
virtual void AddShaderVariable (const char *name, int numVars, double *x)
virtual vtkShaderDeviceAdapterGetShaderDeviceAdapter ()
- 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 int IsTypeOf (const char *type)
static vtkShaderProgramSafeDownCast (vtkObject *o)
static vtkShaderProgramCreateShaderProgram (int type)
- Static Public Member Functions inherited from vtkObject
static vtkObjectNew ()
static void BreakOnError ()
static void SetGlobalWarningDisplay (int val)
static void GlobalWarningDisplayOn ()
static void GlobalWarningDisplayOff ()
static int GetGlobalWarningDisplay ()

Protected Member Functions

 vtkShaderProgram ()
 ~vtkShaderProgram ()
virtual void SetGLExtensionsLoaded (int)
virtual int GetGLExtensionsLoaded ()
virtual void LoadExtensions (vtkRenderWindow *)
void SetShaderDeviceAdapter (vtkShaderDeviceAdapter *)
- 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

vtkXMLMaterialMaterial
vtkCollectionShaderCollection
vtkCollectionIteratorShaderCollectionIterator
int GLExtensionsLoaded
- Protected Attributes inherited from vtkObject
unsigned char Debug
vtkTimeStamp MTime
vtkSubjectHelper * SubjectHelper
- Protected Attributes inherited from vtkObjectBase
int ReferenceCount
vtkWeakPointerBase ** WeakPointers
virtual vtkShaderNewShader ()=0

Additional Inherited Members


Detailed Description

vtkShaderProgram is a superclass for managing Hardware Shaders defined in the XML Material file and interfacing VTK to those shaders. It's concrete descendants are responsible for installing vertex and fragment programs to the graphics hardware.

Shader Operations are shader library operations that are performed:
on individual shaders, that is, without consideration of the partner shader.
Program Operations are shader library operations that treat the :
vertex and fragment shader as a single unit.
Design:
This class is a Strategy pattern for 'Program' operations, which treat vertex/fragment shader pairs as a single 'Program', as required by some shader libraries (GLSL). Typically, 'Shader' operations are delegated to instances of vtkShader (managed by descendants of this class) while 'Program' operations are handled by descendants of this class, vtkCgShaderProgram, vtkGLSLShaderProgram.
See also:
vtkCgShaderProgram, vtkGLSLShaderProgram
Thanks:
Shader support in VTK includes key contributions by Gary Templet at Sandia National Labs.

Definition at line 69 of file vtkShaderProgram.h.


Member Typedef Documentation

Reimplemented from vtkObject.

Reimplemented in vtkCgShaderProgram, and vtkGLSLShaderProgram.

Definition at line 72 of file vtkShaderProgram.h.


Constructor & Destructor Documentation

vtkShaderProgram::vtkShaderProgram ( )
protected
vtkShaderProgram::~vtkShaderProgram ( )
protected

Member Function Documentation

virtual const char* vtkShaderProgram::GetClassName ( )
virtual

Reimplemented from vtkObject.

Reimplemented in vtkCgShaderProgram, and vtkGLSLShaderProgram.

static int vtkShaderProgram::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 vtkObject.

Reimplemented in vtkCgShaderProgram, and vtkGLSLShaderProgram.

virtual int vtkShaderProgram::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 vtkObject.

Reimplemented in vtkCgShaderProgram, and vtkGLSLShaderProgram.

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

Reimplemented from vtkObject.

Reimplemented in vtkCgShaderProgram, and vtkGLSLShaderProgram.

void vtkShaderProgram::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 vtkObject.

Reimplemented in vtkCgShaderProgram, and vtkGLSLShaderProgram.

virtual vtkXMLMaterial* vtkShaderProgram::GetMaterial ( )
virtual
virtual void vtkShaderProgram::SetMaterial ( vtkXMLMaterial )
virtual
int vtkShaderProgram::AddShader ( vtkShader shader)
void vtkShaderProgram::RemoveShader ( int  index)

Remove a shader at the given index.

void vtkShaderProgram::RemoveShader ( vtkShader shader)

Removes the given shader.

vtkCollectionIterator* vtkShaderProgram::NewShaderIterator ( )

Returns a new iterator to iterate over the shaders.

int vtkShaderProgram::GetNumberOfShaders ( )

Returns the number of shaders available in this shader program.

static vtkShaderProgram* vtkShaderProgram::CreateShaderProgram ( int  type)
static
virtual void vtkShaderProgram::ReadMaterial ( )
virtual
virtual void vtkShaderProgram::Render ( vtkActor ,
vtkRenderer  
)
pure virtual
virtual void vtkShaderProgram::AddShaderVariable ( const char *  name,
int  numVars,
int *  x 
)
virtual

Provide values to initialize shader variables. This is a conduit to initialize shader variables that change over time, useful for animation, gui widget inputs, etc. name - hardware name of the uniform variable numVars - number of variables being set x - values

virtual void vtkShaderProgram::AddShaderVariable ( const char *  name,
int  numVars,
float *  x 
)
virtual

Provide values to initialize shader variables. This is a conduit to initialize shader variables that change over time, useful for animation, gui widget inputs, etc. name - hardware name of the uniform variable numVars - number of variables being set x - values

virtual void vtkShaderProgram::AddShaderVariable ( const char *  name,
int  numVars,
double *  x 
)
virtual

Provide values to initialize shader variables. This is a conduit to initialize shader variables that change over time, useful for animation, gui widget inputs, etc. name - hardware name of the uniform variable numVars - number of variables being set x - values

virtual void vtkShaderProgram::PostRender ( vtkActor ,
vtkRenderer  
)
virtual

Called to unload the shaders after the actor has been rendered.

Reimplemented in vtkGLSLShaderProgram.

virtual void vtkShaderProgram::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 in vtkGLSLShaderProgram.

virtual vtkShaderDeviceAdapter* vtkShaderProgram::GetShaderDeviceAdapter ( )
virtual

Get the vtkShaderDeviceAdapter which can be used to execute this shader program.

virtual void vtkShaderProgram::SetGLExtensionsLoaded ( int  )
protectedvirtual
virtual int vtkShaderProgram::GetGLExtensionsLoaded ( )
protectedvirtual
virtual void vtkShaderProgram::LoadExtensions ( vtkRenderWindow )
inlineprotectedvirtual

Reimplemented in vtkGLSLShaderProgram.

Definition at line 147 of file vtkShaderProgram.h.

void vtkShaderProgram::SetShaderDeviceAdapter ( vtkShaderDeviceAdapter )
protected
virtual vtkShader* vtkShaderProgram::NewShader ( )
protectedpure virtual

Must be overloaded by subclasses to create the shader of appropriate type.

Implemented in vtkGLSLShaderProgram, and vtkCgShaderProgram.


Member Data Documentation

vtkXMLMaterial* vtkShaderProgram::Material
protected

Definition at line 140 of file vtkShaderProgram.h.

vtkCollection* vtkShaderProgram::ShaderCollection
protected

Definition at line 141 of file vtkShaderProgram.h.

vtkCollectionIterator* vtkShaderProgram::ShaderCollectionIterator
protected

Definition at line 142 of file vtkShaderProgram.h.

int vtkShaderProgram::GLExtensionsLoaded
protected

Definition at line 145 of file vtkShaderProgram.h.


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