Blender V4.3
hydra/session.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2022 NVIDIA Corporation
2 * SPDX-FileCopyrightText: 2022 Blender Foundation
3 *
4 * SPDX-License-Identifier: Apache-2.0 */
5
6#pragma once
7
8#include "hydra/config.h"
9#include "util/thread.h"
10
11#include <pxr/imaging/hd/renderDelegate.h>
12
14
15struct SceneLock {
16 SceneLock(const PXR_NS::HdRenderParam *renderParam);
17 ~SceneLock();
18
19 CCL_NS::Scene *scene;
20
21 private:
22 CCL_NS::thread_scoped_lock sceneLock;
23};
24
25class HdCyclesSession final : public PXR_NS::HdRenderParam {
26 public:
27 HdCyclesSession(CCL_NS::Session *session_, const bool keep_nodes);
28 HdCyclesSession(const CCL_NS::SessionParams &params);
29 ~HdCyclesSession() override;
30
31 void UpdateScene();
32
33 double GetStageMetersPerUnit() const
34 {
35 return _stageMetersPerUnit;
36 }
37
38 void SetStageMetersPerUnit(double stageMetersPerUnit)
39 {
40 _stageMetersPerUnit = stageMetersPerUnit;
41 }
42
43 PXR_NS::HdRenderPassAovBinding GetDisplayAovBinding() const
44 {
45 return _displayAovBinding;
46 }
47
48 void SetDisplayAovBinding(const PXR_NS::HdRenderPassAovBinding &aovBinding)
49 {
50 _displayAovBinding = aovBinding;
51 }
52
53 const PXR_NS::HdRenderPassAovBindingVector &GetAovBindings() const
54 {
55 return _aovBindings;
56 }
57
58 void SyncAovBindings(const PXR_NS::HdRenderPassAovBindingVector &aovBindings);
59
60 void RemoveAovBinding(PXR_NS::HdRenderBuffer *renderBuffer);
61
62 CCL_NS::Session *session;
64
65 private:
66 const bool _ownCyclesSession;
67 double _stageMetersPerUnit = 0.01;
68 PXR_NS::HdRenderPassAovBindingVector _aovBindings;
69 PXR_NS::HdRenderPassAovBinding _displayAovBinding;
70};
71
HdCyclesSession(CCL_NS::Session *session_, const bool keep_nodes)
PXR_NS::HdRenderPassAovBinding GetDisplayAovBinding() const
~HdCyclesSession() override
HdCyclesSession(const CCL_NS::SessionParams &params)
CCL_NS::Session * session
void SetDisplayAovBinding(const PXR_NS::HdRenderPassAovBinding &aovBinding)
void RemoveAovBinding(PXR_NS::HdRenderBuffer *renderBuffer)
double GetStageMetersPerUnit() const
const PXR_NS::HdRenderPassAovBindingVector & GetAovBindings() const
void SyncAovBindings(const PXR_NS::HdRenderPassAovBindingVector &aovBindings)
void SetStageMetersPerUnit(double stageMetersPerUnit)
#define HDCYCLES_NAMESPACE_CLOSE_SCOPE
uiWidgetBaseParameters params[MAX_WIDGET_BASE_BATCH]
SceneLock(const PXR_NS::HdRenderParam *renderParam)
CCL_NS::Scene * scene