Cortex  10.0.0-a4
Public Member Functions | List of all members
IECoreGL::ShaderStateComponent Class Reference

#include <ShaderStateComponent.h>

+ Inheritance diagram for IECoreGL::ShaderStateComponent:

Public Member Functions

 IE_CORE_DECLARERUNTIMETYPEDEXTENSION (IECoreGL::ShaderStateComponent, ShaderStateComponentTypeId, StateComponent)
 
 ShaderStateComponent ()
 Default constructor creates a facing ratio shader.
 
 ShaderStateComponent (ShaderLoaderPtr shaderLoader, TextureLoaderPtr textureLoader, const std::string &vertexSource, const std::string &geometrySource, const std::string &fragmentSource, IECore::ConstCompoundObjectPtr parameterValues)
 
 ~ShaderStateComponent () override
 Destructor.
 
void bind () const override
 
ShaderLoadershaderLoader ()
 
TextureLoadertextureLoader ()
 
IECore::MurmurHash hash () const
 Returns a hash to uniquely identify this shader state.
 
Shader::SetupshaderSetup ()
 
const Shader::SetupshaderSetup () const
 
void addParametersToShaderSetup (Shader::Setup *shaderSetup) const
 
- Public Member Functions inherited from IECoreGL::StateComponent
 IE_CORE_DECLARERUNTIMETYPEDEXTENSION (IECoreGL::StateComponent, StateComponentTypeId, Bindable)
 
- Public Member Functions inherited from IECoreGL::Bindable
 IE_CORE_DECLARERUNTIMETYPEDEXTENSION (IECoreGL::Bindable, BindableTypeId, IECore::RunTimeTyped)
 
- Public Member Functions inherited from IECore::RunTimeTyped
 IE_CORE_DECLAREMEMBERPTR (RunTimeTyped)
 
virtual TypeId typeId () const
 
virtual const char * typeName () const
 
virtual bool isInstanceOf (TypeId typeId) const
 
virtual bool isInstanceOf (const char *typeName) const
 
- Public Member Functions inherited from IECore::RefCounted
 IE_CORE_DECLAREMEMBERPTR (RefCounted)
 
void addRef () const
 Add a reference to the current object.
 
void removeRef () const
 Remove a reference from the current object.
 
RefCount refCount () const
 Returns the current reference count.
 

Additional Inherited Members

- Public Types inherited from IECore::RunTimeTyped
typedef RefCounted BaseClass
 A typedef for the class this class derives from. All RunTimeTyped classes define this typedef.
 
- Public Types inherited from IECore::RefCounted
typedef size_t RefCount
 
- Static Public Member Functions inherited from IECore::RunTimeTyped
static TypeId staticTypeId ()
 Returns the TypeId for this class, without needing an instance.
 
static const char * staticTypeName ()
 Returns the type name for this class, without needing an instance.
 
static TypeId baseTypeId ()
 
static const char * baseTypeName ()
 
static bool inheritsFrom (TypeId typeId)
 Returns true if this class inherits from the specified type.
 
static bool inheritsFrom (const char *typeName)
 Returns true if this class inherits from the specified type.
 
static bool inheritsFrom (TypeId type, TypeId baseType)
 Returns true if type inherits from baseType.
 
static bool inheritsFrom (const char *typeName, const char *baseTypeName)
 Returns true if typeName inherits from baseTypeName.
 
static TypeId baseTypeId (TypeId typeId)
 Returns the base type of the given type, or InvalidTypeId if no such base exists.
 
static const std::vector< TypeId > & baseTypeIds (TypeId typeId)
 
static const std::set< TypeId > & derivedTypeIds (TypeId typeId)
 
static TypeId typeIdFromTypeName (const char *typeName)
 
static const char * typeNameFromTypeId (TypeId typeId)
 
static void registerType (TypeId derivedTypeId, const char *derivedTypeName, TypeId baseTypeId)
 Allows external modules to register their own type ids.
 
- Protected Types inherited from IECore::RunTimeTyped
typedef std::map< TypeId, TypeIdBaseTypeRegistryMap
 
typedef std::map< TypeId, std::vector< TypeId > > BaseTypesRegistryMap
 
typedef std::map< TypeId, std::set< TypeId > > DerivedTypesRegistryMap
 
typedef tbb::spin_rw_mutex Mutex
 
typedef std::map< TypeId, std::string > TypeIdsToTypeNamesMap
 
typedef std::map< std::string, TypeIdTypeNamesToTypeIdsMap
 
- Static Protected Member Functions inherited from IECore::RunTimeTyped
static BaseTypeRegistryMap & baseTypeRegistry ()
 
static DerivedTypesRegistryMap & derivedTypesRegistry ()
 
static BaseTypesRegistryMap & completeBaseTypesRegistry ()
 
static DerivedTypesRegistryMap & completeDerivedTypesRegistry ()
 
static void derivedTypeIdsWalk (TypeId typeId, std::set< TypeId > &)
 
static TypeIdsToTypeNamesMap & typeIdsToTypeNames ()
 
static TypeNamesToTypeIdsMap & typeNamesToTypeIds ()
 
- Static Protected Attributes inherited from IECore::RunTimeTyped
static Mutex g_baseTypeIdsMutex
 
static Mutex g_derivedTypeIdsMutex
 

Detailed Description

The ShaderStateComponent class represents a Shader object and a set of associated parameter values. It derives from StateComponent and therefore can be used to apply Shaders to Primitives within a Group or Scene.

Todo:
Allow this to specify texture filtering and wrap modes.

Constructor & Destructor Documentation

IECoreGL::ShaderStateComponent::ShaderStateComponent ( ShaderLoaderPtr  shaderLoader,
TextureLoaderPtr  textureLoader,
const std::string &  vertexSource,
const std::string &  geometrySource,
const std::string &  fragmentSource,
IECore::ConstCompoundObjectPtr  parameterValues 
)

Creates a ShaderStateComponent with the given source and parameters. The loaders are passed to allow the creation of GL resources to be deferred until shaderSetup() is called - this makes it possible to create ShaderStateComponents concurrently in multiple threads, with the actual GL resource creation deferred until the drawing thread uses shaderSetup().

Member Function Documentation

void IECoreGL::ShaderStateComponent::addParametersToShaderSetup ( Shader::Setup shaderSetup) const

Adds the parameters this StateComponent holds to the specified setup - this can be of use when Primitives wish to use a modified shader to take advantage of custom vertex or geometry shaders. There is no need to call this for setups retrieved using the shaderSetup() method above - that will have been done automatically.

void IECoreGL::ShaderStateComponent::bind ( ) const
overridevirtual

Implemented to do nothing - it is the responsibility of the Primitive to actually bind the shaderSetup() at an appropriate time.

Implements IECoreGL::Bindable.

Shader::Setup* IECoreGL::ShaderStateComponent::shaderSetup ( )

Returns a Shader::Setup object for binding the shader. This function can only be called from a thread with a valid GL context.


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