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