Blender V4.3
draw_cache_extract.hh File Reference
#include "BLI_math_matrix_types.hh"
#include "BLI_utildefines.h"
#include "GPU_shader.hh"
#include "draw_attributes.hh"

Go to the source code of this file.

Classes

struct  blender::draw::DRW_MeshWeightState
 
struct  blender::draw::MeshBufferList
 
struct  blender::draw::MeshBatchList
 
struct  blender::draw::MeshExtractLooseGeom
 
struct  blender::draw::SortedFaceData
 
struct  blender::draw::MeshBufferCache
 
struct  blender::draw::MeshBatchCache
 

Namespaces

namespace  blender
 
namespace  blender::gpu
 
namespace  blender::draw
 

Macros

#define MBC_BATCH_LEN   (sizeof(MeshBatchList) / sizeof(void *))
 
#define MBC_VBO_LEN   (sizeof(MeshBufferList::vbo) / sizeof(void *))
 
#define MBC_IBO_LEN   (sizeof(MeshBufferList::ibo) / sizeof(void *))
 
#define MBC_BATCH_INDEX(batch)   (offsetof(MeshBatchList, batch) / sizeof(void *))
 
#define FOREACH_MESH_BUFFER_CACHE(batch_cache, mbc)
 
#define MBC_EDITUV
 

Enumerations

enum  { blender::draw::DRW_MESH_WEIGHT_STATE_MULTIPAINT = (1 << 0) , blender::draw::DRW_MESH_WEIGHT_STATE_AUTO_NORMALIZE = (1 << 1) , blender::draw::DRW_MESH_WEIGHT_STATE_LOCK_RELATIVE = (1 << 2) }
 
enum  blender::draw::DRWBatchFlag {
  blender::draw::MBC_SURFACE = (1u << MBC_BATCH_INDEX(surface)) , blender::draw::MBC_SURFACE_WEIGHTS = (1u << MBC_BATCH_INDEX(surface_weights)) , blender::draw::MBC_EDIT_TRIANGLES = (1u << MBC_BATCH_INDEX(edit_triangles)) , blender::draw::MBC_EDIT_VERTICES = (1u << MBC_BATCH_INDEX(edit_vertices)) ,
  blender::draw::MBC_EDIT_EDGES = (1u << MBC_BATCH_INDEX(edit_edges)) , blender::draw::MBC_EDIT_VNOR = (1u << MBC_BATCH_INDEX(edit_vnor)) , blender::draw::MBC_EDIT_LNOR = (1u << MBC_BATCH_INDEX(edit_lnor)) , blender::draw::MBC_EDIT_FACEDOTS = (1u << MBC_BATCH_INDEX(edit_fdots)) ,
  blender::draw::MBC_EDIT_MESH_ANALYSIS = (1u << MBC_BATCH_INDEX(edit_mesh_analysis)) , blender::draw::MBC_SKIN_ROOTS = (1u << MBC_BATCH_INDEX(edit_skin_roots)) , blender::draw::MBC_EDITUV_FACES_STRETCH_AREA = (1u << MBC_BATCH_INDEX(edituv_faces_stretch_area)) , blender::draw::MBC_EDITUV_FACES_STRETCH_ANGLE = (1u << MBC_BATCH_INDEX(edituv_faces_stretch_angle)) ,
  blender::draw::MBC_EDITUV_FACES = (1u << MBC_BATCH_INDEX(edituv_faces)) , blender::draw::MBC_EDITUV_EDGES = (1u << MBC_BATCH_INDEX(edituv_edges)) , blender::draw::MBC_EDITUV_VERTS = (1u << MBC_BATCH_INDEX(edituv_verts)) , blender::draw::MBC_EDITUV_FACEDOTS = (1u << MBC_BATCH_INDEX(edituv_fdots)) ,
  blender::draw::MBC_EDIT_SELECTION_VERTS = (1u << MBC_BATCH_INDEX(edit_selection_verts)) , blender::draw::MBC_EDIT_SELECTION_EDGES = (1u << MBC_BATCH_INDEX(edit_selection_edges)) , blender::draw::MBC_EDIT_SELECTION_FACES = (1u << MBC_BATCH_INDEX(edit_selection_faces)) , blender::draw::MBC_EDIT_SELECTION_FACEDOTS = (1u << MBC_BATCH_INDEX(edit_selection_fdots)) ,
  blender::draw::MBC_ALL_VERTS = (1u << MBC_BATCH_INDEX(all_verts)) , blender::draw::MBC_ALL_EDGES = (1u << MBC_BATCH_INDEX(all_edges)) , blender::draw::MBC_LOOSE_EDGES = (1u << MBC_BATCH_INDEX(loose_edges)) , blender::draw::MBC_EDGE_DETECTION = (1u << MBC_BATCH_INDEX(edge_detection)) ,
  blender::draw::MBC_WIRE_EDGES = (1u << MBC_BATCH_INDEX(wire_edges)) , blender::draw::MBC_WIRE_LOOPS = (1u << MBC_BATCH_INDEX(wire_loops)) , blender::draw::MBC_WIRE_LOOPS_UVS = (1u << MBC_BATCH_INDEX(wire_loops_uvs)) , blender::draw::MBC_SCULPT_OVERLAYS = (1u << MBC_BATCH_INDEX(sculpt_overlays)) ,
  blender::draw::MBC_VIEWER_ATTRIBUTE_OVERLAY = (1u << MBC_BATCH_INDEX(surface_viewer_attribute)) , blender::draw::MBC_SURFACE_PER_MAT = (1u << MBC_BATCH_LEN)
}
 

Functions

int blender::draw::mesh_render_mat_len_get (const Object &object, const Mesh &mesh)
 
 blender::draw::ENUM_OPERATORS (DRWBatchFlag, MBC_SURFACE_PER_MAT)
 
 blender::draw::BLI_STATIC_ASSERT (MBC_BATCH_LEN< 32, "Number of batches exceeded the limit of bit fields")
 
Extract Loop
void blender::draw::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)
 
Subdivision Extract Loop
void blender::draw::mesh_buffer_cache_create_requested_subdiv (MeshBatchCache &cache, MeshBufferCache &mbc, DRWSubdivCache &subdiv_cache, MeshRenderData &mr)
 

Macro Definition Documentation

◆ FOREACH_MESH_BUFFER_CACHE

#define FOREACH_MESH_BUFFER_CACHE ( batch_cache,
mbc )
Value:
for (MeshBufferCache *mbc = &batch_cache.final; \
mbc == &batch_cache.final || mbc == &batch_cache.cage || mbc == &batch_cache.uv_cage; \
mbc = (mbc == &batch_cache.final) ? \
&batch_cache.cage : \
((mbc == &batch_cache.cage) ? &batch_cache.uv_cage : nullptr))

Definition at line 226 of file draw_cache_extract.hh.

Referenced by blender::draw::DRW_mesh_batch_cache_create_requested(), blender::draw::DRW_mesh_batch_cache_dirty_tag(), blender::draw::mesh_batch_cache_check_vertex_group(), blender::draw::mesh_batch_cache_clear(), blender::draw::mesh_batch_cache_discard_shaded_tri(), blender::draw::mesh_batch_cache_discard_uvedit(), and blender::draw::mesh_batch_cache_discard_uvedit_select().

◆ MBC_BATCH_INDEX

#define MBC_BATCH_INDEX ( batch)    (offsetof(MeshBatchList, batch) / sizeof(void *))

Definition at line 156 of file draw_cache_extract.hh.

◆ MBC_BATCH_LEN

#define MBC_BATCH_LEN   (sizeof(MeshBatchList) / sizeof(void *))

◆ MBC_EDITUV

#define MBC_EDITUV
Value:
(MBC_EDITUV_FACES_STRETCH_AREA | MBC_EDITUV_FACES_STRETCH_ANGLE | MBC_EDITUV_FACES | \
MBC_EDITUV_EDGES | MBC_EDITUV_VERTS | MBC_EDITUV_FACEDOTS | MBC_WIRE_LOOPS_UVS)

Definition at line 280 of file draw_cache_extract.hh.

Referenced by blender::draw::DRW_mesh_batch_cache_create_requested().

◆ MBC_IBO_LEN

#define MBC_IBO_LEN   (sizeof(MeshBufferList::ibo) / sizeof(void *))

◆ MBC_VBO_LEN

#define MBC_VBO_LEN   (sizeof(MeshBufferList::vbo) / sizeof(void *))