24#ifndef EXT_RMANPKG_25_0_PLUGIN_RENDERMAN_PLUGIN_HD_PRMAN_RENDER_DELEGATE_H
25#define EXT_RMANPKG_25_0_PLUGIN_RENDERMAN_PLUGIN_HD_PRMAN_RENDER_DELEGATE_H
28#include "pxr/imaging/hd/renderDelegate.h"
29#include "pxr/imaging/hd/version.h"
30#include "hdPrman/api.h"
32PXR_NAMESPACE_OPEN_SCOPE
34#define HDPRMAN_RENDER_SETTINGS_TOKENS \
35 ((rileyVariant, "ri:variant")) \
36 ((xpuDevices, "ri:xpudevices")) \
37 ((integrator, "integrator")) \
38 ((integratorName, "ri:integrator:name")) \
39 ((interactiveIntegrator, "interactiveIntegrator")) \
40 ((interactiveIntegratorTimeout, "interactiveIntegratorTimeout")) \
41 ((dataWindowNDC, "dataWindowNDC")) \
42 ((pixelAspectRatio, "pixelAspectRatio")) \
43 ((resolution, "resolution")) \
46 ((instantaneousShutter, "instantaneousShutter")) \
47 ((disableMotionBlur, "disableMotionBlur")) \
48 ((shutterOpen, "shutter:open")) \
49 ((shutterClose, "shutter:close")) \
50 ((experimentalRenderSpec, "experimental:renderSpec")) \
51 ((delegateRenderProducts, "delegateRenderProducts")) \
52 ((batchCommandLine, "batchCommandLine")) \
53 ((houdiniFrame, "houdini:frame")) \
54 ((checkpointInterval, "ri:checkpoint:interval"))
57 HDPRMAN_RENDER_SETTINGS_TOKENS);
59#define HDPRMAN_EXPERIMENTAL_RENDER_SPEC_TOKENS \
71 HDPRMAN_EXPERIMENTAL_RENDER_SPEC_TOKENS);
73#define HDPRMAN_INTEGRATOR_TOKENS \
79 HDPRMAN_INTEGRATOR_TOKENS);
81#define HDPRMAN_RENDER_PRODUCT_TOKENS \
88 HdPrmanRenderProductTokens, HDPRMAN_API,
89 HDPRMAN_RENDER_PRODUCT_TOKENS);
91#define HDPRMAN_AOV_SETTINGS_TOKENS \
92 ((dataType, "dataType")) \
93 ((sourceName, "sourceName")) \
94 ((sourceType, "sourceType")) \
95 ((format, "aovDescriptor.format")) \
96 ((multiSampled, "aovDescriptor.multiSampled")) \
97 ((aovSettings, "aovDescriptor.aovSettings")) \
98 ((clearValue, "aovDescriptor.clearValue"))
101 HdPrmanAovSettingsTokens, HDPRMAN_API,
102 HDPRMAN_AOV_SETTINGS_TOKENS);
104class HdPrmanRenderDelegate :
public HdRenderDelegate
108 HdPrmanRenderDelegate(HdRenderSettingsMap
const& settingsMap);
110 ~HdPrmanRenderDelegate()
override;
118 const TfTokenVector & GetSupportedRprimTypes()
const override;
120 const TfTokenVector & GetSupportedSprimTypes()
const override;
122 const TfTokenVector & GetSupportedBprimTypes()
const override;
124 HdResourceRegistrySharedPtr GetResourceRegistry()
const override;
128 HdRenderSettingDescriptorList GetRenderSettingDescriptors()
const override;
131 HdRenderPassSharedPtr CreateRenderPass(
138 void DestroyInstancer(
HdInstancer *instancer)
override;
141 SdfPath const& rprimId)
override;
143 void DestroyRprim(
HdRprim *rPrim)
override;
146 SdfPath const& sprimId)
override;
150 void DestroySprim(
HdSprim *sPrim)
override;
153 SdfPath const& bprimId)
override;
157 void DestroyBprim(
HdBprim *bPrim)
override;
165 TfToken GetMaterialBindingPurpose()
const override;
166#if HD_API_VERSION < 41
168 TfToken GetMaterialNetworkSelector()
const override;
176#if HD_API_VERSION > 46
181#if HD_API_VERSION >= 60
183 HdContainerDataSourceHandle GetCapabilities()
const override;
187 void SetRenderSetting(
TfToken const &key,
VtValue const &value)
override;
194 bool IsPauseSupported()
const override {
return false; }
198 bool IsStopSupported()
const override;
202 bool IsStopped()
const override;
206 bool Stop(
bool blocking)
override;
210 bool Restart()
override;
212#if HD_API_VERSION >= 55
221 void SetTerminalSceneIndex(
222 const HdSceneIndexBaseRefPtr &inputSceneIndex)
override;
225 void Update()
override;
234 HdRenderSettingsMap GetRenderSettingsMap()
const;
237 bool IsInteractive()
const;
244 HdPrmanRenderDelegate(
const HdPrmanRenderDelegate &) =
delete;
245 HdPrmanRenderDelegate &operator =(
const HdPrmanRenderDelegate &) =
delete;
254 std::shared_ptr<class HdPrman_RenderParam> _renderParam;
256#if HD_API_VERSION >= 55
257 std::unique_ptr<class HdPrman_TerminalSceneIndexObserver>
261 struct _RileySceneIndices;
262 std::unique_ptr<_RileySceneIndices> _rileySceneIndices;
264 HdResourceRegistrySharedPtr _resourceRegistry;
265 HdRenderPassSharedPtr _renderPass;
266 HdRenderSettingDescriptorList _settingDescriptors;
269PXR_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.