Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/cycles/hydra/camera.h')
-rw-r--r--intern/cycles/hydra/camera.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/intern/cycles/hydra/camera.h b/intern/cycles/hydra/camera.h
new file mode 100644
index 00000000000..8b7fed5a6bb
--- /dev/null
+++ b/intern/cycles/hydra/camera.h
@@ -0,0 +1,43 @@
+/* SPDX-License-Identifier: Apache-2.0
+ * Copyright 2022 NVIDIA Corporation
+ * Copyright 2022 Blender Foundation */
+
+#pragma once
+
+#include "hydra/config.h"
+
+#include <pxr/base/gf/camera.h>
+#include <pxr/imaging/hd/camera.h>
+#include <pxr/imaging/hd/timeSampleArray.h>
+
+HDCYCLES_NAMESPACE_OPEN_SCOPE
+
+class HdCyclesCamera final : public PXR_NS::HdCamera {
+ public:
+ HdCyclesCamera(const PXR_NS::SdfPath &sprimId);
+ ~HdCyclesCamera() override;
+
+ void ApplyCameraSettings(CCL_NS::Camera *targetCamera) const;
+
+ static void ApplyCameraSettings(const PXR_NS::GfCamera &cameraData,
+ PXR_NS::CameraUtilConformWindowPolicy windowPolicy,
+ CCL_NS::Camera *targetCamera);
+ static void ApplyCameraSettings(const PXR_NS::GfMatrix4d &worldToViewMatrix,
+ const PXR_NS::GfMatrix4d &projectionMatrix,
+ const std::vector<PXR_NS::GfVec4d> &clipPlanes,
+ CCL_NS::Camera *targetCamera);
+
+ PXR_NS::HdDirtyBits GetInitialDirtyBitsMask() const override;
+
+ void Sync(PXR_NS::HdSceneDelegate *sceneDelegate,
+ PXR_NS::HdRenderParam *renderParam,
+ PXR_NS::HdDirtyBits *dirtyBits) override;
+
+ void Finalize(PXR_NS::HdRenderParam *renderParam) override;
+
+ private:
+ PXR_NS::GfCamera _data;
+ PXR_NS::HdTimeSampleArray<PXR_NS::GfMatrix4d, 2> _transformSamples;
+};
+
+HDCYCLES_NAMESPACE_CLOSE_SCOPE