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

#include <WgslShaderGenerator.h>

+ Inheritance diagram for WgslShaderGenerator:

Public Member Functions

 WgslShaderGenerator (TypeSystemPtr typeSystem)
 Constructor. More...
 
void emitDirectives (GenContext &context, ShaderStage &stage) const override
 
const stringgetLightDataTypevarString () const override
 
void emitFunctionDefinitionParameter (const ShaderPort *shaderPort, bool isOutput, GenContext &context, ShaderStage &stage) const override
 
void emitInput (const ShaderInput *input, GenContext &context, ShaderStage &stage) const override
 
- Public Member Functions inherited from VkShaderGenerator
 VkShaderGenerator (TypeSystemPtr typeSystem)
 Constructor. More...
 
const stringgetTarget () const override
 Return a unique identifier for the target this generator is for. More...
 
const stringgetVersion () const override
 Return the version string for the GLSL version this generator is for. More...
 
string getVertexDataPrefix (const VariableBlock &vertexData) const override
 Determine the prefix of vertex data variables. More...
 
void emitInputs (GenContext &context, ShaderStage &stage) const override
 
void emitOutputs (GenContext &context, ShaderStage &stage) const override
 
- Public Member Functions inherited from GlslShaderGenerator
 GlslShaderGenerator (TypeSystemPtr typeSystem)
 Constructor. More...
 
ShaderPtr generate (const string &name, ElementPtr element, GenContext &context) const override
 
void emitVariableDeclaration (const ShaderPort *variable, const string &qualifier, GenContext &context, ShaderStage &stage, bool assignValue=true) const override
 Emit a shader variable. More...
 
- Public Member Functions inherited from HwShaderGenerator
virtual void addStageLightingUniforms (GenContext &context, ShaderStage &stage) const
 Emit code for active light count definitions and uniforms. More...
 
bool nodeNeedsClosureData (const ShaderNode &node) const override
 Return true if the node needs the ClosureData struct added. More...
 
void emitClosureDataArg (const ShaderNode &node, GenContext &context, ShaderStage &stage) const override
 
void emitClosureDataParameter (const ShaderNode &node, GenContext &context, ShaderStage &stage) const override
 
void applyDefaultOptions (GenOptions &options) const override
 Apply the default GenOptions for hardware shader generation. More...
 
virtual bool requiresLighting (const ShaderGraph &graph) const
 
ShaderNodeImplPtr createShaderNodeImplForNodeGraph (const NodeGraph &nodegraph) const override
 Create the shader node implementation for a NodeGraph implementation. 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 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 string getUpstreamResult (const ShaderInput *input, GenContext &context) const
 Return the result of an upstream connection or value for an input. 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...
 
virtual ShaderNodeImplPtr createShaderNodeImplForImplementation (const Implementation &implementation) const
 Create the shader node implementation for an Implementation implementation. More...
 
virtual ShaderNodeImplPtr getImplementation (const NodeDef &nodedef, GenContext &context) const
 Return a registered shader node implementation for the given nodedef. 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...
 
TypeSystemPtr getTypeSystem () const
 Returns the type system. More...
 
const StringMapgetTokenSubstitutions () const
 Return the map of token substitutions used by the generator. More...
 
void registerRefactor (ShaderGraphRefactorPtr refactor)
 Register a shader graph refactoring pass. More...
 
const vector
< ShaderGraphRefactorPtr > & 
getRefactors () const
 Return the registered graph refactoring passes. More...
 
virtual void registerTypeDefs (const DocumentPtr &doc)
 Register type definitions from the document. More...
 
virtual void registerShaderMetadata (const DocumentPtr &doc, GenContext &context) const
 

Static Public Member Functions

static ShaderGeneratorPtr create (TypeSystemPtr typeSystem=nullptr)
 
- Static Public Member Functions inherited from VkShaderGenerator
static ShaderGeneratorPtr create (TypeSystemPtr typeSystem=nullptr)
 
- Static Public Member Functions inherited from GlslShaderGenerator
static ShaderGeneratorPtr create (TypeSystemPtr typeSystem=nullptr)
 
- Static Public Member Functions inherited from HwShaderGenerator
static void bindLightShader (const NodeDef &nodeDef, unsigned int lightTypeId, GenContext &context)
 
static void unbindLightShader (unsigned int lightTypeId, GenContext &context)
 Unbind a light shader previously bound to the given light type id. More...
 
static void unbindLightShaders (GenContext &context)
 Unbind all light shaders previously bound. More...
 

Static Protected Attributes

static const string LIGHTDATA_TYPEVAR_STRING
 
- Static Protected Attributes inherited from ShaderGenerator
static const string T_FILE_TRANSFORM_UV
 
static const string LIGHTDATA_TYPEVAR_STRING
 

