FnUsdAbstractionLib 15.2.1
|
#include <MaterialPrim.h>
Public Member Functions | |
MaterialPrim () | |
Default ctor builds an empty (invalid) prim. | |
MaterialPrim (const Prim &) | |
Attempt to cast Prim to a MaterialPrim. MaterialPrim will be invalid if not successful. | |
MaterialPrim (const MaterialPrim &) | |
bool | validate () override |
bool | hasSurfaceOutput (const Token &render_target=GeomTokens.universalRenderContext) const |
Return true if the prim as a valid surface shader output connection for the named 'render_target'. | |
bool | hasDisplacementOutput (const Token &render_target=GeomTokens.universalRenderContext) const |
Return true if the prim as a valid displacement shader output connection for the named 'render_target'. | |
bool | hasVolumeOutput (const Token &render_target=GeomTokens.universalRenderContext) const |
Return true if the prim as a valid volume shader output connection for the named 'render_target'. | |
size_t | getShaderDescGroup (const Token &render_target, const std::string &terminal_type, const fdk::TimeValue &time, ShaderDescGroup &shader_desc_group_out) const |
![]() | |
Prim () | |
Abstraction handle for casting to UsdPrim. | |
Prim (const Prim &) | |
Prim & | operator= (const Prim &) |
bool | operator== (const Prim &b) const |
Equality - are the two Prims the same object or not? Compares the underlying Prim::Impls. | |
bool | operator!= (const Prim &b) const |
bool | operator< (const Prim &b) const |
bool | isValid () const |
Returns true if Prim::Impl is valid (has a valid object binding.) | |
operator bool () const | |
bool | isSdfPrim () const |
bool | isUsdPrim () const |
virtual bool | validate () |
class Prim::SpecPrimHandle * | getSdfPrimSpec (int usd_version) |
const class Prim::SpecPrimHandle * | getSdfPrimSpec (int usd_version) const |
class Prim::UsdPrimHandle * | getUsdPrim (int usd_version) |
const class Prim::UsdPrimHandle * | getUsdPrim (int usd_version) const |
const std::string & | getName () const |
Returns the name of the prim. | |
Token | getNameToken () const |
Returns the name of the prim as a token. | |
Path | getPath () const |
Returns the path of the prim. | |
Token | getTypeName () const |
Returns the name of the type of the prim. | |
Prim | getParent () const |
Return this prim's parent prim. Returns an invalid prim if this is a root prim. | |
bool | isA (const Token &typeName) const |
Returns true if the prim is an instance of the given type. | |
bool | isA (const Type &type) const |
Returns true if the prim is an instance of the given type. This is faster than the isA method which takes a Token as it avoids a type name lookup. | |
template<class T > | |
bool | isA () const |
Returns true if the prim is an instance of a schema. | |
bool | hasApi (const Token &typeName) const |
Returns true if the prim has the given API. | |
bool | hasApi (const Token &typeName, const Token &instanceName) const |
Returns true if the prim has the given multiple-apply schema API. | |
void | setActive (bool active) |
bool | isActive () const |
bool | clearActive () |
bool | isDefined () const |
bool | isModel () const |
bool | isGroup () const |
bool | isAbstract () const |
bool | hasDefiningSpecifier () const |
bool | hasArcs () const |
bool | isPseudoRoot () const |
Returns true if the prim is the pseudo root - ie '/'. | |
void | setKind (const Token &kind) |
Token | getKind () const |
void | setInstanceable (bool instanceable) |
bool | getInstanceable () const |
bool | isInstanceable () const |
bool | isInstance () const |
bool | isInstanceProxy () const |
bool | isPrototype () const |
bool | isInPrototype () const |
bool | hasPayload () const |
bool | isLoaded () const |
void | load (bool loadWithDescendants=true) const |
void | unload () const |
void | setVisibility (bool active, fdk::TimeValue time=fdk::defaultTimeValue()) |
bool | visibility (fdk::TimeValue time=fdk::defaultTimeValue()) const |
void | setVisible (bool active, fdk::TimeValue time=fdk::defaultTimeValue()) |
bool | isVisible (fdk::TimeValue time=fdk::defaultTimeValue()) const |
bool | addAppliedSchema (const Token &schemaName, ListPosition position=ListPosition::PrependBack) |
void | setCreator (const Token &creator) |
Sets the name of the app that created this prim. | |
Token | creatorApp () const |
Gets the name of the app that created this prim. | |
bool | isCreator (const Token &creator) const |
True if creator is the prim's creator app. | |
void | setMetadata (const std::string &key, const Value &value) |
Sets the metadata (or field for sdfPrim) value of given key. | |
void | setCustomData (const std::string &key, const Value &value) |
Sets the custom data value of given key. | |
bool | getCustomData (const std::string &key, Value &value) const |
Retrieves the custom data value for the key. Returns true if it exists. | |
Value | getCustomData (const std::string &key) const |
Returns a valid value if the custom data exists for the key. | |
bool | hasCustomData (const std::string &key) const |
Checks whether the prim has custom data for the key. | |
void | removeCustomData (const std::string &key) |
Erases the custom data for the key. | |
bool | getMetadata (const Token &key, Value &value) const |
Return this prim's metadata given a key token. | |
Attribute | createIntrinsicAttr (const Token &name, Value::Type type, TimeVariability variability_hint=TimeVariability::Uniform) |
Attribute | createCustomAttr (const Token &name, Value::Type type, TimeVariability variability_hint=TimeVariability::Uniform) |
Attribute | createAttr (const Token &name, Value::Type type, bool is_custom=false, TimeVariability variability_hint=TimeVariability::Varying, const Value &defaultValue=Value()) |
template<typename T > | |
Attribute | setAttr (const Token &name, const T &v, const fdk::TimeValue &time=fdk::defaultTimeValue()) |
Attribute | getAttr (const Token &name) const |
If the named attribute exists on the Prim returns it otherwise return an empty (invalid) Attribute object. | |
bool | getAttr (const Token &name, Attribute &attr) const |
std::vector< Token > | getAttributes () const |
Returns the list of attributes. | |
Attribute | copyAttr (const Prim &fromPrim, const Token &name, fdk::TimeValue time) |
Copy the attribute from another prim at the given time. | |
virtual bool | applyAttributeOverrides (const ShaderDesc &schema_desc, bool skip_connected=true) |
Relationship | createRelationship (const Token &name, bool custom=false) |
Creates and returns an empty relationship. | |
Relationship | getRelationship (const Token &name) const |
bool | getRelationship (const Token &name, Relationship &rel) const |
size_t | getRelationships (std::vector< const char * > &relationships) const |
Fills in the list of relationship names, returning the number of relationship. | |
void | addInherit (const Path &path, ListPosition position=ListPosition::PrependBack) |
Adds a inherit path to the prim's inherits list. | |
void | removeInherit (const Path &path) |
Removes a inherit path to the prim's inherits list. | |
void | setInherits (const PathArray &paths) |
Sets inherits to the prim's inherits list. If empty list is given, clears the inherits list. | |
void | addReference (const std::string &identifier, const Path &path, ListPosition position=ListPosition::PrependBack, double offset=0.0, double scale=1.0) |
Adds a reference to the prim's reference list. | |
void | removeReference (const std::string &identifier, const Path &path, double offset=0.0, double scale=1.0) |
Removes a reference to the prim's reference list. | |
void | setReferences (const std::vector< std::pair< std::string, Path > > &identifierAndPaths, double offset=0.0, double scale=1.0) |
Sets references to the prim's reference list. If empty list is given, clears the reference list. | |
void | addPayload (const std::string &identifier, const Path &path, ListPosition position=ListPosition::PrependBack, double offset=0.0, double scale=1.0) |
Adds a payload to the prim's payload list. | |
void | removePayload (const std::string &identifier, const Path &path, double offset=0.0, double scale=1.0) |
Removes a payload to the prim's payload list. | |
void | setPayloads (const std::vector< std::pair< std::string, Path > > &identifierAndPaths, double offset=0.0, double scale=1.0) |
Sets payloads to the prim's payload list. If empty list is given, clears the payload list. | |
void | addSpecialize (const Path &path, ListPosition position=ListPosition::PrependBack) |
Adds a specialize path to the prim's specializes list. | |
void | removeSpecialize (const Path &path) |
Removes a specialize path to the prim's specializes list. | |
void | setSpecializes (const PathArray &paths) |
Sets specializes to the prim's specializes list. If empty list is given, clears the specializes list. | |
void | addVariantSet (const std::string &variantSetName, ListPosition position=ListPosition::PrependBack) |
Adds a variant set to the prim. | |
void | addVariant (const std::string &variantSetName, const std::string &variantName) |
Adds a variant to a variant set. | |
void | setVariantSelection (const std::string &variantSetName, const std::string &selection) |
Sets the variant selection for a variant set. | |
std::vector< std::string > | getVariantSets () const |
Returns the list of variant sets authored on the prim. | |
std::vector< std::string > | getVariants (const std::string &variantSetName) const |
Returns the list of variants for a variant set on this prim. | |
std::string | getVariantSelection (const std::string &variantSetName) const |
Returns the variant selection for a given variant set. | |
size_t | getChildren (std::vector< Prim > &children, bool activeOnly=true, bool includeClasses=false, bool includeOverrides=true) const |
LayerRef | getDefiningLayer () const |
Returns a possible layer which defined this prim. This returns the layer containing the first "def" for the prim. | |
virtual void | print (const char *prefix, std::ostream &o, bool printAttribContents=false) const |
Debugging - prints some key info about the prim to a stream. | |
Prim (const Prim::Impl &) | |
Prim::Impl * | impl () |
const Prim::Impl * | impl () const |
void | invalidate () |
Remove the binding making the Prim invalid. For internal use only! | |
Static Public Member Functions | |
static bool | isValidPrim (const Prim &prim) |
Returns true if prim is a Material subclass. | |
static MaterialPrim | defineInLayer (const LayerRef &layer, const Path &path) |
static MaterialPrim | getInStage (const StageConstRef &stage, const Path &path) |
![]() | |
static Prim | defineInLayer (const LayerRef &layer, const Path &path, const Token &typeName) |
static Prim | overrideInLayer (const LayerRef &layer, const Path &path, const Token &typeName) |
static void | createMissingParents (const StageRef &referenceStage, const LayerRef &layer, const Path &path, const Token &parentPrimType=GeomTokens.types.Scope) |
Additional Inherited Members | |
![]() | |
enum | { ActiveFlag = 0 , LoadedFlag , ModelFlag , GroupFlag , AbstractFlag , DefinedFlag , HasDefiningSpecifierFlag , InstanceFlag , PayloadFlag , ClipsFlag , DeadFlag , PrototypeFlag , InstanceProxyFlag , PseudoRootFlag , NumFlags } |
using | FlagMask = uint32_t |
using | FlagsPredicate = FlagsSet |
![]() | |
static constexpr FlagMask | IsActiveMask = 0x0001 |
static constexpr FlagMask | IsLoadedMask = 0x0002 |
static constexpr FlagMask | IsModelMask = 0x0004 |
static constexpr FlagMask | IsGroupMask = 0x0008 |
static constexpr FlagMask | IsAbstractMask = 0x0010 |
static constexpr FlagMask | IsDefinedMask = 0x0020 |
static constexpr FlagMask | HasDefiningSpecifierMask = 0x0040 |
static constexpr FlagMask | IsInstanceMask = 0x0080 |
static constexpr FlagMask | PayloadMask = 0x0100 |
static constexpr FlagMask | ClipsMask = 0x0200 |
static constexpr FlagMask | DeadMask = 0x0400 |
static constexpr FlagMask | PrototypeMask = 0x0800 |
static constexpr FlagMask | InstanceProxyMask = 0x1000 |
static constexpr FlagMask | PseudoRootMask = 0x2000 |
static const FlagsPredicate | IsActive |
static const FlagsPredicate | IsLoaded |
static const FlagsPredicate | IsModel |
static const FlagsPredicate | IsGroup |
static const FlagsPredicate | IsAbstract |
static const FlagsPredicate | IsDefined |
static const FlagsPredicate | HasDefiningSpecifier |
static const FlagsPredicate | IsInstance |
static const FlagsPredicate | IncludeInstanceProxies |
static const FlagsPredicate | DefaultPredicate |
Default filtering mask. Same as (IsActive && IsDefined && IsLoaded && -IsAbstract) | |
static const FlagsPredicate | AllPrimsPredicate |
No filtering mask (no flags enabled.) Same as FlagsSet(). | |
![]() | |
void | initialize (const Prim &prim) |
![]() | |
std::unique_ptr< Prim::Impl, void(*)(Prim::Impl *)> | _pImpl |
Container of shader nodes and top-level terminal connections.
TODO: bother with a ShaderNetwork class above this?
|
overridevirtual |
Call this after construction to validate this Prim as a MaterialPrim type, returning true if it's still valid. If not the Prim::Impl will be invalidated and isValid() will then return false.
Reimplemented from usg::Prim.
|
static |
Defines a Material prim in the owner Layer, returning a constructed reference.
|
static |
Retrieves an editable Material prim in the owner Stage, or an invalid one if none exists.
size_t usg::MaterialPrim::getShaderDescGroup | ( | const Token & | render_target, |
const std::string & | terminal_type, | ||
const fdk::TimeValue & | time, | ||
ShaderDescGroup & | shader_desc_group_out | ||
) | const |
Build a ShaderDescGroup from this material's graph, sampled at an optional time.
If 'render_target' is not empty it will be prefixed to 'terminal_type' to form the full connection point name. For example if render_target is 'glslfx' and terminal_type is 'surface' then the full name of the surface output property is 'outputs:glslfx:surface'.
Returns 0 if the requested terminal for the render target does not exist, and the ShaderDescGroup will be left empty/uninitialized.
If the material does not have the requested terminal for the render target this is not necessarily an error case as the requesting code can be trying various preferred render targets that may not exist for this particular Material. It's only an error if the requesting code cannot find an expected target port - but it's up to that code to consider it an error and respond appropriately.
Method only supports UsdShade Prims.
©2025 The Foundry Visionmongers, Ltd. All Rights Reserved. |