|
Base class for all USD shaders. More...
#include <shader.h>
Public Member Functions | |
UsdShadeShader (const UsdPrim &prim=UsdPrim()) | |
Construct a UsdShadeShader on UsdPrim prim . | |
UsdShadeShader (const UsdSchemaBase &schemaObj) | |
Construct a UsdShadeShader on the prim held by schemaObj . | |
virtual USDSHADE_API | ~UsdShadeShader () |
Destructor. | |
Conversion to and from UsdShadeConnectableAPI | |
USDSHADE_API | UsdShadeShader (const UsdShadeConnectableAPI &connectable) |
Constructor that takes a ConnectableAPI object. | |
USDSHADE_API UsdShadeConnectableAPI | ConnectableAPI () const |
Contructs and returns a UsdShadeConnectableAPI object with this shader. | |
Outputs API | |
Outputs represent a typed attribute on a shader or node-graph whose value is computed externally. When they exist on a node-graph, they are connectable and are typically connected to the output of a shader within the node-graph. | |
USDSHADE_API UsdShadeOutput | CreateOutput (const TfToken &name, const SdfValueTypeName &typeName) |
Create an output which can either have a value or can be connected. | |
USDSHADE_API UsdShadeOutput | GetOutput (const TfToken &name) const |
Return the requested output if it exists. | |
USDSHADE_API std::vector< UsdShadeOutput > | GetOutputs (bool onlyAuthored=true) const |
Outputs are represented by attributes in the "outputs:" namespace. | |
Inputs API | |
Inputs are connectable attribute with a typed value. On shaders, the shader parameters are encoded as inputs. On node-graphs, interface attributes are represented as inputs. | |
USDSHADE_API UsdShadeInput | CreateInput (const TfToken &name, const SdfValueTypeName &typeName) |
Create an input which can either have a value or can be connected. | |
USDSHADE_API UsdShadeInput | GetInput (const TfToken &name) const |
Return the requested input if it exists. | |
USDSHADE_API std::vector< UsdShadeInput > | GetInputs (bool onlyAuthored=true) const |
Inputs are represented by attributes in the "inputs:" namespace. | |
UsdShadeNodeDefAPI forwarding | |
USDSHADE_API UsdAttribute | GetImplementationSourceAttr () const |
Forwards to UsdShadeNodeDefAPI(prim). | |
USDSHADE_API UsdAttribute | CreateImplementationSourceAttr (VtValue const &defaultValue=VtValue(), bool writeSparsely=false) const |
Forwards to UsdShadeNodeDefAPI(prim). | |
USDSHADE_API UsdAttribute | GetIdAttr () const |
Forwards to UsdShadeNodeDefAPI(prim). | |
USDSHADE_API UsdAttribute | CreateIdAttr (VtValue const &defaultValue=VtValue(), bool writeSparsely=false) const |
Forwards to UsdShadeNodeDefAPI(prim). | |
USDSHADE_API TfToken | GetImplementationSource () const |
Forwards to UsdShadeNodeDefAPI(prim). | |
USDSHADE_API bool | SetShaderId (const TfToken &id) const |
Forwards to UsdShadeNodeDefAPI(prim). | |
USDSHADE_API bool | GetShaderId (TfToken *id) const |
Forwards to UsdShadeNodeDefAPI(prim). | |
USDSHADE_API bool | SetSourceAsset (const SdfAssetPath &sourceAsset, const TfToken &sourceType=UsdShadeTokens->universalSourceType) const |
Forwards to UsdShadeNodeDefAPI(prim). | |
USDSHADE_API bool | GetSourceAsset (SdfAssetPath *sourceAsset, const TfToken &sourceType=UsdShadeTokens->universalSourceType) const |
Forwards to UsdShadeNodeDefAPI(prim). | |
USDSHADE_API bool | SetSourceAssetSubIdentifier (const TfToken &subIdentifier, const TfToken &sourceType=UsdShadeTokens->universalSourceType) const |
Forwards to UsdShadeNodeDefAPI(prim). | |
USDSHADE_API bool | GetSourceAssetSubIdentifier (TfToken *subIdentifier, const TfToken &sourceType=UsdShadeTokens->universalSourceType) const |
Forwards to UsdShadeNodeDefAPI(prim). | |
USDSHADE_API bool | SetSourceCode (const std::string &sourceCode, const TfToken &sourceType=UsdShadeTokens->universalSourceType) const |
Forwards to UsdShadeNodeDefAPI(prim). | |
USDSHADE_API bool | GetSourceCode (std::string *sourceCode, const TfToken &sourceType=UsdShadeTokens->universalSourceType) const |
Forwards to UsdShadeNodeDefAPI(prim). | |
USDSHADE_API std::vector< std::string > | GetSourceTypes () const |
Forwards to UsdShadeNodeDefAPI(prim). | |
USDSHADE_API SdrShaderNodeConstPtr | GetShaderNodeForSourceType (const TfToken &sourceType) const |
Forwards to UsdShadeNodeDefAPI(prim). | |
Shader Sdr Metadata API | |
This section provides API for authoring and querying shader registry metadata. When the shader's implementationSource is sourceAsset or sourceCode, the authored "sdrMetadata" dictionary value provides additional metadata needed to process the shader source correctly. It is used in combination with the sourceAsset or sourceCode value to fetch the appropriate node from the shader registry. We expect the keys in sdrMetadata to correspond to the keys in SdrNodeMetadata. However, this is not strictly enforced in the API. The only allowed value type in the "sdrMetadata" dictionary is a std::string since it needs to be converted into a NdrTokenMap, which Sdr will parse using the utilities available in SdrMetadataHelpers. | |
USDSHADE_API NdrTokenMap | GetSdrMetadata () const |
Returns this shader's composed "sdrMetadata" dictionary as a NdrTokenMap. | |
USDSHADE_API std::string | GetSdrMetadataByKey (const TfToken &key) const |
Returns the value corresponding to key in the composed sdrMetadata dictionary. | |
USDSHADE_API void | SetSdrMetadata (const NdrTokenMap &sdrMetadata) const |
Authors the given sdrMetadata on this shader at the current EditTarget. | |
USDSHADE_API void | SetSdrMetadataByKey (const TfToken &key, const std::string &value) const |
Sets the value corresponding to key to the given string value , in the shader's "sdrMetadata" dictionary at the current EditTarget. | |
USDSHADE_API bool | HasSdrMetadata () const |
Returns true if the shader has a non-empty composed "sdrMetadata" dictionary value. | |
USDSHADE_API bool | HasSdrMetadataByKey (const TfToken &key) const |
Returns true if there is a value corresponding to the given key in the composed "sdrMetadata" dictionary. | |
USDSHADE_API void | ClearSdrMetadata () const |
Clears any "sdrMetadata" value authored on the shader in the current EditTarget. | |
USDSHADE_API void | ClearSdrMetadataByKey (const TfToken &key) const |
Clears the entry corresponding to the given key in the "sdrMetadata" dictionary authored in the current EditTarget. | |
Public Member Functions inherited from UsdTyped | |
UsdTyped (const UsdPrim &prim=UsdPrim()) | |
Construct a UsdTyped on UsdPrim prim . | |
UsdTyped (const UsdSchemaBase &schemaObj) | |
Construct a UsdTyped on the prim held by schemaObj . | |
virtual USD_API | ~UsdTyped () |
Destructor. | |
Public Member Functions inherited from UsdSchemaBase | |
bool | IsConcrete () const |
Returns whether or not this class corresponds to a concrete instantiable prim type in scene description. | |
bool | IsTyped () const |
Returns whether or not this class inherits from UsdTyped. | |
bool | IsAPISchema () const |
Returns whether this is an API schema or not. | |
bool | IsAppliedAPISchema () const |
Returns whether this is an applied API schema or not. | |
bool | IsMultipleApplyAPISchema () const |
Returns whether this is an applied API schema or not. | |
UsdSchemaKind | GetSchemaKind () const |
Returns the kind of schema this class is. | |
USD_API | UsdSchemaBase (const UsdPrim &prim=UsdPrim()) |
Construct and store prim as the held prim. | |
USD_API | UsdSchemaBase (const UsdSchemaBase &otherSchema) |
Construct and store for the same prim held by otherSchema . | |
virtual USD_API | ~UsdSchemaBase () |
Destructor. | |
UsdPrim | GetPrim () const |
Return this schema object's held prim. | |
SdfPath | GetPath () const |
Shorthand for GetPrim()->GetPath(). | |
USD_API const UsdPrimDefinition * | GetSchemaClassPrimDefinition () const |
Return the prim definition associated with this schema instance if one exists, otherwise return null. | |
USD_API | operator bool () const |
Return true if this schema object is compatible with its held prim, false otherwise. | |
Static Public Member Functions | |
static USDSHADE_API const TfTokenVector & | GetSchemaAttributeNames (bool includeInherited=true) |
Return a vector of names of all pre-declared attributes for this schema class and all its ancestor classes. | |
static USDSHADE_API UsdShadeShader | Get (const UsdStagePtr &stage, const SdfPath &path) |
Return a UsdShadeShader holding the prim adhering to this schema at path on stage . | |
static USDSHADE_API UsdShadeShader | Define (const UsdStagePtr &stage, const SdfPath &path) |
Attempt to ensure a UsdPrim adhering to this schema at path is defined (according to UsdPrim::IsDefined()) on this stage. | |
Static Public Member Functions inherited from UsdTyped | |
static USD_API const TfTokenVector & | GetSchemaAttributeNames (bool includeInherited=true) |
Return a vector of names of all pre-declared attributes for this schema class and all its ancestor classes. | |
static USD_API UsdTyped | Get (const UsdStagePtr &stage, const SdfPath &path) |
Return a UsdTyped holding the prim adhering to this schema at path on stage . | |
Static Public Member Functions inherited from UsdSchemaBase | |
static const TfTokenVector & | GetSchemaAttributeNames (bool includeInherited=true) |
Static Public Attributes | |
static const UsdSchemaKind | schemaKind = UsdSchemaKind::ConcreteTyped |
Compile time constant representing what kind of schema this class is. | |
Static Public Attributes inherited from UsdTyped | |
static const UsdSchemaKind | schemaKind = UsdSchemaKind::AbstractBase |
Compile time constant representing what kind of schema this class is. | |
Static Public Attributes inherited from UsdSchemaBase | |
static const UsdSchemaKind | schemaKind = UsdSchemaKind::AbstractBase |
Compile time constant representing what kind of schema this class is. | |
Protected Member Functions | |
USDSHADE_API UsdSchemaKind | _GetSchemaKind () const override |
Returns the kind of schema this class belongs to. | |
Protected Member Functions inherited from UsdTyped | |
USD_API UsdSchemaKind | _GetSchemaKind () const override |
Returns the kind of schema this class belongs to. | |
USD_API bool | _IsCompatible () const override |
Subclasses may override _IsCompatible to do specific compatibility checking with the given prim, such as type compatibility or value compatibility. | |
Protected Member Functions inherited from UsdSchemaBase | |
virtual UsdSchemaKind | _GetSchemaType () const |
const TfType & | _GetType () const |
USD_API UsdAttribute | _CreateAttr (TfToken const &attrName, SdfValueTypeName const &typeName, bool custom, SdfVariability variability, VtValue const &defaultValue, bool writeSparsely) const |
Friends | |
class | UsdSchemaRegistry |
Base class for all USD shaders.
Shaders are the building blocks of shading networks. While UsdShadeShader objects are not target specific, each renderer or application target may derive its own renderer-specific shader object types from this base, if needed.
Objects of this class generally represent a single shading object, whether it exists in the target renderer or not. For example, a texture, a fractal, or a mix node.
The UsdShadeNodeDefAPI provides attributes to uniquely identify the type of this node. The id resolution into a renderable shader target type of this node. The id resolution into a renderable shader target is deferred to the consuming application.
The purpose of representing them in Usd is two-fold:
|
inlineexplicit |
Construct a UsdShadeShader on UsdPrim prim
.
Equivalent to UsdShadeShader::Get(prim.GetStage(), prim.GetPath()) for a valid prim
, but will not immediately throw an error for an invalid prim
|
inlineexplicit |
Construct a UsdShadeShader on the prim held by schemaObj
.
Should be preferred over UsdShadeShader(schemaObj.GetPrim()), as it preserves SchemaBase state.
|
virtual |
Destructor.
USDSHADE_API UsdShadeShader | ( | const UsdShadeConnectableAPI & | connectable | ) |
Constructor that takes a ConnectableAPI object.
Allow implicit (auto) conversion of UsdShadeConnectableAPI to UsdShadeShader, so that a ConnectableAPI can be passed into any function that accepts a Shader.
|
overrideprotectedvirtual |
Returns the kind of schema this class belongs to.
Reimplemented from UsdTyped.
USDSHADE_API void ClearSdrMetadata | ( | ) | const |
Clears any "sdrMetadata" value authored on the shader in the current EditTarget.
USDSHADE_API void ClearSdrMetadataByKey | ( | const TfToken & | key | ) | const |
Clears the entry corresponding to the given key
in the "sdrMetadata" dictionary authored in the current EditTarget.
USDSHADE_API UsdShadeConnectableAPI ConnectableAPI | ( | ) | const |
Contructs and returns a UsdShadeConnectableAPI object with this shader.
Note that most tasks can be accomplished without explicitly constructing a UsdShadeConnectable API, since connection-related API such as UsdShadeConnectableAPI::ConnectToSource() are static methods, and UsdShadeShader will auto-convert to a UsdShadeConnectableAPI when passed to functions that want to act generically on a connectable UsdShadeConnectableAPI object.
USDSHADE_API UsdAttribute CreateIdAttr | ( | VtValue const & | defaultValue = VtValue() , |
bool | writeSparsely = false |
||
) | const |
Forwards to UsdShadeNodeDefAPI(prim).
USDSHADE_API UsdAttribute CreateImplementationSourceAttr | ( | VtValue const & | defaultValue = VtValue() , |
bool | writeSparsely = false |
||
) | const |
Forwards to UsdShadeNodeDefAPI(prim).
USDSHADE_API UsdShadeInput CreateInput | ( | const TfToken & | name, |
const SdfValueTypeName & | typeName | ||
) |
Create an input which can either have a value or can be connected.
The attribute representing the input is created in the "inputs:" namespace. Inputs on both shaders and node-graphs are connectable.
USDSHADE_API UsdShadeOutput CreateOutput | ( | const TfToken & | name, |
const SdfValueTypeName & | typeName | ||
) |
Create an output which can either have a value or can be connected.
The attribute representing the output is created in the "outputs:" namespace. Outputs on a shader cannot be connected, as their value is assumed to be computed externally.
|
static |
Attempt to ensure a UsdPrim adhering to this schema at path
is defined (according to UsdPrim::IsDefined()) on this stage.
If a prim adhering to this schema at path
is already defined on this stage, return that prim. Otherwise author an SdfPrimSpec with specifier == SdfSpecifierDef and this schema's prim type name for the prim at path
at the current EditTarget. Author SdfPrimSpec s with specifier
== SdfSpecifierDef and empty typeName at the current EditTarget for any nonexistent, or existing but not Defined ancestors.
The given path must be an absolute prim path that does not contain any variant selections.
If it is impossible to author any of the necessary PrimSpecs, (for example, in case path cannot map to the current UsdEditTarget's namespace) issue an error and return an invalid UsdPrim.
Note that this method may return a defined prim whose typeName does not specify this schema class, in case a stronger typeName opinion overrides the opinion at the current EditTarget.
|
static |
Return a UsdShadeShader holding the prim adhering to this schema at path
on stage
.
If no prim exists at path
on stage
, or if the prim at that path does not adhere to this schema, return an invalid schema object. This is shorthand for the following:
USDSHADE_API UsdAttribute GetIdAttr | ( | ) | const |
Forwards to UsdShadeNodeDefAPI(prim).
USDSHADE_API TfToken GetImplementationSource | ( | ) | const |
Forwards to UsdShadeNodeDefAPI(prim).
USDSHADE_API UsdAttribute GetImplementationSourceAttr | ( | ) | const |
Forwards to UsdShadeNodeDefAPI(prim).
USDSHADE_API UsdShadeInput GetInput | ( | const TfToken & | name | ) | const |
Return the requested input if it exists.
USDSHADE_API std::vector< UsdShadeInput > GetInputs | ( | bool | onlyAuthored = true | ) | const |
Inputs are represented by attributes in the "inputs:" namespace.
If onlyAuthored
is true (the default), then only return authored attributes; otherwise, this also returns un-authored builtins.
USDSHADE_API UsdShadeOutput GetOutput | ( | const TfToken & | name | ) | const |
Return the requested output if it exists.
USDSHADE_API std::vector< UsdShadeOutput > GetOutputs | ( | bool | onlyAuthored = true | ) | const |
Outputs are represented by attributes in the "outputs:" namespace.
If onlyAuthored
is true (the default), then only return authored attributes; otherwise, this also returns un-authored builtins.
|
static |
Return a vector of names of all pre-declared attributes for this schema class and all its ancestor classes.
Does not include attributes that may be authored by custom/extended methods of the schemas involved.
USDSHADE_API NdrTokenMap GetSdrMetadata | ( | ) | const |
Returns this shader's composed "sdrMetadata" dictionary as a NdrTokenMap.
USDSHADE_API std::string GetSdrMetadataByKey | ( | const TfToken & | key | ) | const |
Returns the value corresponding to key
in the composed sdrMetadata dictionary.
USDSHADE_API bool GetShaderId | ( | TfToken * | id | ) | const |
Forwards to UsdShadeNodeDefAPI(prim).
USDSHADE_API SdrShaderNodeConstPtr GetShaderNodeForSourceType | ( | const TfToken & | sourceType | ) | const |
Forwards to UsdShadeNodeDefAPI(prim).
USDSHADE_API bool GetSourceAsset | ( | SdfAssetPath * | sourceAsset, |
const TfToken & | sourceType = UsdShadeTokens->universalSourceType |
||
) | const |
Forwards to UsdShadeNodeDefAPI(prim).
USDSHADE_API bool GetSourceAssetSubIdentifier | ( | TfToken * | subIdentifier, |
const TfToken & | sourceType = UsdShadeTokens->universalSourceType |
||
) | const |
Forwards to UsdShadeNodeDefAPI(prim).
USDSHADE_API bool GetSourceCode | ( | std::string * | sourceCode, |
const TfToken & | sourceType = UsdShadeTokens->universalSourceType |
||
) | const |
Forwards to UsdShadeNodeDefAPI(prim).
USDSHADE_API std::vector< std::string > GetSourceTypes | ( | ) | const |
Forwards to UsdShadeNodeDefAPI(prim).
USDSHADE_API bool HasSdrMetadata | ( | ) | const |
Returns true if the shader has a non-empty composed "sdrMetadata" dictionary value.
USDSHADE_API bool HasSdrMetadataByKey | ( | const TfToken & | key | ) | const |
Returns true if there is a value corresponding to the given key
in the composed "sdrMetadata" dictionary.
USDSHADE_API void SetSdrMetadata | ( | const NdrTokenMap & | sdrMetadata | ) | const |
Authors the given sdrMetadata
on this shader at the current EditTarget.
USDSHADE_API void SetSdrMetadataByKey | ( | const TfToken & | key, |
const std::string & | value | ||
) | const |
Sets the value corresponding to key
to the given string value
, in the shader's "sdrMetadata" dictionary at the current EditTarget.
USDSHADE_API bool SetShaderId | ( | const TfToken & | id | ) | const |
Forwards to UsdShadeNodeDefAPI(prim).
USDSHADE_API bool SetSourceAsset | ( | const SdfAssetPath & | sourceAsset, |
const TfToken & | sourceType = UsdShadeTokens->universalSourceType |
||
) | const |
Forwards to UsdShadeNodeDefAPI(prim).
USDSHADE_API bool SetSourceAssetSubIdentifier | ( | const TfToken & | subIdentifier, |
const TfToken & | sourceType = UsdShadeTokens->universalSourceType |
||
) | const |
Forwards to UsdShadeNodeDefAPI(prim).
USDSHADE_API bool SetSourceCode | ( | const std::string & | sourceCode, |
const TfToken & | sourceType = UsdShadeTokens->universalSourceType |
||
) | const |
Forwards to UsdShadeNodeDefAPI(prim).
|
friend |
|
static |
Compile time constant representing what kind of schema this class is.