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
41 std::string GetModelAssetName() const override {
42 return std::string();
43 }
44
45 HD_API
46 TfTokenVector GetNodeNames() const override;
47
48 HD_API
49 TfToken GetNodeType(const TfToken &nodeName) const override;
50
51 HD_API
52 TfTokenVector GetNodeTypeInfoKeys(const TfToken& nodeName) const override;
53
54 HD_API
55 VtValue GetNodeTypeInfoValue(
56 const TfToken& nodeName, const TfToken& key) const override;
57
58 HD_API
59 TfTokenVector GetAuthoredNodeParameterNames(
60 const TfToken &nodeName) const override;
61
62 HD_API
63 VtValue GetNodeParameterValue(
64 const TfToken &nodeName,
65 const TfToken &paramName) const override;
66
67 HD_API
68 NodeParamData GetNodeParameterData(
69 const TfToken &nodeName,
70 const TfToken &paramName) const override;
71
72 HD_API
73 TfTokenVector GetNodeInputConnectionNames(
74 const TfToken &nodeName) const override;
75
76 HD_API
77 InputConnectionVector GetNodeInputConnection(
78 const TfToken &nodeName,
79 const TfToken &inputName) const override;
80
81 HD_API
82 void DeleteNode(const TfToken &nodeName) override;
83
84 HD_API
85 void SetNodeType(
86 const TfToken &nodeName,
87 const TfToken &nodeType) override;
88
89 HD_API
90 void SetNodeParameterValue(
91 const TfToken &nodeName,
92 const TfToken &paramName,
93 const VtValue &value) override;
94
95 HD_API
96 void SetNodeParameterData(
97 const TfToken &nodeName,
98 const TfToken &paramName,
99 const NodeParamData &paramData) override;
100
101 HD_API
102 void DeleteNodeParameter(
103 const TfToken &nodeName,
104 const TfToken &paramName) override;
105
106 HD_API
107 void SetNodeInputConnection(
108 const TfToken &nodeName,
109 const TfToken &inputName,
110 const InputConnectionVector &connections) override;
111
112 HD_API
113 void DeleteNodeInputConnection(
114 const TfToken &nodeName,
115 const TfToken &inputName) override;
116
117 HD_API
119
120 HD_API
121 InputConnectionResult GetTerminalConnection(
122 const TfToken &terminalName) const override;
123
124 HD_API
125 void DeleteTerminal(const TfToken &terminalName) override;
126
127 HD_API
128 void SetTerminalConnection(
129 const TfToken &terminalName,
130 const InputConnection &connection) override;
131
132private:
133 SdfPath _materialPrimPath;
134 HdMaterialNetwork2 *_materialNetwork;
135 mutable TfToken _lastAccessedNodeName;
136 mutable HdMaterialNode2 *_lastAccessedNode;
137
138 HdMaterialNode2 *_GetNode(const TfToken &nodeName) const;
139 HdMaterialNode2 *_GetOrCreateNode(const TfToken &nodeName) const;
140
141};
142
143
144
145PXR_NAMESPACE_CLOSE_SCOPE
146
147#endif //HD_MATERIAL_NETWORK_2_INTERFACE_H
Implements HdMaterialNetworkInterface interface backed by an HdMaterialNetwork2 – which is useful for...
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:155
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:147
Container of nodes and top-level terminal connections.
Definition: material.h:161
Describes an instance of a node within a network A node contains a (shader) type identifier,...
Definition: material.h:149
std::vector< TfToken > TfTokenVector
Convenience types.
Definition: token.h:440