HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MdlShaderGenerator Class Reference

#include <MdlShaderGenerator.h>

+ Inheritance diagram for MdlShaderGenerator:

Public Member Functions

 MdlShaderGenerator ()
 
const stringgetTarget () const override
 Return a unique identifier for the target this generator is for. More...
 
ShaderPtr generate (const string &name, ElementPtr element, GenContext &context) const override
 
ShaderNodeImplPtr getImplementation (const NodeDef &nodedef, GenContext &context) const override
 
string getUpstreamResult (const ShaderInput *input, GenContext &context) const override
 Return the result of an upstream connection or value for an input. More...
 
void emitMdlVersionNumber (GenContext &context, ShaderStage &stage) const
 Add the MDL file header containing the version number of the generated module.. More...
 
void emitMdlVersionFilenameSuffix (GenContext &context, ShaderStage &stage) const
 Add the version number suffix appended to MDL modules that use versions. More...
 
const stringgetMdlVersionFilenameSuffix (GenContext &context) const
 Get the version number suffix appended to MDL modules that use versions. More...
 
- Public Member Functions inherited from ShaderGenerator
virtual ~ShaderGenerator ()
 Destructor. More...
 
virtual void emitScopeBegin (ShaderStage &stage, Syntax::Punctuation punc=Syntax::CURLY_BRACKETS) const
 Start a new scope using the given bracket type. More...
 
virtual void emitScopeEnd (ShaderStage &stage, bool semicolon=false, bool newline=true) const
 End the current scope. More...
 
virtual void emitLineBegin (ShaderStage &stage) const
 Start a new line. More...
 
virtual void emitLineEnd (ShaderStage &stage, bool semicolon=true) const
 End the current line. More...
 
virtual void emitLineBreak (ShaderStage &stage) const
 Add a line break. More...
 
virtual void emitString (const string &str, ShaderStage &stage) const
 Add a string. More...
 
virtual void emitLine (const string &str, ShaderStage &stage, bool semicolon=true) const
 Add a single line of code, optionally appending a semicolon. More...
 
virtual void emitComment (const string &str, ShaderStage &stage) const
 Add a single line code comment. More...
 
virtual void emitBlock (const string &str, const FilePath &sourceFilename, GenContext &context, ShaderStage &stage) const
 Add a block of code. More...
 
virtual void emitLibraryInclude (const FilePath &filename, GenContext &context, ShaderStage &stage) const
 
template<typename T >
void emitValue (const T &value, ShaderStage &stage) const
 Add a value. More...
 
virtual void emitFunctionDefinition (const ShaderNode &node, GenContext &context, ShaderStage &stage) const
 Add the function definition for a single node. More...
 
virtual void emitFunctionDefinitions (const ShaderGraph &graph, GenContext &context, ShaderStage &stage) const
 Add all function definitions for a graph. More...
 
virtual void emitFunctionCall (const ShaderNode &node, GenContext &context, ShaderStage &stage) const
 Add the function call for a single node. More...
 
virtual void emitFunctionCall (const ShaderNode &node, GenContext &context, ShaderStage &stage, bool checkScope) const
 
virtual void emitFunctionCalls (const ShaderGraph &graph, GenContext &context, ShaderStage &stage, uint32_t classification=0u) const
 
virtual void emitDependentFunctionCalls (const ShaderNode &node, GenContext &context, ShaderStage &stage, uint32_t classification=0u) const
 
virtual void emitFunctionBodyBegin (const ShaderNode &node, GenContext &context, ShaderStage &stage, Syntax::Punctuation punc=Syntax::CURLY_BRACKETS) const
 Emit code for starting a new function body. More...
 
virtual void emitFunctionBodyEnd (const ShaderNode &node, GenContext &context, ShaderStage &stage) const
 Emit code for ending a function body. More...
 
virtual void emitTypeDefinitions (GenContext &context, ShaderStage &stage) const
 Emit type definitions for all data types that needs it. More...
 
virtual void emitInput (const ShaderInput *input, GenContext &context, ShaderStage &stage) const
 
virtual void emitOutput (const ShaderOutput *output, bool includeType, bool assignValue, GenContext &context, ShaderStage &stage) const
 
virtual void emitVariableDeclarations (const VariableBlock &block, const string &qualifier, const string &separator, GenContext &context, ShaderStage &stage, bool assignValue=true) const
 
virtual void emitVariableDeclaration (const ShaderPort *variable, const string &qualifier, GenContext &context, ShaderStage &stage, bool assignValue=true) const
 
virtual void getClosureContexts (const ShaderNode &node, vector< ClosureContext * > &cct) const
 Return the closure contexts defined for the given node. More...
 
const SyntaxgetSyntax () const
 Return the syntax object for the language used by the code generator. More...
 
void registerImplementation (const string &name, CreatorFunction< ShaderNodeImpl > creator)
 Register a shader node implementation for a given implementation element name. More...
 
