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/render_buffer.h')
-rw-r--r--intern/cycles/hydra/render_buffer.h85
1 files changed, 85 insertions, 0 deletions
diff --git a/intern/cycles/hydra/render_buffer.h b/intern/cycles/hydra/render_buffer.h
new file mode 100644
index 00000000000..8eb874f0068
--- /dev/null
+++ b/intern/cycles/hydra/render_buffer.h
@@ -0,0 +1,85 @@
+/* SPDX-License-Identifier: Apache-2.0
+ * Copyright 2022 NVIDIA Corporation
+ * Copyright 2022 Blender Foundation */
+
+#pragma once
+
+#include "hydra/config.h"
+
+#include <pxr/imaging/hd/renderBuffer.h>
+
+HDCYCLES_NAMESPACE_OPEN_SCOPE
+
+class HdCyclesRenderBuffer final : public PXR_NS::HdRenderBuffer {
+ public:
+ HdCyclesRenderBuffer(const PXR_NS::SdfPath &bprimId);
+ ~HdCyclesRenderBuffer() override;
+
+ void Finalize(PXR_NS::HdRenderParam *renderParam) override;
+
+ bool Allocate(const PXR_NS::GfVec3i &dimensions,
+ PXR_NS::HdFormat format,
+ bool multiSampled) override;
+
+ unsigned int GetWidth() const override
+ {
+ return _width;
+ }
+
+ unsigned int GetHeight() const override
+ {
+ return _height;
+ }
+
+ unsigned int GetDepth() const override
+ {
+ return 1u;
+ }
+
+ PXR_NS::HdFormat GetFormat() const override
+ {
+ return _format;
+ }
+
+ bool IsMultiSampled() const override
+ {
+ return false;
+ }
+
+ void *Map() override;
+
+ void Unmap() override;
+
+ bool IsMapped() const override;
+
+ void Resolve() override;
+
+ bool IsConverged() const override;
+
+ void SetConverged(bool converged);
+
+ PXR_NS::VtValue GetResource(bool multiSampled = false) const override;
+
+ void SetResource(const PXR_NS::VtValue &resource);
+
+ void WritePixels(const float *pixels,
+ const PXR_NS::GfVec2i &offset,
+ const PXR_NS::GfVec2i &dims,
+ int channels,
+ bool isId = false);
+
+ private:
+ void _Deallocate() override;
+
+ unsigned int _width = 0u;
+ unsigned int _height = 0u;
+ PXR_NS::HdFormat _format = PXR_NS::HdFormatInvalid;
+
+ std::vector<uint8_t> _data;
+ PXR_NS::VtValue _resource;
+
+ std::atomic_int _mapped = 0;
+ std::atomic_bool _converged = false;
+};
+
+HDCYCLES_NAMESPACE_CLOSE_SCOPE