6 #ifndef MATERIALX_SLANGSHADERGENERATOR_H
7 #define MATERIALX_SLANGSHADERGENERATOR_H
35 return std::make_shared<SlangShaderGenerator>(typeSystem ? typeSystem :
TypeSystem::create());
43 const string&
getTarget()
const override {
return TARGET; }
46 virtual const string&
getVersion()
const {
return VERSION; }
50 bool assignValue =
true)
const override;
89 void SlangSyntaxFromGlsl(
ShaderStage& shaderStage)
const;
void toVec4(TypeDesc type, string &variable) const
const string & getTarget() const override
Return a unique identifier for the target this generator is for.
#define MATERIALX_NAMESPACE_BEGIN
virtual void emitVariableDeclaration(const ShaderPort *variable, const string &qualifier, GenContext &context, ShaderStage &stage, bool assignValue=true) const
static const string TARGET
Unique identifier for this generator target.
static TypeSystemPtr create()
Create a new type system.
shared_ptr< class TypeSystem > TypeSystemPtr
GLint GLint GLsizei GLint GLenum GLenum type
virtual string getVertexDataPrefix(const VariableBlock &vertexData) const =0
Determine the prefix of vertex data variables.
virtual bool requiresLighting(const ShaderGraph &graph) const
static const string VERSION
Version string for the generator target.
virtual const string & getVersion() const
Return the version string for the Slang version this generator is for.
GLuint const GLchar * name
static void toVec4(const TypeDesc *type, string &variable)
vector< ShaderNodePtr > _lightSamplingNodes
Nodes used internally for light sampling.
shared_ptr< class SlangShaderGenerator > SlangShaderGeneratorPtr
shared_ptr< Shader > ShaderPtr
Shared pointer to a Shader.
shared_ptr< Element > ElementPtr
A shared pointer to an Element.
#define MATERIALX_NAMESPACE_END
static ShaderGeneratorPtr create(TypeSystemPtr typeSystem=nullptr)
shared_ptr< ShaderGenerator > ShaderGeneratorPtr
Shared pointer to a ShaderGenerator.
virtual ShaderPtr generate(const string &, ElementPtr, GenContext &) const