6#ifndef MATERIALX_MDLSHADERGENERATOR_H
7#define MATERIALX_MDLSHADERGENERATOR_H
16MATERIALX_NAMESPACE_BEGIN
105extern MX_GENMDL_API
const string INPUTS;
106extern MX_GENMDL_API
const string OUTPUTS;
110MATERIALX_NAMESPACE_END
shared_ptr< const Document > ConstDocumentPtr
A shared pointer to a const Document.
Definition Document.h:24
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:34
shared_ptr< ShaderNodeImpl > ShaderNodeImplPtr
Shared pointer to a ShaderNodeImpl.
Definition Library.h:40
shared_ptr< ShaderGenerator > ShaderGeneratorPtr
Shared pointer to a ShaderGenerator.
Definition Library.h:38
MX_RENDER_API ShaderPtr createShader(const string &shaderName, GenContext &context, ElementPtr elem)
Create a shader for a given element.
shared_ptr< class MdlShaderGenerator > MdlShaderGeneratorPtr
Shared pointer to an MdlShaderGenerator.
Definition MdlShaderGenerator.h:49
shared_ptr< class GenMdlOptions > GenMdlOptionsPtr
Shared pointer to GenMdlOptions.
Definition MdlShaderGenerator.h:46
Base shader generator class.
A context class for shader generation.
Definition GenContext.h:31
GenMdlOptions()
Create MDL code generator options with default values.
Definition MdlShaderGenerator.h:33
MdlVersion targetVersion
The MDL version number the generated module will have.
Definition MdlShaderGenerator.h:42
MdlVersion
MDL Versions supported by the Code Generator.
Definition MdlShaderGenerator.h:24
static const string GEN_CONTEXT_USER_DATA_KEY
Unique identifier for the MDL options on the GenContext object.
Definition MdlShaderGenerator.h:37
const string & getTarget() const override
Return a unique identifier for the target this generator is for.
Definition MdlShaderGenerator.h:61
static const string TARGET
Unique identifier for this generator target.
Definition MdlShaderGenerator.h:75
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 emitMdlVersionNumber(GenContext &context, ShaderStage &stage) const
Add the MDL file header containing the version number of the generated module.
void emitMdlVersionFilenameSuffix(GenContext &context, ShaderStage &stage) const
Add the version number suffix appended to MDL modules that use versions.
static const std::unordered_map< string, string > GEOMPROP_DEFINITIONS
Map of code snippets for geomprops in MDL.
Definition MdlShaderGenerator.h:78
ShaderNodeImplPtr getImplementation(const NodeDef &nodedef, GenContext &context) const override
Return a registered shader node implementation given an implementation element.
GenMdlOptions::MdlVersion getMdlVersion(GenContext &context) const
Get the selected MDL target language version number from the context option.
const string & getMdlVersionFilenameSuffix(GenContext &context) const
Get the version number suffix appended to MDL modules that use versions.
string getUpstreamResult(const ShaderInput *input, GenContext &context) const override
Return the result of an upstream connection or value for an input.
A node definition element within a Document.
Definition Definition.h:82
ShaderGenerator(SyntaxPtr syntax)
Protected constructor.
A shader stage, containing the state and resulting source code for the stage.
Definition ShaderStage.h:139
A block of variables in a shader stage.
Definition ShaderStage.h:61