193#define MBC_BATCH_LEN (sizeof(MeshBatchList) / sizeof(void *))
195#define MBC_BATCH_INDEX(batch) (offsetof(MeshBatchList, batch) / sizeof(void *))
270#define FOREACH_MESH_BUFFER_CACHE(batch_cache, mbc) \
271 for (MeshBufferCache *mbc = &batch_cache.final; \
272 mbc == &batch_cache.final || mbc == &batch_cache.cage || mbc == &batch_cache.uv_cage; \
273 mbc = (mbc == &batch_cache.final) ? \
274 &batch_cache.cage : \
275 ((mbc == &batch_cache.cage) ? &batch_cache.uv_cage : nullptr))
323 (MBC_EDITUV_FACES_STRETCH_AREA | MBC_EDITUV_FACES_STRETCH_ANGLE | MBC_EDITUV_FACES | \
324 MBC_EDITUV_EDGES | MBC_EDITUV_VERTS | MBC_EDITUV_FACEDOTS | MBC_UV_FACES | \
325 MBC_WIRE_LOOPS_ALL_UVS | MBC_WIRE_LOOPS_UVS | MBC_WIRE_LOOPS_EDITUVS)
329 MeshBatchCache &cache,
330 MeshBufferCache &mbc,
342 MeshBufferCache &mbc,
345 DRWSubdivCache &subdiv_cache,
#define ENUM_OPERATORS(_type, _max)
unsigned long long int uint64_t
Utilities for rendering attributes.
@ MBC_EDIT_SELECTION_FACES
@ MBC_PAINT_OVERLAY_VERTS
@ MBC_PAINT_OVERLAY_WIRE_LOOPS
@ MBC_EDITUV_FACES_STRETCH_ANGLE
@ MBC_EDIT_SELECTION_FACEDOTS
@ MBC_PAINT_OVERLAY_SURFACE
@ MBC_EDIT_SELECTION_VERTS
@ MBC_EDITUV_FACES_STRETCH_AREA
@ MBC_VIEWER_ATTRIBUTE_OVERLAY
@ MBC_EDIT_SELECTION_EDGES
void mesh_buffer_cache_create_requested_subdiv(MeshBatchCache &cache, MeshBufferCache &mbc, Span< IBOType > ibo_requests, Span< VBOType > vbo_requests, DRWSubdivCache &subdiv_cache, MeshRenderData &mr)
BLI_STATIC_ASSERT(MBC_BATCH_LEN< 64, "Number of batches exceeded the limit of bit fields")
void mesh_buffer_cache_create_requested(TaskGraph &task_graph, const Scene &scene, MeshBatchCache &cache, MeshBufferCache &mbc, Span< IBOType > ibo_requests, Span< VBOType > vbo_requests, Object &object, Mesh &mesh, bool is_editmode, bool is_paint_mode, bool do_final, bool do_uvedit, bool use_hide)
@ DRW_MESH_WEIGHT_STATE_MULTIPAINT
@ DRW_MESH_WEIGHT_STATE_LOCK_RELATIVE
@ DRW_MESH_WEIGHT_STATE_AUTO_NORMALIZE
VectorSet< std::string > attr_used_over_time
DRW_MeshWeightState weight_state
Array< gpu::IndexBufPtr > tris_per_mat
DRWBatchFlag batch_requested
VectorSet< std::string > attr_used
DRWSubdivCache * subdiv_cache
Array< gpu::Batch * > surface_per_mat
DRW_MeshCDMask cd_used_over_time
VectorSet< std::string > attr_needed
gpu::Batch * wire_loops_edituvs
gpu::Batch * edit_selection_faces
gpu::Batch * edit_skin_roots
gpu::Batch * wire_loops_uvs
gpu::Batch * paint_overlay_surface
gpu::Batch * surface_weights
gpu::Batch * edituv_fdots
gpu::Batch * sculpt_overlays
gpu::Batch * paint_overlay_verts
gpu::Batch * edit_selection_edges
gpu::Batch * edituv_faces
gpu::Batch * surface_viewer_attribute
gpu::Batch * edituv_faces_stretch_angle
gpu::Batch * wire_loops_all_uvs
gpu::Batch * edit_mesh_analysis
gpu::Batch * edit_vertices
gpu::Batch * edituv_verts
gpu::Batch * edge_detection
gpu::Batch * edit_selection_verts
gpu::Batch * edit_triangles
gpu::Batch * paint_overlay_wire_loops
gpu::Batch * edituv_edges
gpu::Batch * edituv_faces_stretch_area
gpu::Batch * edit_selection_fdots
MeshExtractLooseGeom loose_geom
SortedFaceData face_sorted
Map< IBOType, std::unique_ptr< gpu::IndexBuf, gpu::IndexBufDeleter > > ibos
Map< VBOType, std::unique_ptr< gpu::VertBuf, gpu::VertBufDeleter > > vbos
std::optional< Array< int > > face_tri_offsets
Array< int > tris_num_by_material