SurgSim::Graphics::OsgMaterial Class Reference

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

`#include <SurgSim/Graphics/OsgMaterial.h>`

Inheritance diagram for SurgSim::Graphics::OsgMaterial:

## Public Member Functions

| OsgMaterial (const std::string &name)
| Constructor. More...
| SURGSIM_CLASSNAME (SurgSim::Graphics::OsgMaterial)
void | addUniform (std::shared_ptr< UniformBase > uniform) override
| Adds a uniform to this material. More...
void | addUniform (const std::string &type, const std::string &name) override
| Adds a GLSL typed uniform to this material. More...
void | addUniform (const std::string &type, const std::string &name, const boost::any &value)
| Adds and a uniform to this material and set its value. More...
bool | removeUniform (std::shared_ptr< UniformBase > uniform) override
| Removes a uniform from this material. More...
bool | removeUniform (const std::string &name) override
| Removes a uniform from this material. More...
size_t | getNumUniforms () const override
| Returns the number of uniforms in this material. More...
std::shared_ptr< UniformBase > | getUniform (size_t index) const override
| Gets a uniform in this material. More...
std::shared_ptr< UniformBase > | getUniform (const std::string &name) const override
| Gets a uniform in this material. More...
bool | hasUniform (const std::string &name) const override
| Checks if this material has a uniform with the given name. More...
bool | setProgram (std::shared_ptr< Program > program) override
| Sets the shader used by this material. More...
std::shared_ptr< Program > | getProgram () const override
| Gets the program used by this material. More...
void | clearProgram () override
| Removes the shader from the material, falling back to fixed-function pipeline. More...
osg::ref_ptr< osg::StateSet > | getOsgStateSet () const
bool | doInitialize () override
| Interface to be implemented by derived classes. More...
bool | doWakeUp () override
| Interface to be implemented by derived classes. More...
Public Member Functions inherited from SurgSim::Graphics::Material
| Material (const std::string &name)
| Constructor. More...
virtual | ~Material ()
| Destructor. More...
Public Member Functions inherited from SurgSim::Framework::Component
| Component (const std::string &name)
| Constructor. More...
virtual | ~Component ()
| Destructor. More...
std::string | getName () const
| Gets component name. More...
std::string | getFullName () const
| Gets a string containing the name of the Component and (if it has one) its SceneElement. More...
void | setName (const std::string &name)
| Sets the name of component. More...
boost::uuids::uuid | getUuid () const
| Gets the id of the component. More...
bool | isInitialized () const
bool | initialize (const std::weak_ptr< Runtime > &runtime)
| Initialize this component, this needs to be called before wakeUp() can be called. More...
bool | isAwake () const
bool | wakeUp ()
| Wakeup this component, this will be called when the component is inserted into the ComponentManager that is responsible for handling this component. More...
void | retire ()
| Retire this component, this will be called when the component is removed from the ComponentManager that is responsible for handling this component. More...
void | setScene (std::weak_ptr< Scene > scene)
| Sets the scene. More...
std::shared_ptr< Scene > | getScene ()
| Gets the scene. More...
void | setSceneElement (std::weak_ptr< SceneElement > sceneElement)
| Sets the scene element. More...
std::shared_ptr< SceneElement > | getSceneElement ()
| Gets the scene element. More...
std::shared_ptr< const SceneElement > | getSceneElement () const
| Gets the scene element, constant version. More...
std::shared_ptr< Runtime > | getRuntime () const
| Get the runtime which contains this component. More...
virtual std::string | getClassName () const
| The class name for this class, this being the base class it should return SurgSim::Framework::Component but this would make missing implemenentations of this hard to catch, therefore this calls SURGSIM_FAILURE. More...
std::shared_ptr< Component > | getSharedPtr ()
| Gets a shared pointer to this component. More...
virtual void | doRetire ()
| Interface to be implemented by derived classes Has a default implementation, does nothing. More...
bool | isActive () const
virtual void | setLocalActive (bool val)
| Set the component's active state. More...
bool | isLocalActive () const
Public Member Functions inherited from SurgSim::Framework::Accessible
| Accessible ()
| Default Constructor. More...
| ~Accessible ()
| Destructor. More...
template<class T >
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...
template<>
boost::any | getValue (const std::string &name) const

## Private Attributes

osg::ref_ptr< osg::StateSet > | m_stateSet
| OSG state set which provides material properties in the scenegraph. More...
std::vector< std::shared_ptr< OsgUniformBase > > | m_uniforms
| Uniforms used by this material. More...
std::shared_ptr< OsgProgram > | m_program
| Shader used by this material. 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::FactoryBase1< Component, std::string >
typedef ObjectFactory1< Component, std::string > | FactoryType
Static Public Member Functions inherited from SurgSim::Framework::FactoryBase1< Component, std::string >
static FactoryType & | getFactory ()
Protected Member Functions inherited from SurgSim::Framework::Component
virtual std::shared_ptr< PoseComponent > | getPoseComponent ()
| Get the PoseComponent for this component. More...
virtual std::shared_ptr< const PoseComponent > | getPoseComponent () const
| Get the PoseComponent for this component, constant access. More...

## Detailed Description

OSG-based implementation of a graphics material.

Wraps an osg::StateSet which is applied to the osg::Node of the Representation that is assigned this material.

Note
  Only uniforms that subclass OsgUniformBase and shaders that subclass OsgShader can be assigned to this material.

See also
  OsgUniformBase
  OsgShader

## Constructor & Destructor Documentation

## OsgMaterial()

SurgSim::Graphics::OsgMaterial::OsgMaterial | ( | const std::string & | name | ) |

explicit

