All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SdrOslParserPlugin Class Reference

#include <oslParser.h>

+ Inheritance diagram for SdrOslParserPlugin:

Public Types

typedef HOSL::OSLQuery::Parameter OslParameter

Public Member Functions

SDROSL_API SdrOslParserPlugin ()
SDROSL_API ~SdrOslParserPlugin ()
SDROSL_API NdrNodeUniquePtr Parse (const NdrNodeDiscoveryResult &discoveryResult) override
SDROSL_API const NdrTokenVecGetDiscoveryTypes () const override
SDROSL_API const TfTokenGetSourceType () const override
- Public Member Functions inherited from NdrParserPlugin
NDR_API NdrParserPlugin ()
virtual NDR_API ~NdrParserPlugin ()
- Public Member Functions inherited from TfWeakBase
 TfWeakBase ()
 TfWeakBase (const TfWeakBase &)
const TfWeakBase__GetTfWeakBase__ () const
const TfWeakBaseoperator= (const TfWeakBase &)
void EnableNotification2 () const
TF_API void const * GetUniqueIdentifier () const

Additional Inherited Members

- Static Public Member Functions inherited from NdrParserPlugin
static NDR_API NdrNodeUniquePtr GetInvalidNode (const NdrNodeDiscoveryResult &dr)
- Protected Member Functions inherited from TfWeakBase
 ~TfWeakBase ()
TfRefPtr< Tf_Remnant_Register () const
template<class T >
TfRefPtr< Tf_Remnant_Register (T *tempRmnt) const
bool _HasRemnant () const

Detailed Description

Parses OSL nodes. For more information on parser plugins, see the documentation for NdrParserPlugin.

Metadata Schema

The following metadata is pulled out of the shader and available on the destination as outlined below.

Node Metadata

OSL Metadata Key Destination
category GetCategory()
departments GetDepartments()
help GetHelp()
label GetLabel()
primvars GetPrimvars(), GetAdditionalPrimvarProperties()
_everything else_ GetMetadata()

Property Metadata

OSL Metadata Key Destination
connectable IsConnectable()
sdrDefinitionName renames parameter, sends original osl param name to

| SdrShaderProperty::GetImplementationName() page | GetPage() help | GetHelp() label | GetLabel() isDynamicArray | IsDynamicArray() options | GetOptions() vstructMemberName | GetVStructMemberName() vstructMemberOf | GetVStructMemberOf() everything else | GetMetadata()

Options Format

Multiple options are separated with the pipe '|' character; options can be specified in one of two ways:

  • key1|key2|key3|...
  • key1:value1|key2:value2|...

In the first case, where the values are not specified, the value of the option will be available on the node as an empty string.

Primvar Format

Multiple primvars are separated with the pipe '|' character; primvars can be specified in one of two ways:

  • A string not prefixed with a '$'; this indicates a normal primvar
  • A string prefixed with '$'; the part after the '$' indicates the name of a string-typed input on the node whose value contains additional primvars

Definition at line 111 of file oslParser.h.

Member Typedef Documentation

typedef HOSL::OSLQuery::Parameter SdrOslParserPlugin::OslParameter

Definition at line 114 of file oslParser.h.

Constructor & Destructor Documentation

SDROSL_API SdrOslParserPlugin::SdrOslParserPlugin ( )
SDROSL_API SdrOslParserPlugin::~SdrOslParserPlugin ( )

Member Function Documentation

SDROSL_API const NdrTokenVec& SdrOslParserPlugin::GetDiscoveryTypes ( ) const

Returns the types of nodes that this plugin can parse.

"Type" here is the discovery type (in the case of files, this will probably be the file extension, but in other systems will be data that can be determined during discovery). This type should only be used to match up a NdrNodeDiscoveryResult to its parser plugin; this value is not exposed in the node's API.

Implements NdrParserPlugin.

SDROSL_API const TfToken& SdrOslParserPlugin::GetSourceType ( ) const

Returns the source type that this parser operates on.

A source type is the most general type for a node. The parser plugin is responsible for parsing all discovery results that have the types declared under GetDiscoveryTypes(), and those types are collectively identified as one "source type".

Implements NdrParserPlugin.

SDROSL_API NdrNodeUniquePtr SdrOslParserPlugin::Parse ( const NdrNodeDiscoveryResult discoveryResult)

Takes the specified NdrNodeDiscoveryResult instance, which was a result of the discovery process, and generates a new NdrNode. The node's name, source type, and family must match.

Implements NdrParserPlugin.

The documentation for this class was generated from the following file: