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