8 #ifndef PXR_USD_SDR_REGISTRY_H
9 #define PXR_USD_SDR_REGISTRY_H
192 const std::string&
name,
207 const std::string& name,
224 const std::string& name,
274 const std::string &sourceCode,
290 const std::string& name,
380 using _TypeToParserPluginMap =
381 std::unordered_map<TfToken, SdrParserPlugin*, TfToken::HashFunctor>;
385 using _ShaderNodeMapKey = std::pair<SdrIdentifier, TfToken>;
386 using _ShaderNodeMap =
387 std::unordered_map<_ShaderNodeMapKey, SdrShaderNodeUniquePtr, TfHash>;
391 using _DiscoveryResultsByIdentifier = std::unordered_multimap<
393 using _DiscoveryResultsByIdentifierRange =
394 std::pair<_DiscoveryResultsByIdentifier::const_iterator,
395 _DiscoveryResultsByIdentifier::const_iterator>;
400 using _DiscoveryResultPtrsByName = std::unordered_multimap<
402 using _DiscoveryResultPtrsByNameRange =
403 std::pair<_DiscoveryResultPtrsByName::const_iterator,
404 _DiscoveryResultPtrsByName::const_iterator>;
408 mutable std::mutex _discoveryResultMutex;
413 mutable std::mutex _nodeMapMutex;
417 void _RunDiscoveryPlugins(
425 void _FindAndInstantiateDiscoveryPlugins();
428 void _FindAndInstantiateParserPlugins();
432 void _InstantiateParserPlugins(
const std::set<TfType>& parserPluginTypes);
446 _DiscoveryResultsByIdentifierRange
range,
453 _DiscoveryResultPtrsByNameRange
range,
const TfToken& shadingSystem,
458 const _ShaderNodeMapKey &key)
const;
477 _GetParserForDiscoveryType(
const TfToken& discoveryType)
const;
485 _TypeToParserPluginMap _parserPluginMap;
488 std::vector<std::unique_ptr<SdrParserPlugin>> _parserPlugins;
493 _DiscoveryResultsByIdentifier _discoveryResultsByIdentifier;
494 _DiscoveryResultPtrsByName _discoveryResultPtrsByName;
503 _ShaderNodeMap _nodeMap;
508 #endif // PXR_USD_SDR_REGISTRY_H
std::vector< std::string > SdrStringVec
SDR_API SdrShaderNodeQueryResult RunQuery(const SdrShaderNodeQuery &query)
SdrDiscoveryPluginRefPtrVector DiscoveryPluginRefPtrVec
SdrVersionFilter
Enumeration used to select nodes by version.
SDR_API SdrShaderNodeConstPtr GetShaderNodeByIdentifier(const SdrIdentifier &identifier, const SdrTokenVec &shadingSystemPriority=SdrTokenVec())
SDR_API SdrShaderNodeConstPtr GetShaderNodeFromSourceCode(const std::string &sourceCode, const TfToken &shadingSystem, const SdrTokenMap &metadata=SdrTokenMap())
SDR_API SdrShaderNodeConstPtr GetShaderNodeByName(const std::string &name, const SdrTokenVec &shadingSystemPriority=SdrTokenVec(), SdrVersionFilter filter=SdrVersionFilterDefaultOnly)
SdrRegistry & operator=(const SdrRegistry &)=delete
#define PXR_NAMESPACE_OPEN_SCOPE
SDR_API SdrShaderNodePtrVec GetShaderNodesByFunction(const TfToken &function=TfToken(), SdrVersionFilter filter=SdrVersionFilterDefaultOnly)
static SDR_API SdrRegistry & GetInstance()
Get the single SdrRegistry instance.
std::vector< SdrIdentifier > SdrIdentifierVec
SdrShaderNode const * SdrShaderNodeConstPtr
SDR_API SdrShaderNodeConstPtr GetShaderNodeFromAsset(const SdfAssetPath &shaderAsset, const SdrTokenMap &metadata=SdrTokenMap(), const TfToken &subIdentifier=TfToken(), const TfToken &shadingSystem=TfToken())
SDR_API SdrStringVec GetSearchURIs() const
SdrShaderNodeConstPtrVec SdrShaderNodePtrVec
SDR_API SdrShaderNodeConstPtr GetShaderNodeByNameAndSystem(const std::string &name, const TfToken &shadingSystem, SdrVersionFilter filter=SdrVersionFilterDefaultOnly)
SDR_API SdrShaderNodePtrVec GetAllShaderNodes()
SDR_API SdrShaderNodeConstPtr GetShaderNodeByIdentifierAndType(const SdrIdentifier &identifier, const TfToken &nodeType)
SDR_API void AddDiscoveryResult(SdrShaderNodeDiscoveryResult &&discoveryResult)
SDR_API void SetExtraParserPlugins(const std::vector< TfType > &pluginTypes)
GLuint const GLchar * name
SDR_API SdrTokenVec GetAllShaderNodeShadingSystems() const
SDR_API SdrShaderNodeConstPtr GetShaderNodeByNameAndType(const std::string &name, const TfToken &nodeType, SdrVersionFilter filter=SdrVersionFilterDefaultOnly)
SDR_API SdrShaderNodePtrVec GetShaderNodesByIdentifier(const SdrIdentifier &identifier)
SDR_API SdrTokenVec GetAllShaderNodeSourceTypes() const
std::unique_ptr< SdrShaderNode > SdrShaderNodeUniquePtr
friend class _DiscoveryContext
#define PXR_NAMESPACE_CLOSE_SCOPE
std::vector< TfToken > SdrTokenVec
SdrShaderNodeQueryResult stores the results of an SdrShaderNodeQuery.
SDR_API SdrStringVec GetShaderNodeNames(const TfToken &function=TfToken()) const
SDR_API SdrIdentifierVec GetShaderNodeIdentifiers(const TfToken &function=TfToken(), SdrVersionFilter filter=SdrVersionFilterDefaultOnly) const
SDR_API void SetExtraDiscoveryPlugins(DiscoveryPluginRefPtrVec plugins)
SDR_API SdrShaderNodePtrVec GetShaderNodesByName(const std::string &name, SdrVersionFilter filter=SdrVersionFilterDefaultOnly)
std::unordered_map< TfToken, std::string, TfToken::HashFunctor > SdrTokenMap
std::set< TfToken, TfTokenFastArbitraryLessThan > Set
SDR_API SdrShaderNodePtrVec GetShaderNodesByFamily(const TfToken &family=TfToken(), SdrVersionFilter filter=SdrVersionFilterDefaultOnly)
SDR_API SdrShaderNodeConstPtr GetShaderNodeByIdentifierAndSystem(const SdrIdentifier &identifier, const TfToken &shadingSystem)
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter