Loading...
Searching...
No Matches
ShaderMetadataHelpers Namespace Reference

Various utilities for parsing metadata contained within shaders. More...

Functions

SDR_API bool IsTruthy (const TfToken &key, const SdrTokenMap &metadata)
 Determines if the given metadatum in the metadata dictionary has a truthy value.
 
SDR_API std::string StringVal (const TfToken &key, const SdrTokenMap &metadata, const std::string &defaultValue=std::string())
 Extracts the string value from the given metadatum if it exists, otherwise returns defaultValue.
 
SDR_API TfToken TokenVal (const TfToken &key, const SdrTokenMap &metadata, const TfToken &defaultValue=TfToken())
 Extracts the tokenized value from the given metadatum if it exists, otherwise returns defaultValue.
 
SDR_API int IntVal (const TfToken &key, const SdrTokenMap &metadata, int defaultValue=std::numeric_limits< int >::max())
 Extracts the int value from the given metadatum if it exists and is a valid integer value, otherwise returns default value.
 
SDR_API SdrStringVec StringVecVal (const TfToken &key, const SdrTokenMap &metadata)
 Extracts a vector of strings from the given metadatum.
 
SDR_API SdrTokenVec TokenVecVal (const TfToken &key, const SdrTokenMap &metadata)
 Extracts a vector of tokenized values from the given metadatum.
 
SDR_API SdrOptionVec OptionVecVal (const std::string &optionStr)
 Extracts an "options" vector from the given string.
 
SDR_API std::string CreateStringFromStringVec (const SdrStringVec &stringVec)
 Serializes a vector of strings into a string using the pipe character as the delimiter.
 
SDR_API bool IsPropertyAnAssetIdentifier (const SdrTokenMap &metadata)
 Determines if the specified property metadata has a widget that indicates the property is an asset identifier.
 
SDR_API bool IsPropertyATerminal (const SdrTokenMap &metadata)
 Determines if the specified property metadata has a 'renderType' that indicates the property should be a SdrPropertyTypes->Terminal.
 
SDR_API TfToken GetRoleFromMetadata (const SdrTokenMap &metadata)
 Gets the "role" from metadata if one is provided.
 
SDR_API VtValue ParseSdfValue (const std::string &valueStr, const SdrShaderPropertyConstPtr &property, std::string *err)
 Parses the VtValue from the given valueStr according to the sdf type expressed by the given property via two steps.
 
SDR_API std::string ComputeShownIfFromMetadata (SdrShaderPropertyConstPtr property, const SdrShaderPropertyUniquePtrVec &allProperties, SdrShaderNodeConstPtr shader)
 Synthesizes a "shownIf" expression from conditional visibility metadata in property, expressed according to Katana's "args" format.
 
SDR_API std::string ComputeShownIfFromMetadata (const SdrTokenMap &metadata, const std::string &pageName, const SdrShaderPropertyUniquePtrVec &properties, const std::string &shaderUri)
 Synthesizes a "shownIf" expression from conditional visibility metadata associated with pageName, expressed according to Katana's "args" format.
 

Detailed Description

Various utilities for parsing metadata contained within shaders.

Function Documentation

◆ ComputeShownIfFromMetadata() [1/2]

SDR_API std::string ComputeShownIfFromMetadata ( const SdrTokenMap &  metadata,
const std::string &  pageName,
const SdrShaderPropertyUniquePtrVec &  properties,
const std::string &  shaderUri 
)

Synthesizes a "shownIf" expression from conditional visibility metadata associated with pageName, expressed according to Katana's "args" format.

The node's properties should be provided in properties and will be referenced when resolving relative paths (../../some/property) and when parsing embedded property values. Uses shaderUri when when reporting errors.

◆ ComputeShownIfFromMetadata() [2/2]

SDR_API std::string ComputeShownIfFromMetadata ( SdrShaderPropertyConstPtr  property,
const SdrShaderPropertyUniquePtrVec &  allProperties,
SdrShaderNodeConstPtr  shader 
)

Synthesizes a "shownIf" expression from conditional visibility metadata in property, expressed according to Katana's "args" format.

The sibling properties should be provided in allProperties and will be referenced when resolving relative paths (../../some/property) and when parsing embedded property values.

◆ CreateStringFromStringVec()

SDR_API std::string CreateStringFromStringVec ( const SdrStringVec &  stringVec)

Serializes a vector of strings into a string using the pipe character as the delimiter.

◆ GetRoleFromMetadata()

SDR_API TfToken GetRoleFromMetadata ( const SdrTokenMap &  metadata)

Gets the "role" from metadata if one is provided.

Only returns a value if it's a valid role as defined by SdrPropertyRole tokens.

◆ IntVal()

SDR_API int IntVal ( const TfToken key,
const SdrTokenMap &  metadata,
int  defaultValue = std::numeric_limits< int >::max() 
)

Extracts the int value from the given metadatum if it exists and is a valid integer value, otherwise returns default value.

◆ IsPropertyAnAssetIdentifier()

SDR_API bool IsPropertyAnAssetIdentifier ( const SdrTokenMap &  metadata)

Determines if the specified property metadata has a widget that indicates the property is an asset identifier.

◆ IsPropertyATerminal()

SDR_API bool IsPropertyATerminal ( const SdrTokenMap &  metadata)

Determines if the specified property metadata has a 'renderType' that indicates the property should be a SdrPropertyTypes->Terminal.

◆ IsTruthy()

SDR_API bool IsTruthy ( const TfToken key,
const SdrTokenMap &  metadata 
)

Determines if the given metadatum in the metadata dictionary has a truthy value.

All values are considered to be true except the following (case-insensitive): '0', 'false', and 'f'. The absence of key in the metadata also evaluates to false.

◆ OptionVecVal()

SDR_API SdrOptionVec OptionVecVal ( const std::string &  optionStr)

Extracts an "options" vector from the given string.

◆ ParseSdfValue()

SDR_API VtValue ParseSdfValue ( const std::string &  valueStr,
const SdrShaderPropertyConstPtr &  property,
std::string *  err 
)

Parses the VtValue from the given valueStr according to the sdf type expressed by the given property via two steps.

  1. valueStr is preprocessed into a suitable input for the sdf value parser.
    • If the value has an sdf type of string or token, the value will be quoted.
    • If the value is an sdf asset, appropriate @'s are added.
    • If the value is array-like, square brackets are added.
    • If the value is tuple-like, parentheses are added. NOTE: Constituent items of iterable types must be appropriately quoted by the caller of this function.
  2. sdf value parsing is performed on the preprocessed result.

If parsing fails, this returns an empty VtValue and populates err. This function does not throw exceptions.

◆ StringVal()

SDR_API std::string StringVal ( const TfToken key,
const SdrTokenMap &  metadata,
const std::string &  defaultValue = std::string() 
)

Extracts the string value from the given metadatum if it exists, otherwise returns defaultValue.

◆ StringVecVal()

SDR_API SdrStringVec StringVecVal ( const TfToken key,
const SdrTokenMap &  metadata 
)

Extracts a vector of strings from the given metadatum.

An empty vector is returned if the metadatum does not exist.

◆ TokenVal()

SDR_API TfToken TokenVal ( const TfToken key,
const SdrTokenMap &  metadata,
const TfToken defaultValue = TfToken() 
)

Extracts the tokenized value from the given metadatum if it exists, otherwise returns defaultValue.

◆ TokenVecVal()

SDR_API SdrTokenVec TokenVecVal ( const TfToken key,
const SdrTokenMap &  metadata 
)

Extracts a vector of tokenized values from the given metadatum.

An empty vector is returned if the metadatum does not exist.