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/geometry.h')
-rw-r--r--intern/cycles/hydra/geometry.h54
1 files changed, 54 insertions, 0 deletions
diff --git a/intern/cycles/hydra/geometry.h b/intern/cycles/hydra/geometry.h
new file mode 100644
index 00000000000..1a516ed691d
--- /dev/null
+++ b/intern/cycles/hydra/geometry.h
@@ -0,0 +1,54 @@
+/* SPDX-License-Identifier: Apache-2.0
+ * Copyright 2022 NVIDIA Corporation
+ * Copyright 2022 Blender Foundation */
+
+#pragma once
+
+#include "hydra/config.h"
+
+#include <pxr/imaging/hd/rprim.h>
+
+HDCYCLES_NAMESPACE_OPEN_SCOPE
+
+template<typename Base, typename CyclesBase> class HdCyclesGeometry : public Base {
+ public:
+ HdCyclesGeometry(const PXR_NS::SdfPath &rprimId
+#if PXR_VERSION < 2102
+ ,
+ const PXR_NS::SdfPath &instancerId
+#endif
+ );
+
+ void Sync(PXR_NS::HdSceneDelegate *sceneDelegate,
+ PXR_NS::HdRenderParam *renderParam,
+ PXR_NS::HdDirtyBits *dirtyBits,
+ const PXR_NS::TfToken &reprToken) override;
+
+ PXR_NS::HdDirtyBits GetInitialDirtyBitsMask() const override;
+
+ virtual void Finalize(PXR_NS::HdRenderParam *renderParam) override;
+
+ protected:
+ void _InitRepr(const PXR_NS::TfToken &reprToken, PXR_NS::HdDirtyBits *dirtyBits) override;
+
+ PXR_NS::HdDirtyBits _PropagateDirtyBits(PXR_NS::HdDirtyBits bits) const override;
+
+ virtual void Populate(PXR_NS::HdSceneDelegate *sceneDelegate,
+ PXR_NS::HdDirtyBits dirtyBits,
+ bool &rebuild) = 0;
+
+ PXR_NS::HdInterpolation GetPrimvarInterpolation(PXR_NS::HdSceneDelegate *sceneDelegate,
+ const PXR_NS::TfToken &name) const;
+
+ CyclesBase *_geom = nullptr;
+ std::vector<CCL_NS::Object *> _instances;
+
+ private:
+ void Initialize(PXR_NS::HdRenderParam *renderParam);
+
+ void InitializeInstance(int index);
+
+ PXR_NS::GfMatrix4d _geomTransform;
+};
+
+HDCYCLES_NAMESPACE_CLOSE_SCOPE