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/instancer.h')
-rw-r--r--intern/cycles/hydra/instancer.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/intern/cycles/hydra/instancer.h b/intern/cycles/hydra/instancer.h
new file mode 100644
index 00000000000..ade1dfba8ee
--- /dev/null
+++ b/intern/cycles/hydra/instancer.h
@@ -0,0 +1,45 @@
+/* SPDX-License-Identifier: Apache-2.0
+ * Copyright 2022 NVIDIA Corporation
+ * Copyright 2022 Blender Foundation */
+
+#pragma once
+
+#include "hydra/config.h"
+
+#include <pxr/base/gf/matrix4d.h>
+#include <pxr/base/gf/vec3f.h>
+#include <pxr/base/gf/vec4f.h>
+#include <pxr/base/vt/array.h>
+#include <pxr/imaging/hd/instancer.h>
+
+HDCYCLES_NAMESPACE_OPEN_SCOPE
+
+class HdCyclesInstancer final : public PXR_NS::HdInstancer {
+ public:
+ HdCyclesInstancer(PXR_NS::HdSceneDelegate *delegate,
+ const PXR_NS::SdfPath &instancerId
+#if PXR_VERSION <= 2011
+ ,
+ const PXR_NS::SdfPath &parentId
+#endif
+ );
+ ~HdCyclesInstancer() override;
+
+#if PXR_VERSION > 2011
+ void Sync(PXR_NS::HdSceneDelegate *sceneDelegate,
+ PXR_NS::HdRenderParam *renderParam,
+ PXR_NS::HdDirtyBits *dirtyBits) override;
+#endif
+
+ PXR_NS::VtMatrix4dArray ComputeInstanceTransforms(const PXR_NS::SdfPath &prototypeId);
+
+ private:
+ void SyncPrimvars();
+
+ PXR_NS::VtVec3fArray _translate;
+ PXR_NS::VtVec4fArray _rotate;
+ PXR_NS::VtVec3fArray _scale;
+ PXR_NS::VtMatrix4dArray _instanceTransform;
+};
+
+HDCYCLES_NAMESPACE_CLOSE_SCOPE