FnUsdAbstractionLib  14.0.8
usg::MaterialPrim Class Reference

#include <MaterialPrim.h>

Inheritance diagram for usg::MaterialPrim:
usg::Prim

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 Prim::Impl &)
 Copy constructors.
 
 MaterialPrim (const MaterialPrim &)
 
MaterialPrimoperator= (const MaterialPrim &)
 
virtual ~MaterialPrim ()
 Dtor in implementation required for std::unique_ptr to work.
 
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
 
- Public Member Functions inherited from usg::Prim
 Prim ()
 Abstraction handle for casting to UsdPrim. More...
 
 Prim (const Prim &)
 
 Prim (const Prim::Impl &)
 
Primoperator= (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
 
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.
 
Path getPath () const
 Returns the path of the prim.
 
const 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 isPseudoRoot () const
 Returns true if the prim is the pseudo root - ie '/'.
 
bool isA (const Token &typeName) const
 Returns true if the prim is an instance of the given type.
 
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.
 
template<class T >
bool hasApi () const
 Returns true if the prim has the given API.
 
template<class T >
bool hasApi (const Token &instanceName) const
 Returns true if the prim has the given multiple-apply schema API.
 
void setActive (bool active)
 
bool isActive () const
 
bool isDefined () const
 
bool hasPayload () const
 
bool isLoaded () const
 
void load () const
 
void unload () const
 
void setVisible (bool active, fdk::TimeValue time=fdk::defaultTimeValue())
 
bool isVisible (fdk::TimeValue time=fdk::defaultTimeValue()) const
 
bool addAppliedSchema (const Token &schemaName)
 
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 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.
 
void setKind (const Token &kind)
 
Token getKind () const
 
void setInstanceable (bool instanceable)
 
bool isInstanceable () const
 
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< TokengetAttributes () 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 addReference (const std::string &identifier, const Path &path, ListPosition position=ListPosition::PrependBack)
 Adds a reference to the prim's reference list.
 
void addPayload (const std::string &identifier, const Path &path, ListPosition position=ListPosition::PrependBack)
 Adds a payload to the prim's reference 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.
 
size_t getChildren (std::vector< Prim > &children, bool activeOnly=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) const
 Debugging - prints some key info about the prim to a stream.
 
Prim::Impl * impl ()
 
const Prim::Impl * impl () const
 

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 Public Member Functions inherited from usg::Prim
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

- Protected Attributes inherited from usg::Prim
std::unique_ptr< Prim::Impl > _pImpl
 

Detailed Description

Container of shader nodes and top-level terminal connections.

TODO: bother with a ShaderNetwork class above this?

Member Function Documentation

bool usg::MaterialPrim::validate ( )
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 MaterialPrim usg::MaterialPrim::defineInLayer ( const LayerRef &  layer,
const Path path 
)
static

Defines a Material prim in the owner Layer, returning a constructed reference.

static MaterialPrim usg::MaterialPrim::getInStage ( const StageConstRef &  stage,
const Path path 
)
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.



©2024 The Foundry Visionmongers, Ltd. All Rights Reserved.
www.foundry.com