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  * Line and ribbon primitive.
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 GT_PrimCurveMesh;
24 class GR_Material;
26 
28 {
29 public:
31  ~GR_HeightFieldVK() override;
32 
33  const char *className() const override { return "GR_HeightFieldVK"; }
34 
35 
36  RV_Geometry *getVkPickGeometry(unsigned int pick_mode) override;
37 
38  void update(RE_RenderContext rc,
39  const GT_PrimitiveHandle &primh,
40  const GR_UpdateParms &parms,
41  const char *cache_name) override;
42 
43  void draw(RE_RenderContext rc,
46  GR_DrawParms dp) override;
47 
48  exint getNumGLPrimitives() const override { return 1; }
49  bool hasTransparency() const override { return false; }
50 
51  static bool initShaders(RV_Instance* inst);
52  static void cleanupShaders();
53 private:
54  void updateMaterial(RV_Render *r,
55  const GR_UpdateParms *p,
56  GR_Material *material,
57  GT_Primitive *prim,
58  UT_Vector2i mapres);
59  GR_MaterialPtr defaultMaterial(RV_Render *r);
60  void updateMaterial(RV_Render *r,
62  const GR_UpdateParms *p,
63  GR_Material *material,
64  GT_Primitive *field,
65  UT_Vector2i mapres);
66 
67  GT_PrimitiveHandle mySurface;
68  int myMaterialID = -1;
69  GR_MaterialPtr myHFMat;
70  GR_MaterialPtr myHFDefaultMat;
71  UT_Vector2i myImageRes = {1,1};
72 
73  static UT_Map<exint, RV_ShaderProgram *> theProgramMap;
74 };
75 
76 #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.
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.
A mesh of curves.
virtual RV_Geometry * getVkPickGeometry(unsigned int pick_mode)
Definition: GR_GeoRender.h:128
set of parameters sent to GR_Primitive::update()
GR_RenderMode
Definition: GR_Defines.h:48
const char * className() const override
#define GR_API
Definition: GR_API.h:10
GR_RenderFlags
Definition: GR_Defines.h:86
The base class for all GT primitive types.
Definition: GT_Primitive.h:43
Handle to the main interface of Vulkan.
Definition: RV_Instance.h:38
GLenum mode
Definition: glcorearb.h:99
bool hasTransparency() const override
returns true if this drawable renders some transparent elements
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
exint getNumGLPrimitives() const override