13 #ifndef GR_GeoRenderVK_h
14 #define GR_GeoRenderVK_h
46 class gr_AttribInfoVK;
88 return myGeometryVk.get();
92 PrimitiveType prim_type,
95 int &out_connect_start,
96 int &out_connect_num) {}
106 bool need_prim_vert_info,
112 bool *has_detail_prim_id,
114 int *num_bone_deform);
124 bool need_prim_vert_info,
148 const char *attrib_name,
155 bool *is_ce_attrib =
nullptr);
159 const char *attrib_name,
169 bool *is_ce_attrib =
nullptr);
174 const char *attrib_name,
178 bool fill_immediately);
183 const char *attrib_name,
213 bool allow_color_override,
220 bool allow_color_override,
239 exint &pinned_bytes)
override;
242 virtual void updateAccelerationStructure(
RV_Render *
r,
343 int entries()
const {
return myAttribs.entries(); }
345 bool hasBounds()
const {
return myHasPosBounds || myHasDetailBounds; }
353 if (myHasDetailBounds)
355 return myDetailBounds;
360 void allocateStagingBuffer(
RV_Render* r);
364 gr_AttribInfoVK *append(
374 int instance_group = -1);
379 {
return myFillAmount; }
381 { myFillAmount +=
n; }
384 void setFallbacks(
const UT_Options *fallbacks);
402 const void *fillConstAttribute(gr_AttribInfoVK *attrib)
const;
403 const void *fillRegularAttribute(gr_AttribInfoVK *attrib)
const;
404 const void *fillPointAttribute(gr_AttribInfoVK *attrib)
const;
405 const void *fillPointIDAttribute(gr_AttribInfoVK *attrib)
const;
406 const void *fillPrimIDAttribute(gr_AttribInfoVK *attrib)
const;
407 const void *fillStringAttribute(gr_AttribInfoVK *attrib)
const;
408 const void *fillMaterialAttribute(gr_AttribInfoVK *attrib)
const;
409 const void *fillTangentAttribute(gr_AttribInfoVK *attrib)
const;
410 const void *fillBoneAttributes(gr_AttribInfoVK *attrib)
const;
412 void createNormalAttribute(gr_AttribInfoVK *attrib)
const;
423 void computeDetailBounds();
424 bool myHasDetailBounds;
434 bool myUsedFallback =
false;
435 bool myHasCLNormal =
false;
A collection of Vulkan UBO, SSBO, and Image shader bindings (descriptor set)
UT_UniquePtr< RV_VKImage > myColorOverrideRampBuffer
virtual void gpuMemoryUsage(exint &used_bytes, exint &unused_bytes, exint &pinned_bytes)
void addToFillAmount(int n)
GLsizei const GLfloat * value
virtual void getVkDecorGeometry(GR_DecorationRender::PrimitiveType prim_type, RV_PrimType render_prim, RV_Geometry &geo, int &out_connect_start, int &out_connect_num)
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_API bool createOrReuseSet(RV_Render *r, UT_UniquePtr< RV_ShaderVariableSet > &set, int set_num, const RV_ShaderProgramBase *shader, bool *created=nullptr, const char *name=nullptr)
std::unique_ptr< T, Deleter > UT_UniquePtr
A smart pointer for unique ownership of dynamically allocated objects.
set of parameters sent to GR_Primitive::update()
UT_Array< UT_UniquePtr< RV_ShaderVariableSet > > mySets
const UT_BoundingBox getBounds() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
UT_IntrusivePtr< GT_DataArray > GT_DataArrayHandle
UT_BoundingBoxT< float > UT_BoundingBox
UT_UniquePtr< RV_ShaderBlock > myColorOverrideBlock
GR_API GR_SelectMode buildSelection(UT_Array< uint8 > &selected, const GR_UpdateParms &p, GT_DataArrayHandle prim_id, GT_DataArrayHandle pnt_id, GT_DataArrayHandle vert_id, bool is_offset, int repeat_count)
GLuint const GLchar * name
The base class for all GT primitive types.
RE_Geometry * getGeometry() override
GLfloat GLfloat GLfloat GLfloat h
A map of string to various well defined value types.
UT_UniquePtr< GR_FillAttributesVK > GR_FillAttributesVKPtr
UT_UniquePtr< RV_ShaderBlock > myTransformBlock
void setUsedFallback(bool used)
bool usedFallback() const
virtual bool supportsRayTrace() const
bool process(T &func, UT_WorkBuffer &fullpath, exint fullpath_len, const UT_StringArray &paths, const UT_Array< FS_Stat > &stats)
Utility function to process the contents of the traverse() function.
Simple class for a mutli-integer cache tag.
UT_UniquePtr< RV_Geometry > myGeometryVk
RV_Geometry * getVkGeometry() override