MaterialX 1.39.1
Loading...
Searching...
No Matches
ShaderMaterial Class Referenceabstract

Abstract class for shader generation and rendering of a ShaderMaterial. More...

#include <ShaderMaterial.h>

Inheritance diagram for ShaderMaterial:
GlslMaterial

Public Member Functions

void setDocument (DocumentPtr doc)
 Set the renderable element associated with this ShaderMaterial.
 
DocumentPtr getDocument () const
 Return the document associated with this ShaderMaterial.
 
void setElement (TypedElementPtr val)
 Set the renderable element associated with this ShaderMaterial.
 
TypedElementPtr getElement () const
 Return the renderable element associated with this ShaderMaterial.
 
void setMaterialNode (NodePtr node)
 Set the ShaderMaterial node associated with this ShaderMaterial.
 
NodePtr getMaterialNode () const
 Return the ShaderMaterial node associated with this ShaderMaterial.
 
void setUdim (const std::string &val)
 Set udim identifier.
 
const std::string & getUdim ()
 Get any associated udim identifier.
 
virtual bool loadSource (const FilePath &vertexShaderFile, const FilePath &pixelShaderFile, bool hasTransparency)=0
 Load shader source from file. More...
 
virtual bool generateShader (GenContext &context)=0
 Generate a shader from our currently stored element and the given generator context. More...
 
virtual void copyShader (MaterialPtr ShaderMaterial)=0
 Copies shader and API specific generated program from ShaderMaterial to this one. More...
 
virtual bool generateShader (ShaderPtr hwShader)=0
 Generate a shader from the given hardware shader. More...
 
virtual bool generateEnvironmentShader (GenContext &context, const FilePath &filename, DocumentPtr stdLib, const FilePath &imagePath)
 Generate an environment background shader.
 
ShaderPtr getShader () const
 Return the underlying hardware shader.
 
bool hasTransparency () const
 Return true if this ShaderMaterial has transparency.
 
virtual bool bindShader () const =0
 Bind shader. More...
 
virtual void bindViewInformation (CameraPtr camera)=0
 Bind viewing information for this ShaderMaterial. More...
 
virtual void bindImages (ImageHandlerPtr imageHandler, const FileSearchPath &searchPath, bool enableMipmaps=true)=0
 Bind all images for this ShaderMaterial. More...
 
virtual void unbindImages (ImageHandlerPtr imageHandler)=0
 Unbbind all images for this ShaderMaterial. More...
 
virtual ImagePtr bindImage (const FilePath &filePath, const std::string &uniformName, ImageHandlerPtr imageHandler, const ImageSamplingProperties &samplingProperties)=0
 Bind a single image. More...
 
virtual void bindLighting (LightHandlerPtr lightHandler, ImageHandlerPtr imageHandler, const ShadowState &shadowState)=0
 Bind lights to shader. More...
 
virtual void bindMesh (MeshPtr mesh)=0
 Bind the given mesh to this ShaderMaterial. More...
 
virtual bool bindPartition (MeshPartitionPtr part) const =0
 Bind a mesh partition to this ShaderMaterial. More...
 
virtual void drawPartition (MeshPartitionPtr part) const =0
 Draw the given mesh partition. More...
 
virtual void unbindGeometry ()=0
 Unbind all geometry from this ShaderMaterial. More...
 
virtual VariableBlockgetPublicUniforms () const =0
 Return the block of public uniforms for this ShaderMaterial. More...
 
virtual ShaderPortfindUniform (const std::string &path) const =0
 Find a public uniform from its MaterialX path. More...
 
virtual void modifyUniform (const std::string &path, ConstValuePtr value, std::string valueString=EMPTY_STRING)=0
 Modify the value of the uniform with the given path. More...
 

Protected Member Functions

virtual void clearShader ()=0
 

Protected Attributes

ShaderPtr _hwShader
 
MeshPtr _boundMesh
 
DocumentPtr _doc
 
TypedElementPtr _elem
 
NodePtr _materialNode
 
std::string _udim
 
bool _hasTransparency
 
ImageVec _boundImages
 

Detailed Description

Abstract class for shader generation and rendering of a ShaderMaterial.

Member Function Documentation

◆ bindImage()

virtual ImagePtr bindImage ( const FilePath filePath,
const std::string &  uniformName,
ImageHandlerPtr  imageHandler,
const ImageSamplingProperties samplingProperties 
)
pure virtual

Bind a single image.

Implemented in GlslMaterial.

◆ bindImages()

virtual void bindImages ( ImageHandlerPtr  imageHandler,
const FileSearchPath searchPath,
bool  enableMipmaps = true 
)
pure virtual

Bind all images for this ShaderMaterial.

Implemented in GlslMaterial.

◆ bindLighting()

virtual void bindLighting ( LightHandlerPtr  lightHandler,
ImageHandlerPtr  imageHandler,
const ShadowState shadowState 
)
pure virtual

Bind lights to shader.

Implemented in GlslMaterial.

◆ bindMesh()

virtual void bindMesh ( MeshPtr  mesh)
pure virtual

Bind the given mesh to this ShaderMaterial.

Implemented in GlslMaterial.

◆ bindPartition()

virtual bool bindPartition ( MeshPartitionPtr  part) const
pure virtual

Bind a mesh partition to this ShaderMaterial.

Implemented in GlslMaterial.

◆ bindShader()

virtual bool bindShader ( ) const
pure virtual

Bind shader.

Implemented in GlslMaterial.

◆ bindViewInformation()

virtual void bindViewInformation ( CameraPtr  camera)
pure virtual

Bind viewing information for this ShaderMaterial.

Implemented in GlslMaterial.

◆ copyShader()

virtual void copyShader ( MaterialPtr  ShaderMaterial)
pure virtual

Copies shader and API specific generated program from ShaderMaterial to this one.

Implemented in GlslMaterial.

◆ drawPartition()

virtual void drawPartition ( MeshPartitionPtr  part) const
pure virtual

Draw the given mesh partition.

Implemented in GlslMaterial.

◆ findUniform()

virtual ShaderPort * findUniform ( const std::string &  path) const
pure virtual

Find a public uniform from its MaterialX path.

Implemented in GlslMaterial.

◆ generateShader() [1/2]

virtual bool generateShader ( GenContext context)
pure virtual

Generate a shader from our currently stored element and the given generator context.

Implemented in GlslMaterial.

◆ generateShader() [2/2]

virtual bool generateShader ( ShaderPtr  hwShader)
pure virtual

Generate a shader from the given hardware shader.

Implemented in GlslMaterial.

◆ getPublicUniforms()

virtual VariableBlock * getPublicUniforms ( ) const
pure virtual

Return the block of public uniforms for this ShaderMaterial.

Implemented in GlslMaterial.

◆ loadSource()

virtual bool loadSource ( const FilePath vertexShaderFile,
const FilePath pixelShaderFile,
bool  hasTransparency 
)
pure virtual

Load shader source from file.

Implemented in GlslMaterial.

◆ modifyUniform()

virtual void modifyUniform ( const std::string &  path,
ConstValuePtr  value,
std::string  valueString = EMPTY_STRING 
)
pure virtual

Modify the value of the uniform with the given path.

Implemented in GlslMaterial.

◆ unbindGeometry()

virtual void unbindGeometry ( )
pure virtual

Unbind all geometry from this ShaderMaterial.

Implemented in GlslMaterial.

◆ unbindImages()

virtual void unbindImages ( ImageHandlerPtr  imageHandler)
pure virtual

Unbbind all images for this ShaderMaterial.

Implemented in GlslMaterial.


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