Cortex
10.0.0-a4
|
#include <ShaderStateComponent.h>
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 |
ShaderLoader * | shaderLoader () |
TextureLoader * | textureLoader () |
IECore::MurmurHash | hash () const |
Returns a hash to uniquely identify this shader state. | |
Shader::Setup * | shaderSetup () |
const Shader::Setup * | shaderSetup () const |
void | addParametersToShaderSetup (Shader::Setup *shaderSetup) const |
![]() | |
IE_CORE_DECLARERUNTIMETYPEDEXTENSION (IECoreGL::StateComponent, StateComponentTypeId, Bindable) | |
![]() | |
IE_CORE_DECLARERUNTIMETYPEDEXTENSION (IECoreGL::Bindable, BindableTypeId, 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 |
![]() | |
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 | |
![]() | |
typedef RefCounted | BaseClass |
A typedef for the class this class derives from. All RunTimeTyped classes define this typedef. | |
![]() | |
typedef size_t | RefCount |
![]() | |
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. | |
![]() | |
typedef std::map< TypeId, TypeId > | BaseTypeRegistryMap |
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, TypeId > | TypeNamesToTypeIdsMap |
![]() | |
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 Mutex | g_baseTypeIdsMutex |
static Mutex | g_derivedTypeIdsMutex |
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.
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().
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.
|
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.