MaterialX 1.38.2
ShaderTranslator.h
1//
2// TM & (c) 2020 Lucasfilm Entertainment Company Ltd. and Lucasfilm Ltd.
3// All rights reserved. See LICENSE.txt for license.
4//
5
6#ifndef MATERIALX_SHADERTRANSLATOR_H
7#define MATERIALX_SHADERTRANSLATOR_H
8
10
13
14namespace MaterialX
15{
16
18using ShaderTranslatorPtr = shared_ptr<class ShaderTranslator>;
19
21class MX_GENSHADER_API ShaderTranslator
22{
23 public:
24 static ShaderTranslatorPtr create()
25 {
26 return ShaderTranslatorPtr(new ShaderTranslator());
27 }
28
30 void translateShader(NodePtr shader, const string& destCategory);
31
34 void translateAllMaterials(DocumentPtr doc, string destShader);
35
36 protected:
38
39 // Connect translation node inputs from the original shader
40 void connectTranslationInputs(NodePtr shader, NodeDefPtr translationNodeDef);
41
42 // Connect translation node outputs to finalize shader translation
43 void connectTranslationOutputs(NodePtr shader);
44
45 protected:
46 NodeGraphPtr _graph;
47 NodePtr _translationNode;
48};
49
50} // namespace MaterialX
51
52#endif
shared_ptr< NodeDef > NodeDefPtr
A shared pointer to a NodeDef.
Definition: Definition.h:33
shared_ptr< Document > DocumentPtr
A shared pointer to a Document.
Definition: Document.h:23
Macros for declaring imported and exported symbols.
Shader generation utility methods.
shared_ptr< NodeGraph > NodeGraphPtr
A shared pointer to a NodeGraph.
Definition: Node.h:35
shared_ptr< Node > NodePtr
A shared pointer to a Node.
Definition: Node.h:25
Shader instance class created during shader generation.
Definition: ShaderTranslator.h:22