void registerImplementation (const StringVec &nameVec, CreatorFunction< ShaderNodeImpl > creator)
 Register a shader node implementation for a given set of implementation element names. More...
 
bool implementationRegistered (const string &name) const
 Determine if a shader node implementation has been registered for a given implementation element name. More...
 
void setColorManagementSystem (ColorManagementSystemPtr colorManagementSystem)
 Sets the color management system. More...
 
ColorManagementSystemPtr getColorManagementSystem () const
 Returns the color management system. More...
 
void setUnitSystem (UnitSystemPtr unitSystem)
 Sets the unit system. More...
 
UnitSystemPtr getUnitSystem () const
 Returns the unit system. More...
 
const StringMapgetTokenSubstitutions () const
 Return the map of token substitutions used by the generator. More...
 
virtual void registerShaderMetadata (const DocumentPtr &doc, GenContext &context) const
 

Static Public Member Functions

static ShaderGeneratorPtr create ()
 

Static Public Attributes

static const string TARGET
 Unique identifier for this generator target. More...
 
static const
std::unordered_map< string,
string
GEOMPROP_DEFINITIONS
 Map of code snippets for geomprops in MDL. More...
 

Protected Member Functions

ShaderPtr createShader (const string &name, ElementPtr element, GenContext &context) const
 
void emitShaderInputs (const DocumentPtr doc, const VariableBlock &inputs, ShaderStage &stage) const
 
- Protected Member Functions inherited from ShaderGenerator
 ShaderGenerator (SyntaxPtr syntax)
 Protected constructor. More...
 
virtual ShaderStagePtr createStage (const string &name, Shader &shader) const
 Create a new stage in a shader. More...
 
void setFunctionName (const string &functionName, ShaderStage &stage) const
 Set function name for a stage. More...
 
void replaceTokens (const StringMap &substitutions, ShaderStage &stage) const
 Replace tokens with identifiers according to the given substitutions map. More...
 
void createVariables (ShaderGraphPtr graph, GenContext &context, Shader &shader) const
 

Additional Inherited Members

- Protected Attributes inherited from ShaderGenerator
SyntaxPtr _syntax
 
Factory< ShaderNodeImpl_implFactory
 
ColorManagementSystemPtr _colorManagementSystem
 
UnitSystemPtr _unitSystem
 
StringMap _tokenSubstitutions
 
friend ShaderGraph
 
- Static Protected Attributes inherited from ShaderGenerator
static const string T_FILE_TRANSFORM_UV
 

Detailed Description

Shader generator for MDL (Material Definition Language).

Definition at line 52 of file MdlShaderGenerator.h.

Constructor & Destructor Documentation

MdlShaderGenerator::MdlShaderGenerator ( )

Member Function Documentation

static ShaderGeneratorPtr MdlShaderGenerator::create ( )
inlinestatic

Definition at line 57 of file MdlShaderGenerator.h.

ShaderPtr MdlShaderGenerator::createShader ( const string name,
ElementPtr  element,
GenContext context 
) const
protected
void MdlShaderGenerator::emitMdlVersionFilenameSuffix ( GenContext context,
ShaderStage stage 
) const

Add the version number suffix appended to MDL modules that use versions.

void MdlShaderGenerator::emitMdlVersionNumber ( GenContext context,
ShaderStage stage 
) const

Add the MDL file header containing the version number of the generated module..

void MdlShaderGenerator::emitShaderInputs ( const DocumentPtr  doc,
const VariableBlock inputs,
ShaderStage stage 
) const
protected
ShaderPtr MdlShaderGenerator::generate ( const string name,
ElementPtr  element,
GenContext context 
) const
overridevirtual

Generate a shader starting from the given element, translating the element and all dependencies upstream into shader code.

Reimplemented from ShaderGenerator.

ShaderNodeImplPtr MdlShaderGenerator::getImplementation ( const NodeDef nodedef,
GenContext context 
) const
overridevirtual

Return a registered shader node implementation given an implementation element. The element must be an Implementation or a NodeGraph acting as implementation.

Reimplemented from ShaderGenerator.

const string& MdlShaderGenerator::getMdlVersionFilenameSuffix ( GenContext context) const

Get the version number suffix appended to MDL modules that use versions.

const string& MdlShaderGenerator::getTarget ( ) const
inlineoverridevirtual

Return a unique identifier for the target this generator is for.

Reimplemented from ShaderGenerator.

Definition at line 60 of file MdlShaderGenerator.h.

string MdlShaderGenerator::getUpstreamResult ( const ShaderInput input,
GenContext context 
) const
overridevirtual

Return the result of an upstream connection or value for an input.

Reimplemented from ShaderGenerator.

Member Data Documentation

const std::unordered_map<string, string> MdlShaderGenerator::GEOMPROP_DEFINITIONS
static

Map of code snippets for geomprops in MDL.

Definition at line 77 of file MdlShaderGenerator.h.

const string MdlShaderGenerator::TARGET
static

Unique identifier for this generator target.

Definition at line 74 of file MdlShaderGenerator.h.


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