11 #ifndef GR_PickRender_h
12 #define GR_PickRender_h
41 bool inconclusive_stream_too =
false) = 0;
84 virtual bool isInstanced(
int &num_inst)
const = 0;
86 virtual int getNumPoints()
const = 0;
88 virtual int getNumRenderPrims(
int start_group,
int end_group = -1)
const = 0;
90 virtual bool hasPointIDAttrib()
const = 0;
92 virtual bool hasPrimIDAttrib()
const = 0;
94 virtual bool hasVertIDAttrib()
const = 0;
96 virtual bool hasInstIDAttrib()
const = 0;
99 virtual int renderPoints(
int connect_start,
102 int real_connect_start,
103 int real_connect_num,
112 virtual int renderFacePrims(
int connect_start,
122 virtual int renderLinePrims(
int connect_start,
132 virtual int renderTetPrims(
int connect_start,
142 virtual int renderFaceDeformingPrims(
int connect_start,
152 virtual int renderSubDLinePrims(
int connect_start,
164 virtual int renderFaceEdges(
int connect_start,
173 virtual int renderMeshEdges(
int connect_start,
182 virtual int renderLineEdges(
int connect_start,
194 virtual int renderFaceVertices(
int connect_start,
203 virtual int renderLineVertices(
int connect_start,
211 virtual int renderMeshVertices(
int connect_start,
220 virtual int renderBreakpoints(
int connect_start,
231 virtual int renderGuidePoints(
int connect_start,
236 int select_inst) = 0;
237 virtual int renderGuideEdges(
int connect_start,
242 int select_inst) = 0;
245 virtual int renderPointNormals(
int connect_start,
251 virtual int renderFaceNormals(
int connect_start,
254 bool has_pick_map) = 0;
259 const int32 *raw_picks,
272 bool inconclusive_stream_too =
false)
override;
288 return myOGLBuffer.get();
340 int real_connect_start,
341 int real_connect_num,
474 int select_inst)
override;
480 int select_inst)
override;
492 bool has_pick_map)
override;
494 void pickPointsSingle(
int connect_start,
497 int real_connect_start,
498 int real_connect_num,
503 int pickPointsMulti(
int connect_start,
510 int pickPointsUVVert(
int connect_start,
518 void pickFacesSingle(
int connect_start,
526 bool deforming_faces);
527 int pickFacesMulti(
int connect_start,
536 bool deforming_faces,
539 int pickFaceEdgesMulti(
int connect_start,
549 int pickMeshEdgesMulti(
int connect_start,
559 void pickFaceVerticesSingle(
int connect_start,
565 int pickFaceVerticesMulti(
int connect_start,
573 void pickTetPrimSingle(
int connect_start,
580 int pickTetPrimMulti(
int connect_start,
590 void drawGeo(
int connect_start,
615 bool inconclusive_stream_too =
false)
override;
636 return myVkBuffer.get();
639 void setNumPicks(
exint n) { myNumPicks =
n; }
640 exint getNumPicks()
const {
return myNumPicks; }
647 ~GR_PickBufferVK()
override;
652 exint myNumPicks = 0;
666 ~GR_PickRenderVK()
override;
689 int real_connect_start,
690 int real_connect_num,
833 int select_inst)
override;
839 int select_inst)
override;
851 bool has_pick_map)
override;
855 static void cleanupShaders();
858 int pickFacesImpl(
int connect_start,
873 int use_varying_id = 0;
874 int hide_selected = 0;
875 int pick_outside = 0;
877 int pick_front_face = 0;
878 int pick_back_face = 0;
880 float vertex_offset = 0.f;
883 int drawGeo(
int connect_start,
888 unsigned int pick_mode,
889 const PickInfo& pick_params,
virtual bool setSize(RE_RenderContext r, int buffer_size, int vector_size=1, bool inconclusive_stream_too=false)=0
virtual bool isInstanced(int &num_inst) const =0
virtual RV_VKBuffer * getVKBuffer()=0
virtual int getNumPoints() const =0
virtual int getNumRenderPrims(int start_group, int end_group=-1) const =0
virtual bool hasPrimIDAttrib() const =0
A collection of vertex arrays defining a geometry object. This class acts as a wrapper around multipl...
Object that represents drawable geometry. This object holds vertex, instancing and index buffers for ...
GR_PickBufferGL()=default
virtual int getVectorSize() const =0
UT_UniquePtr< RE_OverrideList > myOverrides
Temporary container for either a RV_Render and an RE_Render.
virtual bool getPickData(RE_RenderContext r, int npicks, const UT_Span< int32 > &out_data)=0
bool setSize(RE_RenderContext r, int buffer_size, int vector_size=1, bool inconclusive_stream_too=false) override
virtual int renderLineVertices(int connect_start, int connect_num, GR_PickCompMode id_mode, GR_PickStyle style, bool has_pick_map, GR_SelectMode select_mode, int select_inst, GR_PickBuffer *pick_buffer)=0
std::unique_ptr< T, Deleter > UT_UniquePtr
A smart pointer for unique ownership of dynamically allocated objects.
bool getPickData(RE_RenderContext r, int npicks, const UT_Span< int32 > &out_data) override
virtual int renderFaceDeformingPrims(int connect_start, int connect_num, GR_PickCompMode id_mode, GR_PickStyle style, bool has_pick_map, bool wireframe, GR_SelectMode select_mode, int select_inst, GR_PickBuffer *pick_buffer)=0
int getVectorSize() const override
virtual GR_GeoRender::RenderType getRenderType() const override
virtual bool hasVertIDAttrib() const =0
virtual int renderLinePrims(int connect_start, int connect_num, GR_PickCompMode id_mode, GR_PickStyle style, bool has_pick_map, bool wireframe, GR_SelectMode select_mode, int select_inst, GR_PickBuffer *pick_buffer)=0
virtual bool hasPointIDAttrib() const =0
virtual int renderFaceNormals(int connect_start, int connect_num, GR_PickStyle style, bool has_pick_map)=0
const GR_DisplayOption * opts
virtual int renderFaceVertices(int connect_start, int connect_num, GR_PickCompMode id_mode, GR_PickStyle style, bool has_pick_map, GR_SelectMode select_mode, int select_inst, GR_PickBuffer *pick_buffer)=0
virtual int renderPoints(int connect_start, int connect_num, RE_PrimType real_prim_type, int real_connect_start, int real_connect_num, GR_PickCompMode id_mode, GR_PickStyle style, bool has_pick_map, GR_SelectMode select_mode, int select_inst, GR_PickBuffer *pick_buffer)=0
virtual int renderGuidePoints(int connect_start, int connect_num, GR_PickCompMode prim_id_mode, GR_PickStyle style, GR_SelectMode select_mode, int select_inst)=0
virtual RE_Geometry * getOGLBuffer() override
virtual RV_VKBuffer * getVKBuffer() override
virtual GR_GeoRender::RenderType getRenderType() const =0
Handle to the main interface of Vulkan.
virtual int getLength() const =0
virtual GR_GeoRender::RenderType getRenderType() const =0
GR_GeoRender * myGeoRender
virtual int renderMeshEdges(int connect_start, int connect_num, GR_PickCompMode point_id_mode, bool midpoints, GR_PickStyle style, bool has_pick_map, GR_SelectMode select_mode, int select_inst, GR_PickBuffer *pick_buffer)=0
virtual int renderPointNormals(int connect_start, int connect_num, GR_PickCompMode id_mode, GR_PickStyle style, bool has_pick_map, bool normalize)=0
virtual int renderSubDLinePrims(int connect_start, int connect_num, GR_PickCompMode id_mode, GR_PickStyle style, bool has_pick_map, bool wireframe, GR_SelectMode select_mode, int select_inst, GR_PickBuffer *pick_buffer, UT_Vector2F lod_parms)=0
virtual int renderBreakpoints(int connect_start, int connect_num, GR_PickCompMode id_mode, GR_PickStyle style, bool has_pick_map, bool wireframe, GR_SelectMode select_mode, int select_inst, GR_PickBuffer *pick_buffer)=0
virtual int renderMeshVertices(int connect_start, int connect_num, GR_PickCompMode id_mode, GR_PickStyle style, bool has_pick_map, GR_SelectMode select_mode, int select_inst, GR_PickBuffer *pick_buffer)=0
virtual RE_Geometry * getOGLBuffer()=0
LeafData & operator=(const LeafData &)=delete
virtual int renderLineEdges(int connect_start, int connect_num, GR_PickCompMode point_id_mode, bool midpoints, GR_PickStyle style, bool has_pick_map, bool wireframe, GR_SelectMode select_mode, int select_inst, GR_PickBuffer *pick_buffer)=0
~GR_PickBufferGL() override
virtual bool hasInstIDAttrib() const =0
virtual int renderGuideEdges(int connect_start, int connect_num, GR_PickCompMode prim_id_mode, GR_PickStyle style, GR_SelectMode select_mode, int select_inst)=0
virtual int renderTetPrims(int connect_start, int connect_num, GR_PickCompMode id_mode, GR_PickStyle style, bool has_pick_map, bool wireframe, GR_SelectMode select_mode, int select_inst, GR_PickBuffer *pick_buffer)=0
const GR_RenderInfo * info
virtual int renderFaceEdges(int connect_start, int connect_num, GR_PickCompMode point_id_mode, bool midpoints, GR_PickStyle style, bool has_pick_map, GR_SelectMode select_mode, int select_inst, GR_PickBuffer *pick_buffer)=0
virtual int renderFacePrims(int connect_start, int connect_num, GR_PickCompMode id_mode, GR_PickStyle style, bool has_pick_map, bool wireframe, GR_SelectMode select_mode, int select_inst, GR_PickBuffer *pick_buffer)=0
constexpr T normalize(UT_FixedVector< T, D > &a) noexcept
int getLength() const override