2022-03-23 15:07:43 +00:00
|
|
|
/* 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:
|
2022-04-17 05:01:13 +00:00
|
|
|
HdCyclesSession(CCL_NS::Session *session_, const bool keep_nodes);
|
2022-03-23 15:07:43 +00:00
|
|
|
HdCyclesSession(const CCL_NS::SessionParams ¶ms);
|
|
|
|
~HdCyclesSession() override;
|
|
|
|
|
|
|
|
void UpdateScene();
|
|
|
|
|
2022-04-12 16:08:25 +00:00
|
|
|
double GetStageMetersPerUnit() const
|
|
|
|
{
|
|
|
|
return _stageMetersPerUnit;
|
|
|
|
}
|
|
|
|
|
|
|
|
void SetStageMetersPerUnit(double stageMetersPerUnit)
|
|
|
|
{
|
|
|
|
_stageMetersPerUnit = stageMetersPerUnit;
|
|
|
|
}
|
|
|
|
|
2022-03-23 15:07:43 +00:00
|
|
|
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;
|
2022-04-17 05:01:13 +00:00
|
|
|
bool keep_nodes;
|
2022-03-23 15:07:43 +00:00
|
|
|
|
|
|
|
private:
|
|
|
|
const bool _ownCyclesSession;
|
2022-04-12 16:08:25 +00:00
|
|
|
double _stageMetersPerUnit = 0.01;
|
2022-03-23 15:07:43 +00:00
|
|
|
PXR_NS::HdRenderPassAovBindingVector _aovBindings;
|
|
|
|
PXR_NS::HdRenderPassAovBinding _displayAovBinding;
|
|
|
|
};
|
|
|
|
|
|
|
|
HDCYCLES_NAMESPACE_CLOSE_SCOPE
|