opensurgsim
Public Member Functions | Protected Member Functions | List of all members
SurgSim::Graphics::OsgProgram Class Reference

OSG-based implementation of a graphics shader. More...

#include <OsgProgram.h>

Inheritance diagram for SurgSim::Graphics::OsgProgram:
SurgSim::Graphics::Program SurgSim::Framework::Asset SurgSim::Framework::Accessible SurgSim::Framework::FactoryBase< Asset >

Public Member Functions

 OsgProgram ()
 Constructor. More...
 
 SURGSIM_CLASSNAME (SurgSim::Graphics::OsgProgram)
 
bool hasVertexShader () const override
 
void clearVertexShader () override
 Removes the vertex shader, returning that portion of the shader program to fixed-function.
 
bool loadVertexShader (const std::string &filePath) override
 Loads the vertex shader source code from a file. More...
 
void setVertexShaderSource (const std::string &source) override
 Set the vertex shader source code. More...
 
bool getVertexShaderSource (std::string *source) const override
 Gets the vertex shader source code. More...
 
bool hasGeometryShader () const override
 
void clearGeometryShader () override
 Removes the geometry shader, returning that portion of the shader program to fixed-function.
 
bool loadGeometryShader (const std::string &filePath) override
 Loads the geometry shader source code from a file. More...
 
void setGeometryShaderSource (const std::string &source) override
 Set the geometry shader source code. More...
 
bool getGeometryShaderSource (std::string *source) const override
 Gets the geometry shader source code. More...
 
bool hasFragmentShader () const override
 
void clearFragmentShader () override
 
bool loadFragmentShader (const std::string &filePath) override
 Loads the fragment shader source code from a file. More...
 
void setFragmentShaderSource (const std::string &source) override
 Set the fragment shader source code. More...
 
bool getFragmentShaderSource (std::string *source) const override
 Gets the fragment shader source code. More...
 
void setGlobalScope (bool val) override
 When this is set to true, this shader should be used instead of other shaders that might apply, depending on the hierarchy that is set out. More...
 
bool isGlobalScope () const override
 Query if this shader is of global scope. More...
 
osg::ref_ptr< osg::Program > getOsgProgram () const
 
void addToStateSet (osg::StateSet *stateSet)
 Adds this shader to the OSG state set. More...
 
void removeFromStateSet (osg::StateSet *stateSet)
 Removes this uniform from the OSG state set. More...
 
- Public Member Functions inherited from SurgSim::Graphics::Program
virtual ~Program ()=0
 Destructor.
 
virtual void clear ()
 Clears the entire shader, returning to fixed-function pipeline.
 
- Public Member Functions inherited from SurgSim::Framework::Asset
 Asset ()
 Constructor.
 
 Asset (const Asset &rhs)
 Copy Constructor.
 
virtual ~Asset ()
 Destructor.
 
void load (const std::string &fileName, const SurgSim::Framework::ApplicationData &data)
 Load a file with given name using 'data' as look up path(s). More...
 
void load (const std::string &fileName)
 Overloaded function using SurgSim::Framework::Runtime::getApplicationData() as look up path(s). More...
 
std::string getFileName () const
 Return the name of file loaded by this class. More...
 
virtual std::string getClassName () const =0
 Support serialization with a classname. More...
 
- Public Member Functions inherited from SurgSim::Framework::Accessible
 Accessible ()
 Default Constructor.
 
 ~Accessible ()
 Destructor.
 
template<class T >
getValue (const std::string &name) const
 Retrieves the value with the name by executing the getter if it is found and tries to convert it to the given type. More...
 
boost::any getValue (const std::string &name) const
 Retrieves the value with the name by executing the getter if it is found. More...
 
template<class T >
bool getValue (const std::string &name, T *value) const
 Retrieves the value with the name by executing the getter if it is found, and converts it to the type of the output parameter. More...
 
void setValue (const std::string &name, const boost::any &value)
 Sets a value of a property that has setter. More...
 
