7#ifndef EXT_RMANPKG_25_0_PLUGIN_RENDERMAN_PLUGIN_HD_PRMAN_RENDER_DELEGATE_H
8#define EXT_RMANPKG_25_0_PLUGIN_RENDERMAN_PLUGIN_HD_PRMAN_RENDER_DELEGATE_H
11#include "pxr/imaging/hd/renderDelegate.h"
12#include "pxr/imaging/hd/version.h"
13#include "hdPrman/api.h"
15PXR_NAMESPACE_OPEN_SCOPE
17#define HDPRMAN_RENDER_SETTINGS_TOKENS \
18 ((rileyVariant, "ri:variant")) \
19 ((xpuDevices, "ri:xpudevices")) \
20 ((integrator, "integrator")) \
21 ((integratorName, "ri:integrator:name")) \
22 ((interactiveIntegrator, "interactiveIntegrator")) \
23 ((interactiveIntegratorTimeout, "interactiveIntegratorTimeout")) \
24 ((dataWindowNDC, "dataWindowNDC")) \
25 ((pixelAspectRatio, "pixelAspectRatio")) \
26 ((resolution, "resolution")) \
29 ((instantaneousShutter, "instantaneousShutter")) \
30 ((disableMotionBlur, "disableMotionBlur")) \
31 ((shutterOpen, "shutter:open")) \
32 ((shutterClose, "shutter:close")) \
33 ((experimentalRenderSpec, "experimental:renderSpec")) \
34 ((delegateRenderProducts, "delegateRenderProducts")) \
35 ((batchCommandLine, "batchCommandLine")) \
36 ((houdiniFrame, "houdini:frame")) \
37 ((checkpointInterval, "ri:checkpoint:interval"))
40 HDPRMAN_RENDER_SETTINGS_TOKENS);
42#define HDPRMAN_EXPERIMENTAL_RENDER_SPEC_TOKENS \
54 HDPRMAN_EXPERIMENTAL_RENDER_SPEC_TOKENS);
56#define HDPRMAN_INTEGRATOR_TOKENS \
62 HDPRMAN_INTEGRATOR_TOKENS);
64#define HDPRMAN_RENDER_PRODUCT_TOKENS \
71 HdPrmanRenderProductTokens, HDPRMAN_API,
72 HDPRMAN_RENDER_PRODUCT_TOKENS);
74#define HDPRMAN_AOV_SETTINGS_TOKENS \
75 ((dataType, "dataType")) \
76 ((sourceName, "sourceName")) \
77 ((sourceType, "sourceType")) \
78 ((format, "aovDescriptor.format")) \
79 ((multiSampled, "aovDescriptor.multiSampled")) \
80 ((aovSettings, "aovDescriptor.aovSettings")) \
81 ((clearValue, "aovDescriptor.clearValue"))
84 HdPrmanAovSettingsTokens, HDPRMAN_API,
85 HDPRMAN_AOV_SETTINGS_TOKENS);
87class HdPrmanRenderDelegate :
public HdRenderDelegate
91 HdPrmanRenderDelegate(HdRenderSettingsMap
const& settingsMap);
93 ~HdPrmanRenderDelegate()
override;
101 const TfTokenVector & GetSupportedRprimTypes()
const override;
103 const TfTokenVector & GetSupportedSprimTypes()
const override;
105 const TfTokenVector & GetSupportedBprimTypes()
const override;
107 HdResourceRegistrySharedPtr GetResourceRegistry()
const override;
111 HdRenderSettingDescriptorList GetRenderSettingDescriptors()
const override;
114 HdRenderPassSharedPtr CreateRenderPass(
121 void DestroyInstancer(
HdInstancer *instancer)
override;
124 SdfPath const& rprimId)
override;
126 void DestroyRprim(
HdRprim *rPrim)
override;
129 SdfPath const& sprimId)
override;
133 void DestroySprim(
HdSprim *sPrim)
override;
136 SdfPath const& bprimId)
override;
140 void DestroyBprim(
HdBprim *bPrim)
override;
148 TfToken GetMaterialBindingPurpose()
const override;
149#if HD_API_VERSION < 41
151 TfToken GetMaterialNetworkSelector()
const override;
159#if HD_API_VERSION > 46
164#if HD_API_VERSION >= 60
166 HdContainerDataSourceHandle GetCapabilities()
const override;
170 void SetRenderSetting(
TfToken const &key,
VtValue const &value)
override;
177 bool IsPauseSupported()
const override {
return false; }
181 bool IsStopSupported()
const override;
185 bool IsStopped()
const override;
189 bool Stop(
bool blocking)
override;
193 bool Restart()
override;
195#if HD_API_VERSION >= 55
204 void SetTerminalSceneIndex(
205 const HdSceneIndexBaseRefPtr &inputSceneIndex)
override;
208 void Update()
override;
217 HdRenderSettingsMap GetRenderSettingsMap()
const;
220 bool IsInteractive()
const;
227 HdPrmanRenderDelegate(
const HdPrmanRenderDelegate &) =
delete;
228 HdPrmanRenderDelegate &operator =(
const HdPrmanRenderDelegate &) =
delete;
237 std::shared_ptr<class HdPrman_RenderParam> _renderParam;
239#if HD_API_VERSION >= 55
240 std::unique_ptr<class HdPrman_TerminalSceneIndexObserver>
244 struct _RileySceneIndices;
245 std::unique_ptr<_RileySceneIndices> _rileySceneIndices;
247 HdResourceRegistrySharedPtr _resourceRegistry;
248 HdRenderPassSharedPtr _renderPass;
249 HdRenderSettingDescriptorList _settingDescriptors;
252PXR_NAMESPACE_CLOSE_SCOPE
Bprim (buffer prim) is a base class of managing a blob of data that is used to communicate between th...
Tracks changes from the HdSceneDelegate, providing invalidation cues to the render engine.
This class exists to facilitate point cloud style instancing.
The Hydra render index is a flattened representation of the client scene graph, which may be composed...
The HdRenderParam is an opaque (to core Hydra) handle, to an object that is obtained from the render ...
A named, semantic collection of objects.
The render engine state for a given rprim from the scene graph.
Adapter class providing data exchange with the client scene graph.
Sprim (state prim) is a base class of managing state for non-drawable scene entity (e....
A path value used to locate objects in layers or scenegraphs.
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...
#define TF_DECLARE_PUBLIC_TOKENS(...)
Macro to define public tokens.
A bundle of state describing an AOV ("Arbitrary Output Variable") display channel.
std::vector< TfToken > TfTokenVector
Convenience types.