152#define MBC_BATCH_LEN (sizeof(MeshBatchList) / sizeof(void *))
153#define MBC_VBO_LEN (sizeof(MeshBufferList::vbo) / sizeof(void *))
154#define MBC_IBO_LEN (sizeof(MeshBufferList::ibo) / sizeof(void *))
156#define MBC_BATCH_INDEX(batch) (offsetof(MeshBatchList, batch) / sizeof(void *))
226#define FOREACH_MESH_BUFFER_CACHE(batch_cache, mbc) \
227 for (MeshBufferCache *mbc = &batch_cache.final; \
228 mbc == &batch_cache.final || mbc == &batch_cache.cage || mbc == &batch_cache.uv_cage; \
229 mbc = (mbc == &batch_cache.final) ? \
230 &batch_cache.cage : \
231 ((mbc == &batch_cache.cage) ? &batch_cache.uv_cage : nullptr))
281 (MBC_EDITUV_FACES_STRETCH_AREA | MBC_EDITUV_FACES_STRETCH_ANGLE | MBC_EDITUV_FACES | \
282 MBC_EDITUV_EDGES | MBC_EDITUV_VERTS | MBC_EDITUV_FACEDOTS | MBC_WIRE_LOOPS_UVS)
285 MeshBatchCache &cache,
286 MeshBufferCache &mbc,
291 bool edit_mode_active,
300 MeshBufferCache &mbc,
301 DRWSubdivCache &subdiv_cache,
#define ENUM_OPERATORS(_type, _max)
Utilities for rendering attributes.
BLI_STATIC_ASSERT(MBC_BATCH_LEN< 32, "Number of batches exceeded the limit of bit fields")
int mesh_render_mat_len_get(const Object &object, const Mesh &mesh)
void mesh_buffer_cache_create_requested(TaskGraph &task_graph, MeshBatchCache &cache, MeshBufferCache &mbc, Object &object, Mesh &mesh, bool is_editmode, bool is_paint_mode, bool edit_mode_active, const float4x4 &object_to_world, bool do_final, bool do_uvedit, const Scene &scene, const ToolSettings *ts, bool use_hide)
@ DRW_MESH_WEIGHT_STATE_MULTIPAINT
@ DRW_MESH_WEIGHT_STATE_LOCK_RELATIVE
@ DRW_MESH_WEIGHT_STATE_AUTO_NORMALIZE
void mesh_buffer_cache_create_requested_subdiv(MeshBatchCache &cache, MeshBufferCache &mbc, DRWSubdivCache &subdiv_cache, MeshRenderData &mr)
@ MBC_EDIT_SELECTION_FACES
@ MBC_EDITUV_FACES_STRETCH_ANGLE
@ MBC_EDIT_SELECTION_FACEDOTS
@ MBC_EDIT_SELECTION_VERTS
@ MBC_EDITUV_FACES_STRETCH_AREA
@ MBC_VIEWER_ATTRIBUTE_OVERLAY
@ MBC_EDIT_SELECTION_EDGES
MatBase< float, 4, 4 > float4x4
DRW_Attributes attr_needed
DRW_MeshWeightState weight_state
Array< gpu::IndexBuf * > tris_per_mat
DRWBatchFlag batch_requested
DRW_Attributes attr_used_over_time
DRWSubdivCache * subdiv_cache
Array< gpu::Batch * > surface_per_mat
eV3DShadingColorType color_type
DRW_MeshCDMask cd_used_over_time
gpu::Batch * edit_selection_faces
gpu::Batch * edit_skin_roots
gpu::Batch * wire_loops_uvs
gpu::Batch * surface_weights
gpu::Batch * edituv_fdots
gpu::Batch * sculpt_overlays
gpu::Batch * edit_selection_edges
gpu::Batch * edituv_faces
gpu::Batch * surface_viewer_attribute
gpu::Batch * edituv_faces_stretch_angle
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 * edituv_edges
gpu::Batch * edituv_faces_stretch_area
gpu::Batch * edit_selection_fdots
MeshExtractLooseGeom loose_geom
SortedFaceData face_sorted
gpu::VertBuf * edituv_stretch_area
gpu::IndexBuf * edituv_fdots
struct blender::draw::MeshBufferList::@247 vbo
gpu::VertBuf * attr_viewer
gpu::VertBuf * mesh_analysis
gpu::VertBuf * sculpt_data
gpu::VertBuf * edituv_stretch_angle
gpu::IndexBuf * lines_loose
gpu::IndexBuf * lines_paint_mask
gpu::VertBuf * fdots_edituv_data
gpu::IndexBuf * edituv_points
gpu::IndexBuf * edituv_lines
gpu::IndexBuf * lines_adjacency
gpu::VertBuf * edituv_data
struct blender::draw::MeshBufferList::@248 ibo
gpu::VertBuf * skin_roots
gpu::IndexBuf * edituv_tris
gpu::VertBuf * attr[GPU_MAX_ATTR]
std::optional< Array< int > > face_tri_offsets
Array< int > tris_num_by_material