MaterialX 1.39.5
Loading...
Searching...
No Matches
OslNetworkShaderGenerator.h
Go to the documentation of this file.
1//
2// Copyright Contributors to the MaterialX Project
3// SPDX-License-Identifier: Apache-2.0
4//
5
6#ifndef MATERIALX_OSLNETWORKSHADERGENERATOR_H
7#define MATERIALX_OSLNETWORKSHADERGENERATOR_H
8
11
13
15
16MATERIALX_NAMESPACE_BEGIN
17
18using OslNetworkShaderGeneratorPtr = shared_ptr<class OslNetworkShaderGenerator>;
19
24{
25 public:
27 OslNetworkShaderGenerator(TypeSystemPtr typeSystem);
28
34 static ShaderGeneratorPtr create(TypeSystemPtr typeSystem = nullptr)
35 {
36 return std::make_shared<OslNetworkShaderGenerator>(typeSystem ? typeSystem : TypeSystem::create());
37 }
38
40
42 const string& getTarget() const override { return TARGET; }
43
46 ShaderPtr generate(const string& name, ElementPtr element, GenContext& context) const override;
47
49 static const string TARGET;
50
51 protected:
53 ShaderPtr createShader(const string& name, ElementPtr element, GenContext& context) const override;
54};
55
56namespace OSLNetwork
57{
58
60extern MX_GENOSL_API const string UNIFORMS;
61extern MX_GENOSL_API const string INPUTS;
62extern MX_GENOSL_API const string OUTPUTS;
63
64} // namespace OSLNetwork
65
66MATERIALX_NAMESPACE_END
67
68#endif
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< ShaderNodeImpl > ShaderNodeImplPtr
Shared pointer to a ShaderNodeImpl.
Definition Library.h:39
shared_ptr< ShaderGenerator > ShaderGeneratorPtr
Shared pointer to a ShaderGenerator.
Definition Library.h:37
OSL shading language generator.
A context class for shader generation.
Definition GenContext.h:30
An implementation element within a Document.
Definition Definition.h:204
const string & getTarget() const override
Return a unique identifier for the target this generator is for.
Definition OslNetworkShaderGenerator.h:42
static ShaderGeneratorPtr create(TypeSystemPtr typeSystem=nullptr)
Creator function.
Definition OslNetworkShaderGenerator.h:34
static const string TARGET
Unique identifier for this generator target.
Definition OslNetworkShaderGenerator.h:49
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...
OslNetworkShaderGenerator(TypeSystemPtr typeSystem)
Constructor.
ShaderNodeImplPtr createShaderNodeImplForImplementation(const Implementation &implElement) const override
Create the shader node implementation for an Implementation implementation.
ShaderPtr createShader(const string &name, ElementPtr element, GenContext &context) const override
Create and initialize a new OSL shader for shader generation.
OslShaderGenerator(TypeSystemPtr typeSystem)
Constructor.
static TypeSystemPtr create()
Create a new type system.