139 struct rv_DrawSetInfo;
140 struct rv_DrawInputInfo;
142 struct rv_Connectivity;
143 struct rv_InstanceGroup;
180 exint gpuMemoryUsage()
const;
188 bool setNumPoints(
exint num_points);
190 exint getNumPoints()
const;
194 void setVertexBufferSize(
exint vert_buffer_elements);
196 exint getVertexBufferSize()
const;
200 void setPrimitiveBufferSize(
exint prim_buffer_elements);
202 exint getPrimitiveBufferSize()
const;
213 bool allow_gpu_write =
false);
224 bool allow_gpu_write =
false);
260 int out_vec_size)
const;
281 int& out_vec_size)
const;
287 exint& out_len)
const;
303 int& out_vec_size)
const;
313 int instance_group = -1)
const;
320 bool createInstanceGroup(
int group_index);
322 void removeInstanceGroup(
int group_index);
324 bool hasInstanceGroup(
int group_index)
const;
326 int getMaxInstanceGroup()
const;
329 void setInstanceGroupCount(
int instance_group,
int count);
331 int getInstanceGroupCount(
int instance_group)
const;
333 int getInstanceGroupTransformCount(
int instance_group)
const;
336 void setInstanceGroupForceFullDraw(
int instance_group,
bool enable);
338 bool getInstanceGroupForceFullDraw(
int instance_group)
const;
341 void setInstanceGroupIndexList(
int group_index,
343 int max_capacity = -1);
345 void setInstanceGroupConstIndex(
int instance_group,
346 int instance_to_draw);
348 void setInstanceGroupDrawEverything(
int instance_group);
350 void setInstanceGroupDrawNothing(
int instance_group);
356 void setConstInstanceGroupTransform(
int instance_group,
358 bool remove_instanced_xform);
361 void copyConstInstanceGroupTransform(
int instance_group,
int src_group);
366 bool setInstanceGroupAttrib(
int instance_group,
376 bool createSharedInstanceGroupAttrib(
int instance_group,
386 bool assignSharedInstanceGroupAttrib(
int instance_group,
391 bool freeInstanceGroupAttrib(
int instance_group,
401 const char*
name =
nullptr);
409 bool cpu_mapped =
true,
410 const char*
name =
nullptr);
413 RV_Buffer * getInstanceGroupAttrib(
int instance_group,
418 bool getInstanceAttribLength(
int instance_group,
420 exint& out_len)
const;
423 bool getInstanceAttribVersion(
int instance_group,
427 void setInstanceAttribVersion(
int instance_group,
435 void connectAllPrims(
int connect_index,
439 void connectSomePrims(
int connect_index,
448 void connectIndexedPrims(
int connect_index,
451 bool need_prim_info =
false,
454 void connectSomeVerts(
int connect_index,
461 void connectIndexedVerts(
int connect_index,
464 bool need_prim_info =
false,
470 void setConnectDivisor(
int connect_index,
int divisor,
475 void setConnectUsePrimInfo(
int connect_index,
int base_prim= 0);
482 int getNumRenderPrims(
int connect_index)
const;
485 RV_PrimType getRenderPrimType(
int connect_index)
const;
488 RV_Buffer *getIndexBuffer(
int connect_index)
const;
490 RV_Buffer *getPrimBuffer(
int connect_index)
const;
492 RV_Buffer *getPrimVertexBuffer(
int connect_index)
const;
495 bool isVertexFrequency(
int connect_index)
const;
498 bool hasConnectGroup(
int connect_index)
const;
500 bool hasNonEmptyConnectGroup(
int connect_index)
const;
502 int getMaxConnectGroup()
const;
505 bool removeConnectedPrims(
int connect_index);
507 void resetConnectedPrims();
533 exint draw_offset = -1,
exint draw_size = -1);
538 void drawInstanceGroup(
543 exint draw_offset = -1,
exint draw_size = -1);
548 int connect_index_start,
549 int num_connect_indexs,
553 void drawInstanceGroupRange(
580 static void cleanupResources();
584 void updateAccelerationStructure(
588 int surface_connect_index,
609 rv_Connectivity* getConnect(
int group_idx,
bool do_create);
614 const char *base_name,
617 int getTransformAttribCount(
const rv_Attribute* attr)
const;
624 int* out_idx =
nullptr)
const;
633 bool attr_owned =
false,
634 bool allow_gpu_write =
false);
635 bool privFreeAttrib(
RV_Render*
r, rv_Attribute &attr);
643 bool allocateConnectBuffers(
RV_Render*
r, rv_Connectivity&
c,
645 bool allocateInstIndexBuffer(
RV_Render*
r, rv_InstanceGroup&
g,
656 bool privPrepareDraw(
658 const rv_Connectivity *connect,
659 int instance_group_idx,
665 const rv_Connectivity *connect,
666 int instance_group_idx,
669 exint draw_offset = -1,
670 exint draw_length = -1
675 const rv_Connectivity *connect,
676 int instance_group_idx,
689 uint32_t myNumPoints = 0;
690 uint32_t myVertBufferSize = 0;
691 uint32_t myPrimBufferSize = 0;
693 bool myAttributesValid =
false;
716 struct rv_DrawSetInfo
720 int myConnectGroupIdx;
721 int myInstanceGroupIdx;
723 bool myIsValid =
false;
731 int myInstTransformUniformIdx = -1;
732 int myInstNestLevelUniformIdx = -1;
746 DrawSetCache myDrawSet;
750 rv_DrawSetInfo* getDrawSet(
753 const rv_Connectivity *connect,
754 int instance_group_idx,
761 rv_DrawSetInfo& set_info,
762 const rv_Connectivity *connect,
763 int instance_group_idx,
767 bool bindInputAttribute(
770 const rv_Connectivity *connect,
771 const rv_Attribute *attrib,
797 bool myIsAccelStructDirty =
true;
798 bool myIsAccelStructInstDirty =
true;
A collection of Vulkan UBO, SSBO, and Image shader bindings (descriptor set)
GLsizei GLenum const void * indices
VkFlags VkBufferUsageFlags
VkPrimitiveTopology RVgetVkPrimType(RV_PrimType t)
UT_UniquePtr< RV_VKBuffer > RV_VKBufferPtr
Object that represents drawable geometry. This object holds vertex, instancing and index buffers for ...
GLuint GLsizei GLsizei * length
RV_GPUType RVconvertFromGPUType(UT_GPUType t)
std::unique_ptr< T, Deleter > UT_UniquePtr
A smart pointer for unique ownership of dynamically allocated objects.
#define UT_ASSERT_MSG(ZZ,...)
GLint GLint GLsizei GLint GLenum GLenum type
UT_UniquePtr< RV_VKAccelerationStructure > RV_VKAccelerationStructurePtr
static const UT_Matrix4T< fpreal32 > & getIdentityMatrix()
GLint GLenum GLboolean GLsizei stride
GLuint const GLchar * name
GLint GLenum GLboolean normalized
Handle to the main interface of Vulkan.
UT_GPUType RVconvertToUTGPUType(RV_GPUType t)
GLsizeiptr const void GLenum usage
UT_UniquePtr< rv_InstanceGroup > rv_InstanceGroupPtr
void dirtyAccelerationStructure()
GR_API RE_GPUType getAttributeType(RE_Render *r, const char *attrib_name, int &vsize, const GT_DataArrayHandle &pa, const GR_DisplayOption &opts, RE_ArrayType array_type)
const UT_StringHolder & getName() const
Get name used for debugging.
Simple class for a mutli-integer cache tag.
UT_UniquePtr< RV_Buffer > RV_BufferPtr
void setName(const UT_StringHolder &name)
Set name used for debugging.
FMT_INLINE void print(format_string< T...> fmt, T &&...args)