Additional Inherited Members

- Public Types inherited from HwShaderGenerator
enum  ClosureContextType {
  DEFAULT, REFLECTION, TRANSMISSION, INDIRECT,
  EMISSION, LIGHTING, CLOSURE
}
 Types of closure contexts for HW. More...
 
- Static Public Attributes inherited from VkShaderGenerator
static const string TARGET
 Unique identifier for this generator target. More...
 
static const string VERSION
 
- Static Public Attributes inherited from GlslShaderGenerator
static const string TARGET
 Unique identifier for this generator target. More...
 
static const string VERSION
 Version string for the generator target. More...
 
- Protected Member Functions inherited from VkShaderGenerator
HwResourceBindingContextPtr getResourceBindingContext (GenContext &) const override
 
- Protected Member Functions inherited from GlslShaderGenerator
virtual void emitVertexStage (const ShaderGraph &graph, GenContext &context, ShaderStage &stage) const
 
virtual void emitPixelStage (const ShaderGraph &graph, GenContext &context, ShaderStage &stage) const
 
virtual void emitConstants (GenContext &context, ShaderStage &stage) const
 
virtual void emitUniforms (GenContext &context, ShaderStage &stage) const
 
virtual void emitLightData (GenContext &context, ShaderStage &stage) const
 
virtual void emitSpecularEnvironment (GenContext &context, ShaderStage &stage) const
 Emit specular environment lookup code. More...
 
virtual void emitTransmissionRender (GenContext &context, ShaderStage &stage) const
 Emit transmission rendering code. More...
 
virtual void emitLightFunctionDefinitions (const ShaderGraph &graph, GenContext &context, ShaderStage &stage) const
 Emit function definitions for lighting code. More...
 
- Protected Member Functions inherited from HwShaderGenerator
 HwShaderGenerator (TypeSystemPtr typeSystem, SyntaxPtr syntax)
 
virtual ShaderPtr createShader (const string &name, ElementPtr element, GenContext &context) const
 Create and initialize a new HW shader for shader generation. More...
 
void toVec4 (TypeDesc type, string &variable) const
 
- Protected Member Functions inherited from ShaderGenerator
 ShaderGenerator (TypeSystemPtr typeSystem, 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
 
- Protected Attributes inherited from VkShaderGenerator
HwResourceBindingContextPtr _resourceBindingCtx
 
int vertexDataLocation = 0
 
- Protected Attributes inherited from GlslShaderGenerator
vector< ShaderNodePtr_lightSamplingNodes
 Nodes used internally for light sampling. More...
 
- Protected Attributes inherited from ShaderGenerator
TypeSystemPtr _typeSystem
 
SyntaxPtr _syntax
 
Factory< ShaderNodeImpl_implFactory
 
ColorManagementSystemPtr _colorManagementSystem
 
UnitSystemPtr _unitSystem
 
StringMap _tokenSubstitutions
 
vector< ShaderGraphRefactorPtr_refactors
 
friend ShaderGraph
 

Detailed Description

WGSL Flavor of Vulkan GLSL shader generator

Definition at line 22 of file WgslShaderGenerator.h.

Constructor & Destructor Documentation

WgslShaderGenerator::WgslShaderGenerator ( TypeSystemPtr  typeSystem)

Constructor.

Member Function Documentation

static ShaderGeneratorPtr WgslShaderGenerator::create ( TypeSystemPtr  typeSystem = nullptr)
inlinestatic

Creator function. If a TypeSystem is not provided it will be created internally. Optionally pass in an externally created TypeSystem here, if you want to keep type descriptions alive after the lifetime of the shader generator.

Definition at line 33 of file WgslShaderGenerator.h.

void WgslShaderGenerator::emitDirectives ( GenContext context,
ShaderStage stage 
) const
overridevirtual

Reimplemented from VkShaderGenerator.

void WgslShaderGenerator::emitFunctionDefinitionParameter ( const ShaderPort shaderPort,
bool  isOutput,
GenContext context,
ShaderStage stage 
) const
overridevirtual

Reimplemented from ShaderGenerator.

void WgslShaderGenerator::emitInput ( const ShaderInput input,
GenContext context,
ShaderStage stage 
) const
overridevirtual

Emit the connected variable name for an input, or constant value if the port is not connected

Reimplemented from ShaderGenerator.

const string& WgslShaderGenerator::getLightDataTypevarString ( ) const
inlineoverridevirtual

Reimplemented from ShaderGenerator.

Definition at line 40 of file WgslShaderGenerator.h.

Member Data Documentation

const string WgslShaderGenerator::LIGHTDATA_TYPEVAR_STRING
staticprotected

Definition at line 47 of file WgslShaderGenerator.h.


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