13 #ifndef GR_GeoRenderVK_h
14 #define GR_GeoRenderVK_h
46 class gr_AttribInfoVK;
47 class gr_AttribCacheVK;
84 return myGeometryVk.get();
92 int &out_connect_start,
93 int &out_connect_num) {}
103 bool need_prim_vert_info,
109 bool *has_detail_prim_id,
111 int *num_bone_deform);
121 bool need_prim_vert_info,
145 const char *attrib_name,
152 bool *is_ce_attrib =
nullptr);
156 const char *attrib_name,
166 bool *is_ce_attrib =
nullptr);
171 const char *attrib_name,
175 bool fill_immediately);
180 const char *attrib_name,
210 bool allow_color_override,
217 bool allow_color_override,
236 exint &pinned_bytes)
override;
239 virtual void updateAccelerationStructure(
RV_Render *
r,
272 void clearScratchData();
297 bool *out_is_new =
nullptr);
353 int entries()
const {
return myAttribs.entries(); }
355 bool hasBounds()
const {
return myHasPosBounds || myHasDetailBounds; }
363 if (myHasDetailBounds)
365 return myDetailBounds;
370 void allocateStagingBuffer(
RV_Render* r);
374 gr_AttribInfoVK *append(
384 int instance_group = -1);
389 {
return myFillAmount; }
391 { myFillAmount +=
n; }
394 void setFallbacks(
const UT_Options *fallbacks);
412 const void *fillConstAttribute(gr_AttribInfoVK *attrib)
const;
413 const void *fillRegularAttribute(gr_AttribInfoVK *attrib)
const;
414 const void *fillPointAttribute(gr_AttribInfoVK *attrib)
const;
415 const void *fillPointIDAttribute(gr_AttribInfoVK *attrib)
const;
416 const void *fillPrimIDAttribute(gr_AttribInfoVK *attrib)
const;
417 const void *fillStringAttribute(gr_AttribInfoVK *attrib)
const;
418 const void *fillMaterialAttribute(gr_AttribInfoVK *attrib)
const;
419 const void *fillTangentAttribute(gr_AttribInfoVK *attrib)
const;
420 const void *fillBoneAttributes(gr_AttribInfoVK *attrib)
const;
422 void createNormalAttribute(gr_AttribInfoVK *attrib)
const;
428 gr_AttribCacheVK *myAttribCache;
434 void computeDetailBounds();
435 bool myHasDetailBounds;
445 bool myUsedFallback =
false;
446 bool myHasCLNormal =
false;
448 friend gr_AttribInfoVK;
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
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
UT_UniquePtr< gr_AttribCacheVK > myAttribCache
virtual void getVkDecorConnectGroup(RV_PrimType render_prim, bool is_uv_view, int &out_connect_start, int &out_connect_num)
RV_API void cleanupShaders()
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.
Handle to the main interface of Vulkan.
RV_API bool initShaders(RV_Instance *inst)
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.
void setAttribCache(gr_AttribCacheVK *cache)
UT_UniquePtr< RV_Geometry > myGeometryVk
RV_Geometry * getVkGeometry() override