Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion moonrayShaderDiscovery/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ target_include_directories(${component}
target_link_libraries(${component}
PUBLIC
# pxr
ar ndr sdr
ar sdr
Boost::headers
# Python::Module
)
Expand Down
28 changes: 14 additions & 14 deletions moonrayShaderDiscovery/discoveryPlugin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,19 @@
#include "pxr/usd/ar/resolver.h"
#include "pxr/usd/ar/resolverScopedCache.h"

#include "pxr/usd/ndr/debugCodes.h"
#include "pxr/usd/sdr/debugCodes.h"

PXR_NAMESPACE_OPEN_SCOPE

TfToken moonrayNodeType("moonrayClass");

namespace {

bool examineFiles(NdrNodeDiscoveryResultVec* foundNodes,
NdrStringSet* foundNames,
const NdrDiscoveryPluginContext* context,
bool examineFiles(SdrShaderNodeDiscoveryResultVec* foundNodes,
SdrStringSet* foundNames,
const SdrDiscoveryPluginContext* context,
const std::string& dirPath,
const NdrStringVec& dirFileNames)
const SdrStringVec& dirFileNames)
{
for (const std::string& fileName : dirFileNames) {
std::string extension = TfStringToLower(TfGetExtension(fileName));
Expand All @@ -33,15 +33,15 @@ bool examineFiles(NdrNodeDiscoveryResultVec* foundNodes,
std::string className = TfStringGetBeforeSuffix(fileName, '.');

if (!foundNames->insert(className).second) {
TF_DEBUG(NDR_DISCOVERY).Msg(
TF_DEBUG(SDR_DISCOVERY).Msg(
"Duplicate moonray class [%s] found at URI [%s], ignoring.",
className.c_str(), uri.c_str());
continue;
}

foundNodes->emplace_back(
NdrIdentifier(className), // Identifier
NdrVersion().GetAsDefault(), // Version
SdrIdentifier(className), // Identifier
SdrVersion().GetAsDefault(), // Version
className, // Name
TfToken(), // Family
moonrayNodeType, // DiscoveryType
Expand All @@ -57,7 +57,7 @@ bool examineFiles(NdrNodeDiscoveryResultVec* foundNodes,
}
} // namespace {

const NdrStringVec&
const SdrStringVec&
MoonrayDiscoveryPlugin::GetSearchURIs() const
{
return _searchPaths;
Expand All @@ -71,11 +71,11 @@ MoonrayDiscoveryPlugin::MoonrayDiscoveryPlugin()
}
}

NdrNodeDiscoveryResultVec
MoonrayDiscoveryPlugin::DiscoverNodes(const Context& context)
SdrShaderNodeDiscoveryResultVec
MoonrayDiscoveryPlugin::DiscoverShaderNodes(const Context& context)
{
NdrNodeDiscoveryResultVec foundNodes;
NdrStringSet foundNames;
SdrShaderNodeDiscoveryResultVec foundNodes;
SdrStringSet foundNames;
ArResolverScopedCache resolverCache;

for (const std::string& searchPath : _searchPaths) {
Expand Down Expand Up @@ -103,6 +103,6 @@ MoonrayDiscoveryPlugin::DiscoverNodes(const Context& context)
return foundNodes;
}

NDR_REGISTER_DISCOVERY_PLUGIN(MoonrayDiscoveryPlugin);
SDR_REGISTER_DISCOVERY_PLUGIN(MoonrayDiscoveryPlugin);

PXR_NAMESPACE_CLOSE_SCOPE
13 changes: 6 additions & 7 deletions moonrayShaderDiscovery/discoveryPlugin.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,25 +7,24 @@
#include "pxr/pxr.h"
#include "pxr/base/tf/token.h"

#include "pxr/usd/ndr/declare.h"
#include "pxr/usd/ndr/discoveryPlugin.h"
#include "pxr/usd/ndr/parserPlugin.h"
#include "pxr/usd/sdr/declare.h"
#include "pxr/usd/sdr/discoveryPlugin.h"

PXR_NAMESPACE_OPEN_SCOPE

class MoonrayDiscoveryPlugin : public NdrDiscoveryPlugin {
class MoonrayDiscoveryPlugin : public SdrDiscoveryPlugin {
public:
MoonrayDiscoveryPlugin();

~MoonrayDiscoveryPlugin() override = default;

virtual NdrNodeDiscoveryResultVec DiscoverNodes(const Context &context)
virtual SdrShaderNodeDiscoveryResultVec DiscoverShaderNodes(const Context &context)
override;

virtual const NdrStringVec& GetSearchURIs() const override;
virtual const SdrStringVec& GetSearchURIs() const override;

private:
NdrStringVec _searchPaths;
SdrStringVec _searchPaths;
};

PXR_NAMESPACE_CLOSE_SCOPE
Expand Down
5 changes: 2 additions & 3 deletions moonrayShaderDiscovery/moduleDeps.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,10 @@ TF_REGISTRY_FUNCTION(TfScriptModuleLoader) {
// List of direct dependencies for this library.
const std::vector<TfToken> reqs = {
TfToken("ar"),
TfToken("ndr"),
TfToken("sdr")
};
TfScriptModuleLoader::GetInstance().
RegisterLibrary(TfToken("moonrayShaderDiscovery"), TfToken("pxr.MoonrayShaderDiscovery"), reqs);
TfScriptModuleLoader::GetInstance().RegisterLibrary(
TfToken("moonrayShaderDiscovery"), TfToken(), reqs);
}

PXR_NAMESPACE_CLOSE_SCOPE
2 changes: 1 addition & 1 deletion moonrayShaderDiscovery/plugInfo.json.in
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"Info": {
"Types": {
"MoonrayDiscoveryPlugin" : {
"bases": ["NdrDiscoveryPlugin"],
"bases": ["SdrDiscoveryPlugin"],
"displayName": "Moonray shader definition discovery plugin."
}
}
Expand Down
10 changes: 9 additions & 1 deletion moonrayShaderParser/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,19 @@ target_include_directories(${component}
target_link_libraries(${component}
PUBLIC
# pxr
ar ndr sdr
ar sdr
Boost::headers
# Python::Module
)

# SideFX wraps Boost.Python in USD's pxr_boost namespace. VtValue's inline
# Python conversion helpers therefore resolve from libpxr_python rather than
# Houdini's unwrapped libhboost_python library.
if(IsDarwinPlatform AND DEFINED ENV{PXR_LIB_PREFIX})
target_link_libraries(${component} PUBLIC
"$ENV{PXR_LIB_PREFIX}/libpxr_python${CMAKE_SHARED_LIBRARY_SUFFIX}")
endif()

if(NOT IsDarwinPlatform)
# Use RUNPATH instead of RPATH
target_link_options(${component} PRIVATE ${GLOBAL_LINK_FLAGS})
Expand Down
5 changes: 2 additions & 3 deletions moonrayShaderParser/moduleDeps.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,10 @@ TF_REGISTRY_FUNCTION(TfScriptModuleLoader) {
// List of direct dependencies for this library.
const std::vector<TfToken> reqs = {
TfToken("ar"),
TfToken("ndr"),
TfToken("sdr")
};
TfScriptModuleLoader::GetInstance().
RegisterLibrary(TfToken("moonrayShaderParser"), TfToken("pxr.MoonrayShaderParser"), reqs);
TfScriptModuleLoader::GetInstance().RegisterLibrary(
TfToken("moonrayShaderParser"), TfToken(), reqs);
}

PXR_NAMESPACE_CLOSE_SCOPE
47 changes: 24 additions & 23 deletions moonrayShaderParser/parserPlugin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
#include <pxr/base/vt/array.h>

#include "pxr/usd/ar/resolver.h"
#include "pxr/usd/ndr/nodeDiscoveryResult.h"
#include "pxr/usd/sdr/shaderNodeDiscoveryResult.h"
#include "pxr/usd/sdr/shaderNode.h"
#include "pxr/usd/sdr/shaderProperty.h"

Expand Down Expand Up @@ -193,7 +193,7 @@ const TfToken getNodeContext(const JsObject& definition)
return TfToken(nodeType);
}

NdrTokenMap getNodeMetadata(const NdrTokenMap &baseMetadata,
SdrTokenMap getNodeMetadata(const SdrTokenMap &baseMetadata,
const JsObject& definition)
{
// we don't have any special metadata
Expand All @@ -204,17 +204,17 @@ SdrShaderProperty* makeOutputProperty(const std::string& nodeType)
{
if (nodeType == "Material" || nodeType == "Volume") {
return new SdrShaderProperty(TfToken("out"), SdrPropertyTypes->Terminal, VtValue(TfToken()),
true, 0, NdrTokenMap(), NdrTokenMap(), NdrOptionVec());
true, 0, SdrTokenMap(), SdrTokenMap(), SdrOptionVec());
}
if (nodeType == "Map" || nodeType == "Displacement") {
return new SdrShaderProperty(TfToken("out"), SdrPropertyTypes->Float, VtValue(GfVec3f(0,0,0)),
true, 3, NdrTokenMap(), NdrTokenMap(), NdrOptionVec());
true, 3, SdrTokenMap(), SdrTokenMap(), SdrOptionVec());
}
return nullptr;
}

NdrPropertyUniquePtrVec
getNodeProperties(const NdrNodeDiscoveryResult& discoveryResult,
SdrShaderPropertyUniquePtrVec
getNodeProperties(const SdrShaderNodeDiscoveryResult& discoveryResult,
const JsObject& definition)
{
// groups are defined by listing the attributes in them : we need
Expand All @@ -240,7 +240,7 @@ getNodeProperties(const NdrNodeDiscoveryResult& discoveryResult,
attributes = definition.at("attributes").GetJsObject();
numAttributes = attributes.size();
}
NdrPropertyUniquePtrVec properties(numAttributes);
SdrShaderPropertyUniquePtrVec properties(numAttributes);

for (const auto& attribute : attributes) {
const std::string& attrName = attribute.first;
Expand All @@ -254,7 +254,7 @@ getNodeProperties(const NdrNodeDiscoveryResult& discoveryResult,

VtValue propDefault = convertDefault(attrDefault,attrType);

NdrTokenMap metadata;
SdrTokenMap metadata;
auto mdIt = attrData.find("metadata");
if (mdIt != attrData.end()) {
const JsObject& attrMetadata = mdIt->second.GetJsObject();
Expand Down Expand Up @@ -294,9 +294,9 @@ getNodeProperties(const NdrNodeDiscoveryResult& discoveryResult,
}

// we don't have any additional UI hints
NdrTokenMap hints;
SdrTokenMap hints;

NdrOptionVec options;
SdrOptionVec options;
auto enumIt = attrData.find("enum");
if (enumIt != attrData.end()) {
// type for an enum should be string (per Usd), not int (per RDL)
Expand Down Expand Up @@ -339,7 +339,7 @@ getNodeProperties(const NdrNodeDiscoveryResult& discoveryResult,

} // namespace {

NDR_REGISTER_PARSER_PLUGIN(MoonrayParserPlugin);
SDR_REGISTER_PARSER_PLUGIN(MoonrayParserPlugin);

TF_DEFINE_PRIVATE_TOKENS(
_tokens,
Expand All @@ -350,10 +350,10 @@ TF_DEFINE_PRIVATE_TOKENS(

);

const NdrTokenVec&
const SdrTokenVec&
MoonrayParserPlugin::GetDiscoveryTypes() const
{
static const NdrTokenVec _DiscoveryTypes = {_tokens->discoveryType};
static const SdrTokenVec _DiscoveryTypes = {_tokens->discoveryType};
return _DiscoveryTypes;
}

Expand All @@ -363,13 +363,14 @@ MoonrayParserPlugin::GetSourceType() const
return _tokens->sourceType;
}

NdrNodeUniquePtr
MoonrayParserPlugin::Parse(const NdrNodeDiscoveryResult& discoveryResult)
SdrShaderNodeUniquePtr
MoonrayParserPlugin::ParseShaderNode(
const SdrShaderNodeDiscoveryResult& discoveryResult)
{
if (discoveryResult.uri.empty()) {
TF_WARN("Invalid NdrNodeDiscoveryResult with identifier %s: uri is empty.",
TF_WARN("Invalid SdrShaderNodeDiscoveryResult with identifier %s: uri is empty.",
discoveryResult.identifier.GetText());
return NdrParserPlugin::GetInvalidNode(discoveryResult);
return SdrParserPlugin::GetInvalidShaderNode(discoveryResult);
}

#if AR_VERSION == 1
Expand All @@ -382,7 +383,7 @@ MoonrayParserPlugin::Parse(const NdrNodeDiscoveryResult& discoveryResult)
if (!localFetchSuccessful) {
TF_WARN("Could not localize the Moonray shader definition at URI [%s] into a local path.",
discoveryResult.uri.c_str());
return NdrParserPlugin::GetInvalidNode(discoveryResult);
return SdrParserPlugin::GetInvalidShaderNode(discoveryResult);
}
#endif

Expand All @@ -391,7 +392,7 @@ MoonrayParserPlugin::Parse(const NdrNodeDiscoveryResult& discoveryResult)
if (ifs.fail()) {
TF_WARN("Could not open the Moonray shader definition at URI [%s]. ",
discoveryResult.resolvedUri.c_str());
return NdrParserPlugin::GetInvalidNode(discoveryResult);
return SdrParserPlugin::GetInvalidShaderNode(discoveryResult);
}

try {
Expand All @@ -401,16 +402,16 @@ MoonrayParserPlugin::Parse(const NdrNodeDiscoveryResult& discoveryResult)
TF_WARN("JSON error parsing Moonray shader definition at URI [%s]: line %d col %d : %s",
discoveryResult.resolvedUri.c_str(),
error.line,error.column,error.reason.c_str());
return NdrParserPlugin::GetInvalidNode(discoveryResult);
return SdrParserPlugin::GetInvalidShaderNode(discoveryResult);
}

const JsObject& definition = jsDef.GetJsObject().at("scene_classes").
GetJsObject().at(discoveryResult.name).GetJsObject();
return NdrNodeUniquePtr(new SdrShaderNode(
return SdrShaderNodeUniquePtr(new SdrShaderNode(
discoveryResult.identifier,
discoveryResult.version,
discoveryResult.name,
discoveryResult.family,
discoveryResult.function,
getNodeContext(definition),
_tokens->sourceType,
discoveryResult.uri,
Expand All @@ -423,7 +424,7 @@ MoonrayParserPlugin::Parse(const NdrNodeDiscoveryResult& discoveryResult)
"An invalid Sdr node definition will be created.",
e.what(), discoveryResult.resolvedUri.c_str());
}
return NdrParserPlugin::GetInvalidNode(discoveryResult);
return SdrParserPlugin::GetInvalidShaderNode(discoveryResult);
}

PXR_NAMESPACE_CLOSE_SCOPE
15 changes: 8 additions & 7 deletions moonrayShaderParser/parserPlugin.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,24 +7,25 @@
#include "pxr/pxr.h"
#include "pxr/base/tf/token.h"

#include "pxr/usd/ndr/declare.h"
#include "pxr/usd/ndr/parserPlugin.h"
#include "pxr/usd/sdr/declare.h"
#include "pxr/usd/sdr/parserPlugin.h"

PXR_NAMESPACE_OPEN_SCOPE

class NdrNode;
class NdrNodeDiscoveryResult;
class SdrShaderNode;
struct SdrShaderNodeDiscoveryResult;

class MoonrayParserPlugin : public NdrParserPlugin {
class MoonrayParserPlugin : public SdrParserPlugin {
public:
MoonrayParserPlugin() = default;

~MoonrayParserPlugin() override = default;

NdrNodeUniquePtr Parse(const NdrNodeDiscoveryResult &discoveryResult)
SdrShaderNodeUniquePtr ParseShaderNode(
const SdrShaderNodeDiscoveryResult &discoveryResult)
override;

const NdrTokenVec &GetDiscoveryTypes() const override;
const SdrTokenVec &GetDiscoveryTypes() const override;

const TfToken &GetSourceType() const override;

Expand Down
2 changes: 1 addition & 1 deletion moonrayShaderParser/plugInfo.json.in
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"Info": {
"Types": {
"MoonrayParserPlugin" : {
"bases": ["NdrParserPlugin"],
"bases": ["SdrParserPlugin"],
"displayName": "Moonray shader definition parser plugin."
}
}
Expand Down
Loading