bool isReadable (const std::string &name) const
 Check whether a property is readable. More...
 
bool isWriteable (const std::string &name) const
 Check whether a property is writable. More...
 
void setGetter (const std::string &name, GetterType func)
 Sets a getter for a given property. More...
 
void setSetter (const std::string &name, SetterType func)
 Sets a setter for a given property. More...
 
void setAccessors (const std::string &name, GetterType getter, SetterType setter)
 Sets the accessors getter and setter in one function. More...
 
void removeAccessors (const std::string &name)
 Removes all the accessors (getter and setter) for a given property. More...
 
void forwardProperty (const std::string &name, const Accessible &target, const std::string &targetProperty)
 Adds a property with the given name that uses the targets accessors, in effect forwarding the value to the target. More...
 
void setSerializable (const std::string &name, EncoderType encoder, DecoderType decoder)
 Sets the functions used to convert data from and to a YAML::Node. More...
 
void setDecoder (const std::string &name, DecoderType decoder)
 Sets the functions used to convert data from a YAML::Node. More...
 
YAML::Node encode () const
 Encode this Accessible to a YAML::Node. More...
 
void decode (const YAML::Node &node, const std::vector< std::string > &ignoredProperties=std::vector< std::string >())
 Decode this Accessible from a YAML::Node, will throw an exception if the data type cannot be converted. More...
 
std::vector< std::string > getProperties ()
 
template<>
boost::any getValue (const std::string &name) const
 

Protected Member Functions

bool doLoad (const std::string &filePath) override
 Derived classes will overwrite this method to do actual loading. More...
 

Additional Inherited Members

- Public Types inherited from SurgSim::Framework::Accessible
typedef std::function< boost::any(void)> GetterType
 
typedef std::function< void(boost::any)> SetterType
 
typedef std::function< YAML::Node(void)> EncoderType
 
typedef std::function< void(const YAML::Node *)> DecoderType
 
- Public Types inherited from SurgSim::Framework::FactoryBase< Asset >
typedef ObjectFactory< AssetFactoryType
 
- Static Public Member Functions inherited from SurgSim::Framework::FactoryBase< Asset >
static FactoryTypegetFactory ()
 

Detailed Description

OSG-based implementation of a graphics shader.

Wraps an osg::Program which manages the geometry, vertex, and fragment shaders. The osg::Program is added to the osg::StateSet of an osg::Node to use the shaders for the rendering of that node's geometry.

Constructor & Destructor Documentation

§ OsgProgram()

SurgSim::Graphics::OsgProgram::OsgProgram ( )

Constructor.

Postcondition
No shader code is set, so the fixed-function pipeline is used.

Member Function Documentation

§ addToStateSet()

void SurgSim::Graphics::OsgProgram::addToStateSet ( osg::StateSet *  stateSet)

Adds this shader to the OSG state set.

Parameters
stateSetOSG state set

§ clearFragmentShader()

void SurgSim::Graphics::OsgProgram::clearFragmentShader ( )
overridevirtual
Returns
the fragment shader, returning that portion of the shader program to fixed-function.

Implements SurgSim::Graphics::Program.

§ doLoad()

bool SurgSim::Graphics::OsgProgram::doLoad ( const std::string &  filePath)
overrideprotectedvirtual

Derived classes will overwrite this method to do actual loading.

Note
This method is not required to do any check on the validity or the existence of the file.
Parameters
filePathAbsolute path to the file.
Returns
True if loading is successful; Otherwise, false.

Implements SurgSim::Framework::Asset.

§ getFragmentShaderSource()

bool SurgSim::Graphics::OsgProgram::getFragmentShaderSource ( std::string *  source) const
overridevirtual

Gets the fragment shader source code.

Returns
Shader source code

Implements SurgSim::Graphics::Program.

§ getGeometryShaderSource()

bool SurgSim::Graphics::OsgProgram::getGeometryShaderSource ( std::string *  source) const
overridevirtual

Gets the geometry shader source code.

