6#ifndef MATERIALX_GLSLSHADERGENERATOR_H
7#define MATERIALX_GLSLSHADERGENERATOR_H
14#include <MaterialXGenHw/HwResourceBindingContext.h>
15#include <MaterialXGenHw/HwShaderGenerator.h>
17MATERIALX_NAMESPACE_BEGIN
19using GlslShaderGeneratorPtr = shared_ptr<class GlslShaderGenerator>;
36 return std::make_shared<GlslShaderGenerator>(typeSystem ? typeSystem :
TypeSystem::create());
51 bool assignValue =
true)
const override;
74 virtual HwResourceBindingContextPtr getResourceBindingContext(
GenContext& context)
const;
89MATERIALX_NAMESPACE_END
shared_ptr< Element > ElementPtr
A shared pointer to an Element.
Definition Element.h:31
Macros for declaring imported and exported symbols.
shared_ptr< Shader > ShaderPtr
Shared pointer to a Shader.
Definition Library.h:33
shared_ptr< ShaderGenerator > ShaderGeneratorPtr
Shared pointer to a ShaderGenerator.
Definition Library.h:37
A context class for shader generation.
Definition GenContext.h:30
const string & getTarget() const override
Return a unique identifier for the target this generator is for.
Definition GlslShaderGenerator.h:44
virtual void emitLightFunctionDefinitions(const ShaderGraph &graph, GenContext &context, ShaderStage &stage) const
Emit function definitions for lighting code.
virtual const string & getVersion() const
Return the version string for the GLSL version this generator is for.
Definition GlslShaderGenerator.h:47
static ShaderGeneratorPtr create(TypeSystemPtr typeSystem=nullptr)
Creator function.
Definition GlslShaderGenerator.h:34
vector< ShaderNodePtr > _lightSamplingNodes
Nodes used internally for light sampling.
Definition GlslShaderGenerator.h:86
GlslShaderGenerator(TypeSystemPtr typeSystem)
Constructor.
static const string TARGET
Unique identifier for this generator target.
Definition GlslShaderGenerator.h:58
ShaderPtr generate(const string &name, ElementPtr element, GenContext &context) const override
Generate a shader starting from the given element, translating the element and all dependencies upstr...
void emitVariableDeclaration(const ShaderPort *variable, const string &qualifier, GenContext &context, ShaderStage &stage, bool assignValue=true) const override
Emit a shader variable.
virtual void emitSpecularEnvironment(GenContext &context, ShaderStage &stage) const
Emit specular environment lookup code.
string getVertexDataPrefix(const VariableBlock &vertexData) const override
Determine the prefix of vertex data variables.
virtual void emitTransmissionRender(GenContext &context, ShaderStage &stage) const
Emit transmission rendering code.
static const string VERSION
Version string for the generator target.
Definition GlslShaderGenerator.h:61
Class representing a graph (DAG) for shader generation.
Definition ShaderGraph.h:45
An input or output port on a ShaderNode.
Definition ShaderNode.h:124
A shader stage, containing the state and resulting source code for the stage.
Definition ShaderStage.h:145
static TypeSystemPtr create()
Create a new type system.
A block of variables in a shader stage.
Definition ShaderStage.h:67