HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
GR_HeightFieldVK.h
Go to the documentation of this file.
1 /*
2  * PROPRIETARY INFORMATION. This software is proprietary to
3  * Side Effects Software Inc., and is not to be reproduced,
4  * transmitted, or disclosed in any way without written permission.
5  *
6  * NAME: GR_HeightFieldVK ( GR Library, C++)
7  *
8  * COMMENTS:
9  * Heightfield renderer.
10  */
11 #ifndef GR_HeightFieldVK_h
12 #define GR_HeightFieldVK_h
13 
14 #include "GR_API.h"
15 #include "GR_GeoRenderVK.h"
16 #include <UT/UT_VectorTypes.h>
17 
18 class RV_Geometry;
19 class RV_Render;
21 class RV_ShaderBlock;
22 class RV_ShaderProgram;
23 class RV_VKImage;
24 class GR_Material;
26 class GT_PrimVolume;
27 
29 {
30 public:
32  ~GR_HeightFieldVK() override;
33 
34  const char *className() const override { return "GR_HeightFieldVK"; }
35 
36 
37  RV_Geometry *getVkPickGeometry(unsigned int pick_mode) override;
38 
39  void update(RE_RenderContext rc,
40  const GT_PrimitiveHandle &primh,
41  const GR_UpdateParms &parms,
42  const char *cache_name) override;
43 
44  void draw(RE_RenderContext rc,
47  GR_DrawParms dp) override;
48 
49  exint getNumGLPrimitives() const override { return 1; }
50  bool hasTransparency() const override { return false; }
51 
52  static bool initShaders(RV_Instance* inst);
53  static void cleanupShaders();
54 
55  bool supportsRayTrace() const override { return true; }
56 
58  int tag,
59  int light_id,
60  const UT_Matrix4F &obj_mat) override;
61 
62  void retireGeometry() override;
63 
64 private:
65  void updateHeight(RV_Render *r,
66  const GT_PrimVolume *volume);
67  void updateColor(RV_Render *r,
68  const GT_PrimVolume *volume,
69  const GR_UpdateParms &p);
70  void updateColorRamp(RV_Render *r,
71  const GT_PrimVolume *volume);
72  void updateBlendMasks(RV_Render *r,
73  const GT_PrimVolume *volume);
74  void updateSurface(RV_Render *r,
75  const GT_PrimVolume *volume,
76  const GR_UpdateParms &p,
77  const char *cache_name);
78  void updateMaterial(RV_Render *r,
79  const GR_UpdateParms *p,
80  GR_Material *material);
81  GR_MaterialPtr defaultMaterial(RV_Render *r);
82  void updateMaterial(RV_Render *r,
84  const GR_UpdateParms *p,
85  GR_Material *material);
86 
87  int myMaterialID = -1;
88  GR_MaterialPtr myHFMat;
89  GR_MaterialPtr myHFDefaultMat;
90  UT_Vector2i myImageRes = {1,1};
91  UT_Vector2i myGridRes = {1,1};
92  UT_Vector2i myWireRes = {1,1};
93  UT_Vector3F myBaseColor = {1,1,1};
94  bool myOverrideToWireframe = false;
95  bool myColorRequiresRemap = false;
96  fpreal myColorMinRange = 0;
97  fpreal myColorInvRange = 1;
98  int myColorChannels = 4;
99  int myColorTypeInfo = 0;
100  UT_UniquePtr<RV_VKImage> myHeightImage;
101  UT_UniquePtr<RV_VKImage> myColorImage;
102  UT_UniquePtr<RV_VKImage> myColorRampImage;
103  UT_UniquePtr<RV_VKImage> myBlendImage;
104  UT_UniquePtr<RV_ShaderBlock> myHeightGridUbo;
106  UT_UniquePtr<RV_ShaderVariableSet> myMeshIndicesSet;
107  UT_UniquePtr<RV_ShaderVariableSet> myMeshAttribsSet;
108 
109  static UT_Map<exint, RV_ShaderProgram *> theProgramMap;
110 };
111 
112 #endif
A collection of Vulkan UBO, SSBO, and Image shader bindings (descriptor set)
GLbitfield flags
Definition: glcorearb.h:1596
virtual void draw(RE_RenderContext r, GR_RenderMode mode, GR_RenderFlags flags, GR_DrawParms draw_parms)=0
Normal drawing method. Only issue rendering commands.
static bool initShaders(RV_Instance *inst)
int64 exint
Definition: SYS_Types.h:125
GT_API const UT_StringHolder cache_name
Object that represents drawable geometry. This object holds vertex, instancing and index buffers for ...
Definition: RV_Geometry.h:165
Temporary container for either a RV_Render and an RE_Render.
virtual RV_Geometry * getVkPickGeometry(unsigned int pick_mode)
Definition: GR_GeoRender.h:128
std::unique_ptr< T, Deleter > UT_UniquePtr
A smart pointer for unique ownership of dynamically allocated objects.
Definition: UT_UniquePtr.h:39
set of parameters sent to GR_Primitive::update()
bool supportsRayTrace() const override
GR_RenderMode
Definition: GR_Defines.h:48
const char * className() const override
#define GR_API
Definition: GR_API.h:10
virtual void updateAccelerationStructure(RV_Render *r, int tag, int light_id, const UT_Matrix4F &obj_mat)
GR_RenderFlags
Definition: GR_Defines.h:88
Handle to the main interface of Vulkan.
Definition: RV_Instance.h:48
GLenum mode
Definition: glcorearb.h:99
virtual void retireGeometry()
Definition: GR_GeoRender.h:86
GA_API const UT_StringHolder parms
bool hasTransparency() const override
returns true if this drawable renders some transparent elements
fpreal64 fpreal
Definition: SYS_Types.h:283
virtual void update(RE_RenderContext r, const GT_PrimitiveHandle &primh, const GR_UpdateParms &p, const char *cache_name)=0
GLboolean r
Definition: glcorearb.h:1222
static void cleanupShaders()
exint getNumGLPrimitives() const override