8#ifndef PXR_USD_PLUGIN_SDR_OSL_OSL_PARSER_H
9#define PXR_USD_PLUGIN_SDR_OSL_OSL_PARSER_H
14#include "pxr/usd/plugin/sdrOsl/api.h"
15#include "pxr/base/vt/value.h"
18#include <OSL/oslquery.h>
20PXR_NAMESPACE_OPEN_SCOPE
97 typedef OSL::OSLQuery::Parameter OslParameter;
120 void _setSdrContext(SdrTokenMap& metadata)
const;
124 SdrShaderPropertyUniquePtrVec _getNodeProperties(
125 const OSL::OSLQuery &query,
127 const std::string& fallbackprefix)
const;
131 SdrTokenMap _getNodeMetadata(
const OSL::OSLQuery &query,
132 const SdrTokenMap &baseMetadata)
const;
135 SdrTokenMap _getPropertyMetadata(
const OslParameter* param,
140 void _injectParserMetadata(SdrTokenMap& metadata,
141 const TfToken& typeName)
const;
146 std::string _getParamAsString(
const OslParameter& param)
const;
149 std::tuple<TfToken, size_t> _getTypeName(
150 const OslParameter* param,
151 const SdrTokenMap& metadata)
const;
155 const SdrOslParserPlugin::OslParameter& param,
156 const std::string& oslType,
158 const SdrTokenMap& metadata
162PXR_NAMESPACE_CLOSE_SCOPE
SDROSL_API const SdrTokenVec & GetDiscoveryTypes() const override
Returns the types of nodes that this plugin can parse.
SDROSL_API SdrShaderNodeUniquePtr ParseShaderNode(const SdrShaderNodeDiscoveryResult &discoveryResult) override
Takes the specified SdrShaderNodeDiscoveryResult instance, which was a result of the discovery proces...
SDROSL_API const TfToken & GetShadingSystem() const override
Returns the shading system that this parser operates in.
Interface for parser plugins.
Represents a node that holds shading information.
Token for efficient comparison, assignment, and hashing of known strings.
Provides a container which may hold any type, and provides introspection and iteration over array typ...
Represents the raw data of a node, and some other bits of metadata, that were determined via a SdrDis...