/* SPDX-License-Identifier: Apache-2.0 * Copyright 2022 NVIDIA Corporation * Copyright 2022 Blender Foundation */ #include "hydra/plugin.h" #include "hydra/render_delegate.h" #include "util/log.h" #include "util/path.h" #include #include #include #include #include PXR_NAMESPACE_OPEN_SCOPE #ifdef WITH_CYCLES_LOGGING TF_DEFINE_ENV_SETTING(CYCLES_LOGGING, false, "Enable Cycles logging") TF_DEFINE_ENV_SETTING(CYCLES_LOGGING_SEVERITY, 1, "Cycles logging verbosity") #endif HdCyclesPlugin::HdCyclesPlugin() { const PlugPluginPtr plugin = PLUG_THIS_PLUGIN; // Initialize Cycles paths relative to the plugin resource path std::string rootPath = PXR_NS::ArchAbsPath(plugin->GetResourcePath()); CCL_NS::path_init(std::move(rootPath)); #ifdef WITH_CYCLES_LOGGING if (TfGetEnvSetting(CYCLES_LOGGING)) { CCL_NS::util_logging_start(); CCL_NS::util_logging_verbosity_set(TfGetEnvSetting(CYCLES_LOGGING_SEVERITY)); } #endif } HdCyclesPlugin::~HdCyclesPlugin() { } bool HdCyclesPlugin::IsSupported() const { return true; } HdRenderDelegate *HdCyclesPlugin::CreateRenderDelegate() { return CreateRenderDelegate({}); } HdRenderDelegate *HdCyclesPlugin::CreateRenderDelegate(const HdRenderSettingsMap &settingsMap) { return new HD_CYCLES_NS::HdCyclesDelegate(settingsMap); } void HdCyclesPlugin::DeleteRenderDelegate(HdRenderDelegate *renderDelegate) { delete renderDelegate; } // USD's type system accounts for namespace, so we'd have to register our name as // HdCycles::HdCyclesPlugin in plugInfo.json, which isn't all that bad for JSON, // but those colons may cause issues for any USD specific tooling. So just put our // plugin class in the pxr namespace (which USD's type system will elide). TF_REGISTRY_FUNCTION(TfType) { HdRendererPluginRegistry::Define(); } PXR_NAMESPACE_CLOSE_SCOPE