diff options
Diffstat (limited to 'intern/cycles/hydra/session.h')
-rw-r--r-- | intern/cycles/hydra/session.h | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/intern/cycles/hydra/session.h b/intern/cycles/hydra/session.h new file mode 100644 index 00000000000..7e649c1847a --- /dev/null +++ b/intern/cycles/hydra/session.h @@ -0,0 +1,59 @@ +/* SPDX-License-Identifier: Apache-2.0 + * Copyright 2022 NVIDIA Corporation + * Copyright 2022 Blender Foundation */ + +#pragma once + +#include "hydra/config.h" +#include "util/thread.h" + +#include <pxr/imaging/hd/renderDelegate.h> + +HDCYCLES_NAMESPACE_OPEN_SCOPE + +struct SceneLock { + SceneLock(const PXR_NS::HdRenderParam *renderParam); + ~SceneLock(); + + CCL_NS::Scene *scene; + + private: + CCL_NS::thread_scoped_lock sceneLock; +}; + +class HdCyclesSession final : public PXR_NS::HdRenderParam { + public: + HdCyclesSession(CCL_NS::Session *session_); + HdCyclesSession(const CCL_NS::SessionParams ¶ms); + ~HdCyclesSession() override; + + void UpdateScene(); + + PXR_NS::HdRenderPassAovBinding GetDisplayAovBinding() const + { + return _displayAovBinding; + } + + void SetDisplayAovBinding(const PXR_NS::HdRenderPassAovBinding &aovBinding) + { + _displayAovBinding = aovBinding; + } + + const PXR_NS::HdRenderPassAovBindingVector &GetAovBindings() const + { + return _aovBindings; + } + + void SyncAovBindings(const PXR_NS::HdRenderPassAovBindingVector &aovBindings); + + void RemoveAovBinding(PXR_NS::HdRenderBuffer *renderBuffer); + + CCL_NS::Session *session; + + private: + const bool _ownCyclesSession; + PXR_NS::HdRenderPassAovBindingVector _aovBindings; + PXR_NS::HdRenderPassAovBinding _displayAovBinding; +}; + +HDCYCLES_NAMESPACE_CLOSE_SCOPE |