HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
materialNetwork2Interface.h
Go to the documentation of this file.
1 //
2 // Copyright 2021 Pixar
3 //
4 // Licensed under the terms set forth in the LICENSE.txt file available at
5 // https://openusd.org/license.
6 //
7 #ifndef HD_MATERIAL_NETWORK_2_INTERFACE_H
8 #define HD_MATERIAL_NETWORK_2_INTERFACE_H
9 
10 #include "pxr/pxr.h"
11 #include "pxr/imaging/hd/api.h"
14 
16 
17 /// \class HdMaterialNetwork2Interface
18 ///
19 /// Implements HdMaterialNetworkInterface interface backed by an
20 /// HdMaterialNetwork2 -- which is useful for implementing material
21 /// filtering functions without being tied to the legacy data model
24 {
25 public:
26 
28  const SdfPath &materialPrimPath,
29  HdMaterialNetwork2 *materialNetwork)
30  : _materialPrimPath(materialPrimPath)
31  , _materialNetwork(materialNetwork)
32  , _lastAccessedNode(nullptr)
33  {}
34 
35  HD_API
36  SdfPath GetMaterialPrimPath() const override {
37  return _materialPrimPath;
38  }
39 
40  HD_API
41  TfTokenVector GetMaterialConfigKeys() const override;
42  HD_API
43  VtValue GetMaterialConfigValue(const TfToken& key) const override;
44 
45  HD_API
46  std::string GetModelAssetName() const override {
47  return std::string();
48  }
49 
50  HD_API
51  TfTokenVector GetNodeNames() const override;
52 
53  HD_API
54  TfToken GetNodeType(const TfToken &nodeName) const override;
55 
56  HD_API
57  TfTokenVector GetNodeTypeInfoKeys(const TfToken& nodeName) const override;
58 
59  HD_API
61  const TfToken& nodeName, const TfToken& key) const override;
62 
63  HD_API
65  const TfToken &nodeName) const override;
66 
67  HD_API
69  const TfToken &nodeName,
70  const TfToken &paramName) const override;
71 
72  HD_API
73  NodeParamData GetNodeParameterData(
74  const TfToken &nodeName,
75  const TfToken &paramName) const override;
76 
77  HD_API
79  const TfToken &nodeName) const override;
80 
81  HD_API
83  const TfToken &nodeName,
84  const TfToken &inputName) const override;
85 
86  HD_API
87  void DeleteNode(const TfToken &nodeName) override;
88 
89  HD_API
90  void SetNodeType(
91  const TfToken &nodeName,
92  const TfToken &nodeType) override;
93 
94  HD_API
95  virtual void SetNodeTypeInfoValue(
96  const TfToken &nodeName,
97  const TfToken &key,
98  const VtValue &value) override;
99 
100  HD_API
102  const TfToken &nodeName,
103  const TfToken &paramName,
104  const VtValue &value) override;
105 
106  HD_API
108  const TfToken &nodeName,
109  const TfToken &paramName,
110  const NodeParamData &paramData) override;
111 
112  HD_API
113  void DeleteNodeParameter(
114  const TfToken &nodeName,
115  const TfToken &paramName) override;
116 
117  HD_API
119  const TfToken &nodeName,
120  const TfToken &inputName,
121  const InputConnectionVector &connections) override;
122 
123  HD_API
125  const TfToken &nodeName,
126  const TfToken &inputName) override;
127 
128  HD_API
129  TfTokenVector GetTerminalNames() const override;
130 
131  HD_API
133  const TfToken &terminalName) const override;
134 
135  HD_API
136  void DeleteTerminal(const TfToken &terminalName) override;
137 
138  HD_API
140  const TfToken &terminalName,
141  const InputConnection &connection) override;
142 
143 private:
144  SdfPath _materialPrimPath;
145  HdMaterialNetwork2 *_materialNetwork;
146  mutable TfToken _lastAccessedNodeName;
147  mutable HdMaterialNode2 *_lastAccessedNode;
148 
149  HdMaterialNode2 *_GetNode(const TfToken &nodeName) const;
150  HdMaterialNode2 *_GetOrCreateNode(const TfToken &nodeName) const;
151 
152 };
153 
154 
155 
157 
158 #endif //HD_MATERIAL_NETWORK_2_INTERFACE_H
HD_API TfTokenVector GetTerminalNames() const override
HD_API void SetNodeParameterValue(const TfToken &nodeName, const TfToken &paramName, const VtValue &value) override
GLsizei const GLfloat * value
Definition: glcorearb.h:824
HD_API NodeParamData GetNodeParameterData(const TfToken &nodeName, const TfToken &paramName) const override
#define HD_API
Definition: api.h:23
HD_API void DeleteTerminal(const TfToken &terminalName) override
HD_API void DeleteNode(const TfToken &nodeName) override
HD_API std::string GetModelAssetName() const override
Definition: token.h:70
HD_API VtValue GetNodeParameterValue(const TfToken &nodeName, const TfToken &paramName) const override
virtual HD_API void SetNodeTypeInfoValue(const TfToken &nodeName, const TfToken &key, const VtValue &value) override
HD_API InputConnectionResult GetTerminalConnection(const TfToken &terminalName) const override
HD_API TfTokenVector GetNodeInputConnectionNames(const TfToken &nodeName) const override
HD_API void DeleteNodeParameter(const TfToken &nodeName, const TfToken &paramName) override
HD_API void SetNodeParameterData(const TfToken &nodeName, const TfToken &paramName, const NodeParamData &paramData) override
HD_API TfToken GetNodeType(const TfToken &nodeName) const override
std::vector< TfToken > TfTokenVector
Convenience types.
Definition: token.h:440
Definition: path.h:273
HdMaterialNetwork2Interface(const SdfPath &materialPrimPath, HdMaterialNetwork2 *materialNetwork)
HD_API void DeleteNodeInputConnection(const TfToken &nodeName, const TfToken &inputName) override
HD_API VtValue GetNodeTypeInfoValue(const TfToken &nodeName, const TfToken &key) const override
HD_API TfTokenVector GetNodeTypeInfoKeys(const TfToken &nodeName) const override
TfSmallVector< InputConnection, 4 > InputConnectionVector
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
Definition: path.h:1425
HD_API void SetTerminalConnection(const TfToken &terminalName, const InputConnection &connection) override
HD_API InputConnectionVector GetNodeInputConnection(const TfToken &nodeName, const TfToken &inputName) const override
#define PXR_NAMESPACE_CLOSE_SCOPE
Definition: pxr.h:74
HD_API void SetNodeInputConnection(const TfToken &nodeName, const TfToken &inputName, const InputConnectionVector &connections) override
HD_API VtValue GetMaterialConfigValue(const TfToken &key) const override
HD_API TfTokenVector GetMaterialConfigKeys() const override
HD_API SdfPath GetMaterialPrimPath() const override
HD_API TfTokenVector GetAuthoredNodeParameterNames(const TfToken &nodeName) const override
std::pair< bool, InputConnection > InputConnectionResult
Definition: value.h:146
HD_API TfTokenVector GetNodeNames() const override
HD_API void SetNodeType(const TfToken &nodeName, const TfToken &nodeType) override