HDK
|
#include <shader.h>
Public Member Functions | |
UsdShadeShader (const UsdPrim &prim=UsdPrim()) | |
UsdShadeShader (const UsdSchemaBase &schemaObj) | |
virtual USDSHADE_API | ~UsdShadeShader () |
Destructor. More... | |
USDSHADE_API UsdAttribute | GetImplementationSourceAttr () const |
USDSHADE_API UsdAttribute | CreateImplementationSourceAttr (VtValue const &defaultValue=VtValue(), bool writeSparsely=false) const |
USDSHADE_API UsdAttribute | GetIdAttr () const |
USDSHADE_API UsdAttribute | CreateIdAttr (VtValue const &defaultValue=VtValue(), bool writeSparsely=false) const |
USDSHADE_API | UsdShadeShader (const UsdShadeConnectableAPI &connectable) |
USDSHADE_API UsdShadeConnectableAPI | ConnectableAPI () const |
USDSHADE_API SdrShaderNodeConstPtr | GetShaderNodeForSourceType (const TfToken &sourceType) const |
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) |
USDSHADE_API UsdShadeOutput | GetOutput (const TfToken &name) const |
USDSHADE_API std::vector < UsdShadeOutput > | GetOutputs () const |
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) |
USDSHADE_API UsdShadeInput | GetInput (const TfToken &name) const |
USDSHADE_API std::vector < UsdShadeInput > | GetInputs () const |
Shader Source API | |
USDSHADE_API TfToken | GetImplementationSource () const |
USDSHADE_API bool | SetShaderId (const TfToken &id) const |
USDSHADE_API bool | GetShaderId (TfToken *id) const |
USDSHADE_API bool | SetSourceAsset (const SdfAssetPath &sourceAsset, const TfToken &sourceType=UsdShadeTokens->universalSourceType) const |
USDSHADE_API bool | GetSourceAsset (SdfAssetPath *sourceAsset, const TfToken &sourceType=UsdShadeTokens->universalSourceType) const |
USDSHADE_API bool | SetSourceAssetSubIdentifier (const TfToken &subIdentifier, const TfToken &sourceType=UsdShadeTokens->universalSourceType) const |
USDSHADE_API bool | GetSourceAssetSubIdentifier (TfToken *subIdentifier, const TfToken &sourceType=UsdShadeTokens->universalSourceType) const |
USDSHADE_API bool | SetSourceCode (const std::string &sourceCode, const TfToken &sourceType=UsdShadeTokens->universalSourceType) const |
USDSHADE_API bool | GetSourceCode (std::string *sourceCode, const TfToken &sourceType=UsdShadeTokens->universalSourceType) const |
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 |
USDSHADE_API std::string | GetSdrMetadataByKey (const TfToken &key) const |
USDSHADE_API void | SetSdrMetadata (const NdrTokenMap &sdrMetadata) const |
USDSHADE_API void | SetSdrMetadataByKey (const TfToken &key, const std::string &value) const |
USDSHADE_API bool | HasSdrMetadata () const |
USDSHADE_API bool | HasSdrMetadataByKey (const TfToken &key) const |
USDSHADE_API void | ClearSdrMetadata () const |
USDSHADE_API void | ClearSdrMetadataByKey (const TfToken &key) const |
![]() | |
UsdTyped (const UsdPrim &prim=UsdPrim()) | |
UsdTyped (const UsdSchemaBase &schemaObj) | |
virtual USD_API | ~UsdTyped () |
![]() | |
bool | IsConcrete () const |
bool | IsTyped () const |
bool | IsAPISchema () const |
Returns whether this is an API schema or not. More... | |
bool | IsAppliedAPISchema () const |
bool | IsMultipleApplyAPISchema () const |
UsdSchemaType | GetSchemaType () const |
USD_API | UsdSchemaBase (const UsdPrim &prim=UsdPrim()) |
Construct and store prim as the held prim. More... | |
USD_API | UsdSchemaBase (const UsdSchemaBase &otherSchema) |
Construct and store for the same prim held by otherSchema . More... | |
virtual USD_API | ~UsdSchemaBase () |
Destructor. More... | |
USD_API | operator bool () const |
UsdPrim | GetPrim () const |
Return this schema object's held prim. More... | |
SdfPath | GetPath () const |
Shorthand for GetPrim()->GetPath(). More... | |
USD_API const UsdPrimDefinition * | GetSchemaClassPrimDefinition () const |
Static Public Member Functions | |
static USDSHADE_API const TfTokenVector & | GetSchemaAttributeNames (bool includeInherited=true) |
static USDSHADE_API UsdShadeShader | Get (const UsdStagePtr &stage, const SdfPath &path) |
static USDSHADE_API UsdShadeShader | Define (const UsdStagePtr &stage, const SdfPath &path) |
![]() | |
static const TfTokenVector & | GetSchemaAttributeNames (bool includeInherited=true) |
static USD_API UsdTyped | Get (const UsdStagePtr &stage, const SdfPath &path) |
![]() | |
static const TfTokenVector & | GetSchemaAttributeNames (bool includeInherited=true) |
Static Public Attributes | |
static const UsdSchemaType | schemaType = UsdSchemaType::ConcreteTyped |
![]() | |
static const UsdSchemaType | schemaType = UsdSchemaType::AbstractBase |
![]() | |
static const UsdSchemaType | schemaType = UsdSchemaType::AbstractBase |
Protected Member Functions | |
USDSHADE_API UsdSchemaType | _GetSchemaType () const override |
![]() | |
USD_API bool | _IsCompatible () const override |
![]() | |
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 main property of this class is the info:id token, which uniquely identifies the 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:
For any described attribute Fallback Value or Allowed Values below that are text/tokens, the actual token is published and defined in UsdShadeTokens. So to set an attribute to the value "rightHanded", use UsdShadeTokens->rightHanded as the value.
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::UsdShadeShader | ( | const UsdShadeConnectableAPI & | connectable | ) |
Constructor that takes a ConnectableAPI object. Allow implicit (auto) conversion of UsdShadeShader to UsdShadeConnectableAPI, so that a shader can be passed into any function that accepts a ConnectableAPI.
|
overrideprotectedvirtual |
Returns the type of schema this class belongs to.
Reimplemented from UsdSchemaBase.
USDSHADE_API void UsdShadeShader::ClearSdrMetadata | ( | ) | const |
Clears any "sdrMetadata" value authored on the shader in the current EditTarget.
USDSHADE_API void UsdShadeShader::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 UsdShadeShader::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 UsdShadeShader::CreateIdAttr | ( | VtValue const & | defaultValue = VtValue() , |
bool | writeSparsely = false |
||
) | const |
See GetIdAttr(), and also Usd_Create_Or_Get_Property for when to use Get vs Create. If specified, author defaultValue
as the attribute's default, sparsely (when it makes sense to do so) if writeSparsely
is true
- the default for writeSparsely
is false
.
USDSHADE_API UsdAttribute UsdShadeShader::CreateImplementationSourceAttr | ( | VtValue const & | defaultValue = VtValue() , |
bool | writeSparsely = false |
||
) | const |
See GetImplementationSourceAttr(), and also Usd_Create_Or_Get_Property for when to use Get vs Create. If specified, author defaultValue
as the attribute's default, sparsely (when it makes sense to do so) if writeSparsely
is true
- the default for writeSparsely
is false
.
USDSHADE_API UsdShadeInput UsdShadeShader::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 UsdShadeShader::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 UsdShadeShader::GetIdAttr | ( | ) | const |
The id is an identifier for the type or purpose of the shader. E.g.: Texture or FractalFloat. The use of this id will depend on the render target: some will turn it into an actual shader path, some will use it to generate shader source code dynamically.
Declaration | uniform token info:id |
C++ Type | TfToken |
Usd Type | SdfValueTypeNames->Token |
Variability | SdfVariabilityUniform |
USDSHADE_API TfToken UsdShadeShader::GetImplementationSource | ( | ) | const |
Reads the value of info:implementationSource attribute and returns a token identifying the attribute that must be consulted to identify the shader's source program.
This returns
This issues a warning and returns id if the info:implementationSource attribute has an invalid value.
{sourceType} above is a place holder for a token that identifies the type of shader source or its implementation. For example: osl, glslfx, riCpp etc. This allows a shader to specify different sourceAsset (or sourceCode) values for different sourceTypes. The sourceType tokens usually correspond to the sourceType value of the NdrParserPlugin that's used to parse the shader source (NdrParserPlugin::SourceType).
When sourceType is empty, the corresponding sourceAsset or sourceCode is considered to be "universal" (or fallback), which is represented by the empty-valued token UsdShadeTokens->universalSourceType. When the sourceAsset (or sourceCode) corresponding to a specific, requested sourceType is unavailable, the universal sourceAsset (or sourceCode) is returned by GetSourceAsset (and GetSourceCode} API, if present.
USDSHADE_API UsdAttribute UsdShadeShader::GetImplementationSourceAttr | ( | ) | const |
Specifies the attribute that should be consulted to get the shader's implementation or its source code.
Declaration | uniform token info:implementationSource = "id" |
C++ Type | TfToken |
Usd Type | SdfValueTypeNames->Token |
Variability | SdfVariabilityUniform |
Allowed Values | id, sourceAsset, sourceCode |
USDSHADE_API UsdShadeInput UsdShadeShader::GetInput | ( | const TfToken & | name | ) | const |
Return the requested input if it exists.
USDSHADE_API std::vector<UsdShadeInput> UsdShadeShader::GetInputs | ( | ) | const |
Inputs are represented by attributes in the "inputs:" namespace.
USDSHADE_API UsdShadeOutput UsdShadeShader::GetOutput | ( | const TfToken & | name | ) | const |
Return the requested output if it exists.
USDSHADE_API std::vector<UsdShadeOutput> UsdShadeShader::GetOutputs | ( | ) | const |
Outputs are represented by attributes in the "outputs:" namespace.
|
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 UsdShadeShader::GetSdrMetadata | ( | ) | const |
Returns this shader's composed "sdrMetadata" dictionary as a NdrTokenMap.
USDSHADE_API std::string UsdShadeShader::GetSdrMetadataByKey | ( | const TfToken & | key | ) | const |
Returns the value corresponding to key
in the composed sdrMetadata dictionary.
USDSHADE_API bool UsdShadeShader::GetShaderId | ( | TfToken * | id | ) | const |
Fetches the shader's ID value from the info:id attribute, if the shader's info:implementationSource is id.
Returns true if the shader's implementation source is id and the value was fetched properly into id
. Returns false otherwise.
USDSHADE_API SdrShaderNodeConstPtr UsdShadeShader::GetShaderNodeForSourceType | ( | const TfToken & | sourceType | ) | const |
This method attempts to ensure that there is a ShaderNode in the shader registry (i.e. SdrRegistry) representing this shader for the given sourceType
. It may return a null pointer if none could be found or created.
USDSHADE_API bool UsdShadeShader::GetSourceAsset | ( | SdfAssetPath * | sourceAsset, |
const TfToken & | sourceType = UsdShadeTokens->universalSourceType |
||
) | const |
Fetches the shader's source asset value for the specified sourceType
value from the info:sourceType:sourceAsset attribute, if the shader's info:implementationSource is sourceAsset.
If the sourceAsset attribute corresponding to the requested sourceType isn't present on the shader, then the universal fallback sourceAsset attribute, i.e. info:sourceAsset is consulted, if present, to get the source asset path.
Returns true if the shader's implementation source is sourceAsset and the source asset path value was fetched successfully into sourceAsset
. Returns false otherwise.
USDSHADE_API bool UsdShadeShader::GetSourceAssetSubIdentifier | ( | TfToken * | subIdentifier, |
const TfToken & | sourceType = UsdShadeTokens->universalSourceType |
||
) | const |
Fetches the shader's sub-identifier for the source asset with the specified sourceType
value from the info:sourceType: sourceAsset:subIdentifier attribute, if the shader's info: implementationSource is sourceAsset.
If the subIdentifier attribute corresponding to the requested sourceType isn't present on the shader, then the universal fallback sub-identifier attribute, i.e. info:sourceAsset: subIdentifier is consulted, if present, to get the sub-identifier name.
Returns true if the shader's implementation source is sourceAsset and the sub-identifier for the given source type was fetched successfully into subIdentifier
. Returns false otherwise.
USDSHADE_API bool UsdShadeShader::GetSourceCode | ( | std::string * | sourceCode, |
const TfToken & | sourceType = UsdShadeTokens->universalSourceType |
||
) | const |
Fetches the shader's source code for the specified sourceType
value by reading the info:sourceType:sourceCode attribute, if the shader's info:implementationSource is sourceCode.
If the sourceCode attribute corresponding to the requested sourceType isn't present on the shader, then the universal or fallback sourceCode attribute (i.e. info:sourceCode) is consulted, if present, to get the source code.
Returns true if the shader's implementation source is sourceCode and the source code string was fetched successfully into sourceCode
. Returns false otherwise.
USDSHADE_API bool UsdShadeShader::HasSdrMetadata | ( | ) | const |
Returns true if the shader has a non-empty composed "sdrMetadata" dictionary value.
USDSHADE_API bool UsdShadeShader::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 UsdShadeShader::SetSdrMetadata | ( | const NdrTokenMap & | sdrMetadata | ) | const |
Authors the given sdrMetadata
on this shader at the current EditTarget.
USDSHADE_API void UsdShadeShader::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 UsdShadeShader::SetShaderId | ( | const TfToken & | id | ) | const |
Sets the shader's ID value. This also sets the info:implementationSource attribute on the shader to UsdShadeTokens->id, if the existing value is different.
USDSHADE_API bool UsdShadeShader::SetSourceAsset | ( | const SdfAssetPath & | sourceAsset, |
const TfToken & | sourceType = UsdShadeTokens->universalSourceType |
||
) | const |
Sets the shader's source-asset path value to sourceAsset
for the given source type, sourceType
.
This also sets the info:implementationSource attribute on the shader to UsdShadeTokens->sourceAsset.
USDSHADE_API bool UsdShadeShader::SetSourceAssetSubIdentifier | ( | const TfToken & | subIdentifier, |
const TfToken & | sourceType = UsdShadeTokens->universalSourceType |
||
) | const |
Set a sub-identifier to be used with a source asset of the given source type. This sets the info:sourceType:sourceAsset:subIdentifier .
This also sets the info:implementationSource attribute on the shader to UsdShadeTokens->sourceAsset
USDSHADE_API bool UsdShadeShader::SetSourceCode | ( | const std::string & | sourceCode, |
const TfToken & | sourceType = UsdShadeTokens->universalSourceType |
||
) | const |
Sets the shader's source-code value to sourceCode
for the given source type, sourceType
.
This also sets the info:implementationSource attribute on the shader to UsdShadeTokens->sourceCode.
|
friend |
|
static |
Compile time constant representing what kind of schema this class is.