HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
volume.h
Go to the documentation of this file.
1 //
2 // Copyright 2019 Pixar
3 //
4 // Licensed under the terms set forth in the LICENSE.txt file available at
5 // https://openusd.org/license.
6 //
7 #ifndef PXR_IMAGING_HD_ST_VOLUME_H
8 #define PXR_IMAGING_HD_ST_VOLUME_H
9 
10 #include "pxr/pxr.h"
11 #include "pxr/imaging/hdSt/api.h"
12 #include "pxr/imaging/hd/version.h"
13 #include "pxr/imaging/hd/volume.h"
14 
16 
17 class HdStDrawItem;
18 
19 /// Represents a Volume Prim.
20 ///
21 class HdStVolume final : public HdVolume {
22 public:
23  HDST_API
24  HdStVolume(SdfPath const& id);
25  HDST_API
26  ~HdStVolume() override;
27 
28  HDST_API
29  HdDirtyBits GetInitialDirtyBitsMask() const override;
30 
31  HDST_API
32  void UpdateRenderTag(HdSceneDelegate *delegate,
33  HdRenderParam *renderParam) override;
34 
35  HDST_API
36  void Sync(HdSceneDelegate* delegate,
37  HdRenderParam* renderParam,
38  HdDirtyBits* dirtyBits,
39  TfToken const &reprToken) override;
40 
41  HDST_API
42  void Finalize(HdRenderParam *renderParam) override;
43 
44  /// Default step size used for raymarching
45  HDST_API
46  static const float defaultStepSize;
47 
48  /// Default step size used for raymarching for lighting computation
49  HDST_API
50  static const float defaultStepSizeLighting;
51 
52  /// Default memory limit for a field texture (in Mb) if not
53  /// overridden by field prim with textureMemory.
54  HDST_API
55  static const float defaultMaxTextureMemoryPerField;
56 
57 protected:
58  void _InitRepr(TfToken const &reprToken,
59  HdDirtyBits* dirtyBits) override;
60 
61  HdDirtyBits _PropagateDirtyBits(HdDirtyBits bits) const override;
62 
63  void _UpdateRepr(HdSceneDelegate *sceneDelegate,
64  HdRenderParam *renderParam,
65  TfToken const &reprToken,
66  HdDirtyBits *dirtyBitsState);
67 
68 private:
69  void _UpdateDrawItem(HdSceneDelegate *sceneDelegate,
70  HdRenderParam *renderParam,
71  HdStDrawItem *drawItem,
72  HdDirtyBits *dirtyBits);
73 
74  enum DrawingCoord {
75  InstancePrimvar = HdDrawingCoord::CustomSlotsBegin
76  };
77 
78  HdReprSharedPtr _volumeRepr;
79 };
80 
82 
83 #endif //PXR_IMAGING_HD_ST_VOLUME_H
HDST_API void Sync(HdSceneDelegate *delegate, HdRenderParam *renderParam, HdDirtyBits *dirtyBits, TfToken const &reprToken) override
HDST_API void UpdateRenderTag(HdSceneDelegate *delegate, HdRenderParam *renderParam) override
static const int CustomSlotsBegin
Definition: drawingCoord.h:68
static HDST_API const float defaultMaxTextureMemoryPerField
Definition: volume.h:55
HDST_API HdStVolume(SdfPath const &id)
uint32_t HdDirtyBits
Definition: types.h:143
HdDirtyBits _PropagateDirtyBits(HdDirtyBits bits) const override
std::shared_ptr< HdRepr > HdReprSharedPtr
Definition: rprim.h:30
Definition: token.h:70
HDST_API ~HdStVolume() override
static HDST_API const float defaultStepSize
Default step size used for raymarching.
Definition: volume.h:46
void _UpdateRepr(HdSceneDelegate *sceneDelegate, HdRenderParam *renderParam, TfToken const &reprToken, HdDirtyBits *dirtyBitsState)
Definition: path.h:273
static HDST_API const float defaultStepSizeLighting
Default step size used for raymarching for lighting computation.
Definition: volume.h:50
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
Definition: path.h:1425
void _InitRepr(TfToken const &reprToken, HdDirtyBits *dirtyBits) override
#define HDST_API
Definition: api.h:23
#define PXR_NAMESPACE_CLOSE_SCOPE
Definition: pxr.h:74
HDST_API HdDirtyBits GetInitialDirtyBitsMask() const override
HDST_API void Finalize(HdRenderParam *renderParam) override