6#ifndef MATERIALX_RENDER_SHADER_MATERIAL_H
7#define MATERIALX_RENDER_SHADER_MATERIAL_H
12#include <MaterialXCore/Generated.h>
17#include <MaterialXRender/Camera.h>
22MATERIALX_NAMESPACE_BEGIN
24using MaterialPtr = std::shared_ptr<class ShaderMaterial>;
34 float ambientOcclusionGain = 0.0f;
72 bool hasTransparency) = 0;
105 bool enableMipmaps =
true) = 0;
112 const std::string& uniformName,
142 std::string valueString = EMPTY_STRING) = 0;
145 virtual void clearShader() = 0;
156 bool _hasTransparency;
161MATERIALX_NAMESPACE_END
shared_ptr< Document > DocumentPtr
A shared pointer to a Document.
Definition: Document.h:22
shared_ptr< TypedElement > TypedElementPtr
A shared pointer to a TypedElement.
Definition: Element.h:36
std::vector< ImagePtr > ImageVec
A vetor of images.
Definition: Image.h:32
shared_ptr< Image > ImagePtr
A shared pointer to an image.
Definition: Image.h:23
Image handler interfaces.
std::shared_ptr< ImageHandler > ImageHandlerPtr
Shared pointer to an ImageHandler.
Definition: ImageHandler.h:32
Handler for hardware lights.
std::shared_ptr< class LightHandler > LightHandlerPtr
Shared pointer to a LightHandler.
Definition: LightHandler.h:25
shared_ptr< Shader > ShaderPtr
Shared pointer to a Shader.
Definition: Library.h:34
shared_ptr< class MeshPartition > MeshPartitionPtr
Shared pointer to a mesh partition.
Definition: Mesh.h:146
shared_ptr< class Mesh > MeshPtr
Shared pointer to a mesh.
Definition: Mesh.h:230
shared_ptr< Node > NodePtr
A shared pointer to a Node.
Definition: Node.h:24
shared_ptr< const Value > ConstValuePtr
A shared pointer to a const Value.
Definition: Value.h:31
A generic file path, supporting both syntactic and file system operations.
Definition: File.h:27
A sequence of file paths, which may be queried to find the first instance of a given filename on the ...
Definition: File.h:219
A context class for shader generation.
Definition: GenContext.h:31
Interface to describe sampling properties for images.
Definition: ImageHandler.h:43
A 4x4 matrix of floating-point values.
Definition: Types.h:656
Abstract class for shader generation and rendering of a ShaderMaterial.
Definition: ShaderMaterial.h:40
virtual void unbindImages(ImageHandlerPtr imageHandler)=0
Unbbind all images for this ShaderMaterial.
bool hasTransparency() const
Return true if this ShaderMaterial has transparency.
virtual bool generateShader(ShaderPtr hwShader)=0
Generate a shader from the given hardware shader.
void setUdim(const std::string &val)
Set udim identifier.
virtual void bindMesh(MeshPtr mesh)=0
Bind the given mesh to this ShaderMaterial.
void setDocument(DocumentPtr doc)
Set the renderable element associated with this ShaderMaterial.
virtual bool generateShader(GenContext &context)=0
Generate a shader from our currently stored element and the given generator context.
virtual bool bindShader() const =0
Bind shader.
virtual bool loadSource(const FilePath &vertexShaderFile, const FilePath &pixelShaderFile, bool hasTransparency)=0
Load shader source from file.
void setElement(TypedElementPtr val)
Set the renderable element associated with this ShaderMaterial.
virtual ImagePtr bindImage(const FilePath &filePath, const std::string &uniformName, ImageHandlerPtr imageHandler, const ImageSamplingProperties &samplingProperties)=0
Bind a single image.
virtual void bindLighting(LightHandlerPtr lightHandler, ImageHandlerPtr imageHandler, const ShadowState &shadowState)=0
Bind lights to shader.
virtual void bindViewInformation(CameraPtr camera)=0
Bind viewing information for this ShaderMaterial.
TypedElementPtr getElement() const
Return the renderable element associated with this ShaderMaterial.
virtual bool generateEnvironmentShader(GenContext &context, const FilePath &filename, DocumentPtr stdLib, const FilePath &imagePath)
Generate an environment background shader.
virtual VariableBlock * getPublicUniforms() const =0
Return the block of public uniforms for this ShaderMaterial.
virtual bool bindPartition(MeshPartitionPtr part) const =0
Bind a mesh partition to this ShaderMaterial.
virtual void copyShader(MaterialPtr ShaderMaterial)=0
Copies shader and API specific generated program from ShaderMaterial to this one.
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.
virtual void unbindGeometry()=0
Unbind all geometry from this ShaderMaterial.
DocumentPtr getDocument() const
Return the document associated with this ShaderMaterial.
virtual void bindImages(ImageHandlerPtr imageHandler, const FileSearchPath &searchPath, bool enableMipmaps=true)=0
Bind all images for this ShaderMaterial.
const std::string & getUdim()
Get any associated udim identifier.
ShaderPtr getShader() const
Return the underlying hardware shader.
virtual ShaderPort * findUniform(const std::string &path) const =0
Find a public uniform from its MaterialX path.
void setMaterialNode(NodePtr node)
Set the ShaderMaterial node associated with this ShaderMaterial.
NodePtr getMaterialNode() const
Return the ShaderMaterial node associated with this ShaderMaterial.
virtual void drawPartition(MeshPartitionPtr part) const =0
Draw the given mesh partition.
An input or output port on a ShaderNode.
Definition: ShaderNode.h:123
Helper class representing shadow rendering state.
Definition: ShaderMaterial.h:29
A block of variables in a shader stage.
Definition: ShaderStage.h:61