Blender V4.3
hydra/geometry.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2022 NVIDIA Corporation
2 * SPDX-FileCopyrightText: 2022 Blender Foundation
3 *
4 * SPDX-License-Identifier: Apache-2.0 */
5
6#pragma once
7
8#include "hydra/config.h"
9
10#include <pxr/imaging/hd/rprim.h>
11
13
14template<typename Base, typename CyclesBase> class HdCyclesGeometry : public Base {
15 public:
16 HdCyclesGeometry(const PXR_NS::SdfPath &rprimId
17#if PXR_VERSION < 2102
18 ,
19 const PXR_NS::SdfPath &instancerId
20#endif
21 );
22
23 void Sync(PXR_NS::HdSceneDelegate *sceneDelegate,
24 PXR_NS::HdRenderParam *renderParam,
25 PXR_NS::HdDirtyBits *dirtyBits,
26 const PXR_NS::TfToken &reprToken) override;
27
28 PXR_NS::HdDirtyBits GetInitialDirtyBitsMask() const override;
29
30 virtual void Finalize(PXR_NS::HdRenderParam *renderParam) override;
31
32 protected:
33 void _InitRepr(const PXR_NS::TfToken &reprToken, PXR_NS::HdDirtyBits *dirtyBits) override;
34
35 PXR_NS::HdDirtyBits _PropagateDirtyBits(PXR_NS::HdDirtyBits bits) const override;
36
37 virtual void Populate(PXR_NS::HdSceneDelegate *sceneDelegate,
38 PXR_NS::HdDirtyBits dirtyBits,
39 bool &rebuild) = 0;
40
41 PXR_NS::HdInterpolation GetPrimvarInterpolation(PXR_NS::HdSceneDelegate *sceneDelegate,
42 const PXR_NS::TfToken &name) const;
43
44 CyclesBase *_geom = nullptr;
45 std::vector<CCL_NS::Object *> _instances;
46
47 private:
48 void Initialize(PXR_NS::HdRenderParam *renderParam);
49
50 void InitializeInstance(int index);
51
52 PXR_NS::GfMatrix4d _geomTransform;
53};
54
HdCyclesGeometry(const PXR_NS::SdfPath &rprimId, const PXR_NS::SdfPath &instancerId)
Definition geometry.inl:23
PXR_NS::HdDirtyBits _PropagateDirtyBits(PXR_NS::HdDirtyBits bits) const override
Definition geometry.inl:57
virtual void Finalize(PXR_NS::HdRenderParam *renderParam) override
Definition geometry.inl:189
void _InitRepr(const PXR_NS::TfToken &reprToken, PXR_NS::HdDirtyBits *dirtyBits) override
Definition geometry.inl:41
PXR_NS::HdInterpolation GetPrimvarInterpolation(PXR_NS::HdSceneDelegate *sceneDelegate, const PXR_NS::TfToken &name) const
Definition geometry.inl:242
virtual void Populate(PXR_NS::HdSceneDelegate *sceneDelegate, PXR_NS::HdDirtyBits dirtyBits, bool &rebuild)=0
CyclesBase * _geom
PXR_NS::HdDirtyBits GetInitialDirtyBitsMask() const override
Definition geometry.inl:49
void Sync(PXR_NS::HdSceneDelegate *sceneDelegate, PXR_NS::HdRenderParam *renderParam, PXR_NS::HdDirtyBits *dirtyBits, const PXR_NS::TfToken &reprToken) override
Definition geometry.inl:63
std::vector< CCL_NS::Object * > _instances
#define HDCYCLES_NAMESPACE_CLOSE_SCOPE