Loading...
Searching...
No Matches
materialNetwork2Interface.h
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"
12#include "pxr/imaging/hd/material.h"
13#include "pxr/imaging/hd/materialNetworkInterface.h"
14
15PXR_NAMESPACE_OPEN_SCOPE
16
24{
25public:
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
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
60 VtValue GetNodeTypeInfoValue(
61 const TfToken& nodeName, const TfToken& key) const override;
62
63 HD_API
64 TfTokenVector GetAuthoredNodeParameterNames(
65 const TfToken &nodeName) const override;
66
67 HD_API
68 VtValue GetNodeParameterValue(
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
78 TfTokenVector GetNodeInputConnectionNames(
79 const TfToken &nodeName) const override;
80
81 HD_API
82 InputConnectionVector GetNodeInputConnection(
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
101 void SetNodeParameterValue(
102 const TfToken &nodeName,
103 const TfToken &paramName,
104 const VtValue &value) override;
105
106 HD_API
107 void SetNodeParameterData(
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
118 void SetNodeInputConnection(
119 const TfToken &nodeName,
120 const TfToken &inputName,
121 const InputConnectionVector &connections) override;
122
123 HD_API
124 void DeleteNodeInputConnection(
125 const TfToken &nodeName,
126 const TfToken &inputName) override;
127
128 HD_API
130
131 HD_API
132 InputConnectionResult GetTerminalConnection(
133 const TfToken &terminalName) const override;
134
135 HD_API
136 void DeleteTerminal(const TfToken &terminalName) override;
137
138 HD_API
139 void SetTerminalConnection(
140 const TfToken &terminalName,
141 const InputConnection &connection) override;
142
143private:
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
156PXR_NAMESPACE_CLOSE_SCOPE
157
158#endif //HD_MATERIAL_NETWORK_2_INTERFACE_H
Implements HdMaterialNetworkInterface interface backed by an HdMaterialNetwork2 – which is useful for...
HD_API TfTokenVector GetMaterialConfigKeys() const override
Material config is a collection of data related to the entire material, e.g.
HD_API TfTokenVector GetTerminalNames() const override
HD_API std::string GetModelAssetName() const override
Returns the nearest enclosing model asset name, as described by the model schema, or empty string if ...
HD_API TfTokenVector GetNodeTypeInfoKeys(const TfToken &nodeName) const override
Node type info is a collection of data related to the node type, often used to determine the node typ...
Abstract interface for querying and mutating a material network.
A path value used to locate objects in layers or scenegraphs.
Definition: path.h:274
This is a small-vector class with local storage optimization, the local storage can be specified via ...
Definition: smallVector.h:157
Token for efficient comparison, assignment, and hashing of known strings.
Definition: token.h:71
Provides a container which may hold any type, and provides introspection and iteration over array typ...
Definition: value.h:90
Container of nodes and top-level terminal connections.
Definition: material.h:166
Describes an instance of a node within a network A node contains a (shader) type identifier,...
Definition: material.h:154
std::vector< TfToken > TfTokenVector
Convenience types.
Definition: token.h:440