HDK
|
#include <parserPlugin.h>
Public Member Functions | |
SDR_API | SdrParserPlugin () |
virtual SDR_API | ~SdrParserPlugin () |
SDR_API NdrNodeUniquePtr | Parse (const NdrNodeDiscoveryResult &discoveryResult) override |
virtual SDR_API SdrShaderNodeUniquePtr | ParseShaderNode (const SdrShaderNodeDiscoveryResult &discoveryResult)=0 |
![]() | |
NDR_API | NdrParserPlugin () |
virtual NDR_API | ~NdrParserPlugin () |
virtual NDR_API const NdrTokenVec & | GetDiscoveryTypes () const =0 |
virtual NDR_API const TfToken & | GetSourceType () const =0 |
![]() | |
TfWeakBase () | |
TfWeakBase (const TfWeakBase &) | |
const TfWeakBase & | __GetTfWeakBase__ () const |
const TfWeakBase & | operator= (const TfWeakBase &) |
void | EnableNotification2 () const |
TF_API void const * | GetUniqueIdentifier () const |
Static Public Member Functions | |
static SDR_API SdrShaderNodeUniquePtr | GetInvalidShaderNode (const SdrShaderNodeDiscoveryResult &dr) |
![]() | |
static NDR_API NdrNodeUniquePtr | GetInvalidNode (const NdrNodeDiscoveryResult &dr) |
Additional Inherited Members | |
![]() | |
~TfWeakBase () | |
TfRefPtr< Tf_Remnant > | _Register () const |
template<class T > | |
TfRefPtr< Tf_Remnant > | _Register (T *tempRmnt) const |
bool | _HasRemnant () const |
Interface for parser plugins.
Parser plugins take a SdrShaderNodeDiscoveryResult
from the discovery process and creates a full SdrShaderNode
instance (or, in the case of a real-world scenario, a specialized node that derives from SdrShaderNode
). The parser that is selected to run is ultimately decided by the registry, and depends on the SdrShaderNodeDiscoveryResult
's discoveryType
member. A parser plugin's GetDiscoveryTypes()
method is how this link is made. If a discovery result has a discoveryType
of 'foo', and SomeParserPlugin
has 'foo' included in its GetDiscoveryTypes()
return value, SomeParserPlugin
will parse that discovery result.
Another kind of 'type' within the parser plugin is the 'source type'. The discovery type simply acts as a way to link a discovery result to a parser plugin. On the other hand, a 'source type' acts as an umbrella type that groups all of the discovery types together. For example, if a plugin handled discovery types 'foo', 'bar', and 'baz' (which are all related because they are all handled by the same parser), they may all be grouped under one unifying source type. This type is available on the node via SdrShaderNode::GetSourceType()
.
There are three steps to creating a parser plugin:
sdrOsl
. The Parse()
method should return the specialized node that derives from SdrShaderNode
(and this node should also be constructed with its specialized properties). Examples of a specialized node and property class are SdrShaderNode
and SdrShaderProperty
. In the same folder as your plugin, create a plugInfo.json
file. This file must be formatted like so, substituting YOUR_LIBRARY_NAME
, YOUR_CLASS_NAME
, and YOUR_DISPLAY_NAME
:
The SDR ships with one parser plugin, the SdrOslParserPlugin
. Take a look at its plugInfo.json file for example values for YOUR_LIBRARY_NAME
, YOUR_CLASS_NAME
, and YOUR_DISPLAY_NAME
. If multiple parser plugins exist in the same folder, you can continue adding additional plugins under the Types
key in the JSON. More detailed information about the plugInfo.json format can be found in the documentation for the plug
library (in pxr/base).
Definition at line 115 of file parserPlugin.h.
SDR_API SdrParserPlugin::SdrParserPlugin | ( | ) |
|
virtual |
|
static |
Gets an invalid node based on the discovery result provided. An invalid node is a node that has no properties, but may have basic data found during discovery.
|
overridevirtual |
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.
|
pure virtual |
Takes the specified SdrShaderNodeDiscoveryResult
instance, which was a result of the discovery process, and generates a new SdrShaderNode
. The node's name, source type, and family must match.
Implemented in SdrOslParserPlugin, and UsdShadeShaderDefParserPlugin.