13#ifdef WITH_HYDRA_DISPLAY_DRIVER
23#include <pxr/imaging/hd/renderPassState.h>
28 const HdRprimCollection &collection,
30 : HdRenderPass(index, collection), _renderParam(renderParam)
32 Session *
const session = _renderParam->session;
39 GetRenderIndex()->GetRenderDelegate());
40 if (renderDelegate->IsDisplaySupported()) {
41#ifdef WITH_HYDRA_DISPLAY_DRIVER
42 session->set_display_driver(
43 make_unique<HdCyclesDisplayDriver>(renderParam, renderDelegate->GetHgi()));
50 Session *
const session = _renderParam->session;
56 for (
const HdRenderPassAovBinding &aovBinding : _renderParam->GetAovBindings()) {
57 if (aovBinding.renderBuffer && !aovBinding.renderBuffer->IsConverged()) {
65void HdCyclesRenderPass::ResetConverged()
67 for (
const HdRenderPassAovBinding &aovBinding : _renderParam->
GetAovBindings()) {
69 renderBuffer->SetConverged(
false);
74void HdCyclesRenderPass::_Execute(
const HdRenderPassStateSharedPtr &renderPassState,
75 const TfTokenVector & )
77 Scene *
const scene = _renderParam->session->scene.get();
78 Session *
const session = _renderParam->session;
84 if (scene->
mutex.try_lock()) {
85 auto *
const renderDelegate =
static_cast<HdCyclesDelegate *
>(
86 GetRenderIndex()->GetRenderDelegate());
88 const unsigned int settingsVersion = renderDelegate->GetRenderSettingsVersion();
91 const HdRenderPassAovBindingVector &aovBindings = renderPassState->GetAovBindings();
92 if (_renderParam->GetAovBindings() != aovBindings ||
94 (settingsVersion != _lastSettingsVersion && scene->
integrator->use_denoise_is_modified()))
96 _renderParam->SyncAovBindings(aovBindings);
98 if (renderDelegate->IsDisplaySupported()) {
100 const HdRenderPassAovBinding displayAovBinding = !aovBindings.empty() ?
101 aovBindings.front() :
102 HdRenderPassAovBinding();
103 if (displayAovBinding.aovName == HdAovTokens->color && displayAovBinding.renderBuffer) {
104 _renderParam->SetDisplayAovBinding(displayAovBinding);
107 _renderParam->SetDisplayAovBinding(HdRenderPassAovBinding());
113#if PXR_VERSION >= 2102
114 CameraUtilFraming framing = renderPassState->GetFraming();
115 if (!framing.IsValid()) {
116 const GfVec4f vp = renderPassState->GetViewport();
117 framing = CameraUtilFraming(GfRect2i(GfVec2i(0),
int(vp[2]),
int(vp[3])));
120 scene->
camera->set_full_width(framing.dataWindow.GetWidth());
121 scene->
camera->set_full_height(framing.dataWindow.GetHeight());
123 const GfVec4f vp = renderPassState->GetViewport();
124 scene->
camera->set_full_width(
int(vp[2]));
125 scene->
camera->set_full_height(
int(vp[3]));
128 if (
const auto *
const camera =
static_cast<const HdCyclesCamera *
>(
129 renderPassState->GetCamera()))
131 camera->ApplyCameraSettings(_renderParam, scene->
camera);
135 renderPassState->GetWorldToViewMatrix(),
136 renderPassState->GetProjectionMatrix(),
137 renderPassState->GetClipPlanes(),
142 if (scene->
need_reset() || settingsVersion != _lastSettingsVersion) {
143 _lastSettingsVersion = settingsVersion;
148 BufferParams buffer_params;
149#if PXR_VERSION >= 2102
150 buffer_params.
full_x =
static_cast<int>(framing.displayWindow.GetMin()[0]);
151 buffer_params.
full_y =
static_cast<int>(framing.displayWindow.GetMin()[1]);
152 buffer_params.
full_width =
static_cast<int>(framing.displayWindow.GetSize()[0]);
153 buffer_params.
full_height =
static_cast<int>(framing.displayWindow.GetSize()[1]);
155 buffer_params.
window_x = framing.dataWindow.GetMinX() - buffer_params.
full_x;
156 buffer_params.
window_y = framing.dataWindow.GetMinY() - buffer_params.
full_y;
157 buffer_params.
window_width = framing.dataWindow.GetWidth();
158 buffer_params.
window_height = framing.dataWindow.GetHeight();
163 buffer_params.
width =
static_cast<int>(vp[2]);
164 buffer_params.
height =
static_cast<int>(vp[3]);
174 scene->
mutex.unlock();
183void HdCyclesRenderPass::_MarkCollectionDirty() {}
void ApplyCameraSettings(PXR_NS::HdRenderParam *renderParam, CCL_NS::Camera *cam) const
~HdCyclesRenderPass() override
HdCyclesRenderPass(PXR_NS::HdRenderIndex *index, const PXR_NS::HdRprimCollection &collection, HdCyclesSession *renderParam)
bool IsConverged() const override
const PXR_NS::HdRenderPassAovBindingVector & GetAovBindings() const
void cancel(bool quick=false)
void reset(const SessionParams &session_params, const BufferParams &buffer_params)
void set_output_driver(unique_ptr< OutputDriver > driver)
#define HDCYCLES_NAMESPACE_CLOSE_SCOPE
bool need_reset(const bool check_camera=true)