Constructor.

Postcondition
  The material has no uniforms and no shader.

## Member Function Documentation

## addUniform() [1/3]

void SurgSim::Graphics::OsgMaterial::addUniform | ( | std::shared_ptr< UniformBase > | uniform | ) |

override virtual

Adds a uniform to this material.

Parameters

  uniform | Uniform to add

Note
  OsgMaterial only accepts subclasses of OsgUniformBase

Implements SurgSim::Graphics::Material.

## addUniform() [2/3]

void SurgSim::Graphics::OsgMaterial::addUniform | ( | const std::string & | type,
|  | const std::string & | name
| ) |  |

override virtual

Adds a GLSL typed uniform to this material.

Parameters

  type | the type of the uniform
  name | the name that this uniform should have

Implements SurgSim::Graphics::Material.

## addUniform() [3/3]

void SurgSim::Graphics::OsgMaterial::addUniform | ( | const std::string & | type,
|  | const std::string & | name,
|  | const boost::any & | value
| ) |  |

Adds and a uniform to this material and set its value.

Parameters

  type | the type of the uniform
  name | Name used in shader code to access this uniform
  value | The value for this uniform

## clearProgram()

void SurgSim::Graphics::OsgMaterial::clearProgram | ( |  | ) |

override virtual

Removes the shader from the material, falling back to fixed-function pipeline.

Implements SurgSim::Graphics::Material.

## doInitialize()

bool SurgSim::Graphics::OsgMaterial::doInitialize | ( |  | ) |

override virtual

Interface to be implemented by derived classes.

Returns
  True if component is initialized successfully; otherwise, false.

Implements SurgSim::Framework::Component.

## doWakeUp()

bool SurgSim::Graphics::OsgMaterial::doWakeUp | ( |  | ) |

override virtual

Interface to be implemented by derived classes.

Returns
  True if component is woken up successfully; otherwise, false.

Implements SurgSim::Framework::Component.

## getNumUniforms()

size_t SurgSim::Graphics::OsgMaterial::getNumUniforms | ( |  | ) | const

override virtual

Returns the number of uniforms in this material.

Implements SurgSim::Graphics::Material.

## getOsgStateSet()

osg::ref_ptr< osg::StateSet > SurgSim::Graphics::OsgMaterial::getOsgStateSet | ( |  | ) | const

Returns
  the OSG state set with the material properties

## getProgram()

std::shared_ptr< Program > SurgSim::Graphics::OsgMaterial::getProgram | ( |  | ) | const

override virtual

Gets the program used by this material.

Returns
  Shader program.

Implements SurgSim::Graphics::Material.

## getUniform() [1/2]

std::shared_ptr< UniformBase > SurgSim::Graphics::OsgMaterial::getUniform | ( | size_t | index | ) | const

override virtual

Gets a uniform in this material.

Parameters

  index | Index of the uniform in the material's list of uniforms

Returns
  Uniform at the index

Implements SurgSim::Graphics::Material.

## getUniform() [2/2]

std::shared_ptr< UniformBase > SurgSim::Graphics::OsgMaterial::getUniform | ( | const std::string & | name | ) | const

override virtual

Gets a uniform in this material.

Parameters

  name | The name of the Uniform to fetch.

Returns
  The uniform, nullptr if the uniform does not exist.

Implements SurgSim::Graphics::Material.

## hasUniform()

bool SurgSim::Graphics::OsgMaterial::hasUniform | ( | const std::string & | name | ) | const

override virtual

Checks if this material has a uniform with the given name.

Parameters

  name | The name of the Uniform to check.

Returns
  true if the uniform is in the material, false otherwise.

Implements SurgSim::Graphics::Material.

## removeUniform() [1/2]

bool SurgSim::Graphics::OsgMaterial::removeUniform | ( | std::shared_ptr< UniformBase > | uniform | ) |

override virtual

Removes a uniform from this material.

Parameters

  uniform | Uniform to remove

Returns
  True if uniform was removed successfully, otherwise false

Note
  OsgMaterial only accepts subclasses of OsgUniformBase

Implements SurgSim::Graphics::Material.

## removeUniform() [2/2]

bool SurgSim::Graphics::OsgMaterial::removeUniform | ( | const std::string & | name | ) |

override virtual

Removes a uniform from this material.

Parameters

  name | Uniform to remove.

Returns
  True if uniform was removed successfully, otherwise false.

Implements SurgSim::Graphics::Material.

## setProgram()

bool SurgSim::Graphics::OsgMaterial::setProgram | ( | std::shared_ptr< Program > | program | ) |

override virtual

Sets the shader used by this material.

Parameters

  program | Shader program

Returns
  True if program was set successfully, otherwise false

Note
  OsgMaterial only accepts subclasses of OsgProgram

Implements SurgSim::Graphics::Material.

## SURGSIM_CLASSNAME()

SurgSim::Graphics::OsgMaterial::SURGSIM_CLASSNAME | ( | SurgSim::Graphics::OsgMaterial |  | ) |

## Member Data Documentation

## m_program

std::shared_ptr<OsgProgram> SurgSim::Graphics::OsgMaterial::m_program

private

Shader used by this material.

## m_stateSet

osg::ref_ptr<osg::StateSet> SurgSim::Graphics::OsgMaterial::m_stateSet

private

OSG state set which provides material properties in the scenegraph.

## m_uniforms

std::vector<std::shared_ptr<OsgUniformBase> > SurgSim::Graphics::OsgMaterial::m_uniforms

private

Uniforms used by this material.

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

- SurgSim/Graphics/OsgMaterial.h
- SurgSim/Graphics/OsgMaterial.cpp