8#ifndef PXR_USD_SDR_SHADER_PROPERTY_H
9#define PXR_USD_SDR_SHADER_PROPERTY_H
14#include "pxr/usd/sdr/api.h"
18#include "pxr/base/vt/value.h"
23PXR_NAMESPACE_OPEN_SCOPE
27#define SDR_PROPERTY_TYPE_TOKENS \
29 ((String, "string")) \
32 ((Color4, "color4")) \
34 ((Normal, "normal")) \
35 ((Vector, "vector")) \
36 ((Matrix, "matrix")) \
37 ((Struct, "struct")) \
38 ((Terminal, "terminal")) \
39 ((Vstruct, "vstruct")) \
40 ((Unknown, "unknown"))
45#define SDR_PROPERTY_METADATA_TOKENS \
49 ((RenderType, "renderType")) \
51 ((Widget, "widget")) \
53 ((Options, "options")) \
54 ((IsDynamicArray, "isDynamicArray")) \
55 ((Connectable, "connectable")) \
57 ((ValidConnectionTypes, "validConnectionTypes")) \
58 ((VstructMemberOf, "vstructMemberOf")) \
59 ((VstructMemberName, "vstructMemberName")) \
60 ((VstructConditionalExpr, "vstructConditionalExpr"))\
61 ((IsAssetIdentifier, "__SDR__isAssetIdentifier"))\
62 ((ImplementationName, "__SDR__implementationName"))\
63 ((SdrUsdDefinitionType, "sdrUsdDefinitionType"))\
64 ((DefaultInput, "__SDR__defaultinput")) \
65 ((Target, "__SDR__target")) \
66 ((Colorspace, "__SDR__colorspace"))
70#define SDR_PROPERTY_ROLE_TOKENS \
73#define SDR_PROPERTY_TOKENS \
74 ((PageDelimiter, ":"))
78 SDR_PROPERTY_METADATA_TOKENS);
80 SDR_PROPERTY_ROLE_TOKENS);
98 const NdrTokenMap& metadata,
99 const NdrTokenMap& hints,
100 const NdrOptionVec& options
135 const NdrTokenMap&
GetHints()
const {
return _hints; }
162 return _vstructMemberOf;
168 return _vstructMemberName;
183 return _vstructConditionalExpr;
204 return _validConnectionTypes;
239 return _sdfTypeDefaultValue;
264 friend void SdrShaderNode::_PostProcessProperties();
269 void _SetUsdEncodingVersion(
int usdEncodingVersion);
273 void _ConvertToVStruct();
278 void _FinalizeProperty();
282 const NdrTokenMap _hints;
283 const NdrOptionVec _options;
286 NdrTokenVec _validConnectionTypes;
292 TfToken _vstructConditionalExpr;
298 int _usdEncodingVersion;
301PXR_NAMESPACE_CLOSE_SCOPE
Represents a property (input or output) that is part of a NdrNode instance.
Represents a mapping from an Ndr Property type to Sdf type.
A specialized version of NdrProperty which holds shading information.
SDR_API bool IsVStruct() const
Returns true if the field is the head of a vstruct.
SDR_API const TfToken & GetVStructMemberOf() const
If this field is part of a vstruct, this is the name of the struct.
SDR_API bool IsConnectable() const override
Whether this property can be connected to other properties.
SDR_API bool CanConnectTo(const NdrProperty &other) const override
Determines if this property can be connected to the specified property.
SDR_API const TfToken & GetLabel() const
The label assigned to this property, if any.
SDR_API const TfToken & GetPage() const
The page (group), eg "Advanced", this property appears on, if any.
SDR_API const TfToken & GetWidget() const
The widget "hint" that indicates the widget that can best display the type of data contained in this ...
SDR_API NdrSdfTypeIndicator GetTypeAsSdfType() const override
Converts the property's type from GetType() into a NdrSdfTypeIndicator.
SDR_API bool IsAssetIdentifier() const
Determines if the value held by this property is an asset identifier (eg, a file path); the logic for...
SDR_API const TfToken & GetVStructMemberName() const
If this field is part of a vstruct, this is its name in the struct.
SDR_API std::string GetHelp() const
The help message assigned to this property, if any.
SDR_API const NdrOptionVec & GetOptions() const
If the property has a set of valid values that are pre-determined, this will return the valid option ...
SDR_API const NdrTokenVec & GetValidConnectionTypes() const
Gets the list of valid connection types for this property.
SDR_API std::string GetImplementationName() const
Returns the implementation name of this property.
SDR_API const VtValue & GetDefaultValueAsSdfType() const override
Accessor for default value corresponding to the SdfValueTypeName returned by GetTypeAsSdfType.
SDR_API bool IsDefaultInput() const
Determines if the value held by this property is the default input for this node.
SDR_API bool IsVStructMember() const
Returns true if this field is part of a vstruct.
SDR_API const NdrTokenMap & GetHints() const
Any UI "hints" that are associated with this property.
SDR_API const TfToken & GetVStructConditionalExpr() const
If this field is part of a vstruct, this is the conditional expression.
Token for efficient comparison, assignment, and hashing of known strings.
Provides a container which may hold any type, and provides introspection and iteration over array typ...
This file defines some macros that are useful for declaring and using static TfTokens.
#define TF_DECLARE_PUBLIC_TOKENS(...)
Macro to define public tokens.
TfToken class for efficient string referencing and hashing, plus conversions to and from stl string c...