13#ifdef WITH_HYDRA_DISPLAY_DRIVER
23#include <pxr/imaging/hd/renderPassState.h>
28 const HdRprimCollection &collection,
30 : HdRenderPass(index, collection), _renderParam(renderParam)
39 GetRenderIndex()->GetRenderDelegate());
40 if (renderDelegate->IsDisplaySupported()) {
41#ifdef WITH_HYDRA_DISPLAY_DRIVER
43 make_unique<HdCyclesDisplayDriver>(renderParam, renderDelegate->GetHgi()));
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 & )
86 GetRenderIndex()->GetRenderDelegate());
88 const unsigned int settingsVersion = renderDelegate->GetRenderSettingsVersion();
91 const HdRenderPassAovBindingVector &aovBindings = renderPassState->GetAovBindings();
94 (settingsVersion != _lastSettingsVersion &&
scene->
integrator->use_denoise_is_modified()))
98 if (renderDelegate->IsDisplaySupported()) {
100 const HdRenderPassAovBinding displayAovBinding = !aovBindings.empty() ?
101 aovBindings.front() :
102 HdRenderPassAovBinding();
103 if (displayAovBinding.aovName == HdAovTokens->color && displayAovBinding.renderBuffer) {
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();
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(),
143 _lastSettingsVersion = settingsVersion;
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]);
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
CCL_NS::Session * session
void SetDisplayAovBinding(const PXR_NS::HdRenderPassAovBinding &aovBinding)
const PXR_NS::HdRenderPassAovBindingVector & GetAovBindings() const
void SyncAovBindings(const PXR_NS::HdRenderPassAovBindingVector &aovBindings)
void set_display_driver(unique_ptr< DisplayDriver > driver)
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)