Returns
Shader source code

Implements SurgSim::Graphics::Program.

§ getOsgProgram()

osg::ref_ptr< osg::Program > SurgSim::Graphics::OsgProgram::getOsgProgram ( ) const
Returns
the OSG program attribute

§ getVertexShaderSource()

bool SurgSim::Graphics::OsgProgram::getVertexShaderSource ( std::string *  source) const
overridevirtual

Gets the vertex shader source code.

Returns
Shader source code

Implements SurgSim::Graphics::Program.

§ hasFragmentShader()

bool SurgSim::Graphics::OsgProgram::hasFragmentShader ( ) const
overridevirtual
Returns
true if the fragment shader has been set, otherwise false.

Implements SurgSim::Graphics::Program.

§ hasGeometryShader()

bool SurgSim::Graphics::OsgProgram::hasGeometryShader ( ) const
overridevirtual
Returns
true if the geometry shader has been set, otherwise false.

Implements SurgSim::Graphics::Program.

§ hasVertexShader()

bool SurgSim::Graphics::OsgProgram::hasVertexShader ( ) const
overridevirtual
Returns
true if the vertex shader has been set, otherwise false.

Implements SurgSim::Graphics::Program.

§ isGlobalScope()

bool SurgSim::Graphics::OsgProgram::isGlobalScope ( ) const
overridevirtual

Query if this shader is of global scope.

Returns
true if global scope, false if not.

Implements SurgSim::Graphics::Program.

§ loadFragmentShader()

bool SurgSim::Graphics::OsgProgram::loadFragmentShader ( const std::string &  filePath)
overridevirtual

Loads the fragment shader source code from a file.

Parameters
filePathPath to file containing shader source code
Returns
True if the source is successfully loaded, otherwise false.

Implements SurgSim::Graphics::Program.

§ loadGeometryShader()

bool SurgSim::Graphics::OsgProgram::loadGeometryShader ( const std::string &  filePath)
overridevirtual

Loads the geometry shader source code from a file.

Parameters
filePathPath to file containing shader source code
Returns
True if the source is successfully loaded, otherwise false.

Implements SurgSim::Graphics::Program.

§ loadVertexShader()

bool SurgSim::Graphics::OsgProgram::loadVertexShader ( const std::string &  filePath)
overridevirtual

Loads the vertex shader source code from a file.

Parameters
filePathPath to file containing shader source code
Returns
True if the source is successfully loaded, otherwise false.

Implements SurgSim::Graphics::Program.

§ removeFromStateSet()

void SurgSim::Graphics::OsgProgram::removeFromStateSet ( osg::StateSet *  stateSet)

Removes this uniform from the OSG state set.

Parameters
stateSetOSG state set

§ setFragmentShaderSource()

void SurgSim::Graphics::OsgProgram::setFragmentShaderSource ( const std::string &  source)
overridevirtual

Set the fragment shader source code.

Parameters
sourceShader source code

Implements SurgSim::Graphics::Program.

§ setGeometryShaderSource()

void SurgSim::Graphics::OsgProgram::setGeometryShaderSource ( const std::string &  source)
overridevirtual

Set the geometry shader source code.

Parameters
sourceShader source code

Implements SurgSim::Graphics::Program.

§ setGlobalScope()

void SurgSim::Graphics::OsgProgram::setGlobalScope ( bool  val)
overridevirtual

When this is set to true, this shader should be used instead of other shaders that might apply, depending on the hierarchy that is set out.

E.g if this shader is on a camera, the shaders that occur in a group attached to that camera will be overridden. This will usually be used in conjunction with

See also
RenderPass.
Parameters
valIf true the shader should override shaders in lower levels.

Implements SurgSim::Graphics::Program.

§ setVertexShaderSource()

void SurgSim::Graphics::OsgProgram::setVertexShaderSource ( const std::string &  source)
overridevirtual

Set the vertex shader source code.

Parameters
sourceShader source code

Implements SurgSim::Graphics::Program.


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