Blender V5.0
draw_cache_impl_mesh.cc File Reference

Mesh API for render engines. More...

#include <array>
#include <optional>
#include "MEM_guardedalloc.h"
#include "BLI_index_range.hh"
#include "BLI_listbase.h"
#include "BLI_span.hh"
#include "BLI_string_ref.hh"
#include "DNA_mesh_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "DNA_userdef_types.h"
#include "BKE_attribute.hh"
#include "BKE_customdata.hh"
#include "BKE_editmesh.hh"
#include "BKE_material.hh"
#include "BKE_mesh.hh"
#include "BKE_object.hh"
#include "BKE_object_deform.h"
#include "BKE_paint.hh"
#include "BKE_paint_bvh.hh"
#include "BKE_subdiv_modifier.hh"
#include "atomic_ops.h"
#include "GPU_batch.hh"
#include "GPU_material.hh"
#include "DRW_render.hh"
#include "draw_cache_extract.hh"
#include "draw_cache_inline.hh"
#include "draw_subdivision.hh"
#include "draw_cache_impl.hh"
#include "draw_context_private.hh"
#include "mesh_extractors/extract_mesh.hh"

Go to the source code of this file.

Namespaces

namespace  blender
namespace  blender::draw

Functions

Vertex Group Selection
static void blender::draw::drw_mesh_weight_state_clear (DRW_MeshWeightState *wstate)
static void blender::draw::drw_mesh_weight_state_copy (DRW_MeshWeightState *wstate_dst, const DRW_MeshWeightState *wstate_src)
static bool blender::draw::drw_mesh_flags_equal (const bool *array1, const bool *array2, int size)
static bool blender::draw::drw_mesh_weight_state_compare (const DRW_MeshWeightState *a, const DRW_MeshWeightState *b)
static void blender::draw::drw_mesh_weight_state_extract (Object &ob, Mesh &mesh, const ToolSettings &ts, bool paint_mode, DRW_MeshWeightState *wstate)
Mesh gpu::Batch Cache
static bool blender::draw::mesh_batch_cache_valid (Mesh &mesh)
static void blender::draw::mesh_batch_cache_init (Mesh &mesh)
static MeshBatchCacheblender::draw::mesh_batch_cache_get (Mesh &mesh)
static void blender::draw::mesh_batch_cache_check_vertex_group (MeshBatchCache &cache, const DRW_MeshWeightState *wstate)
static void blender::draw::mesh_batch_cache_request_surface_batches (Mesh &mesh, MeshBatchCache &cache)
static void blender::draw::mesh_batch_cache_discard_shaded_tri (MeshBatchCache &cache)
static void blender::draw::mesh_batch_cache_discard_uvedit (MeshBatchCache &cache)
static void blender::draw::mesh_batch_cache_discard_uvedit_select (MeshBatchCache &cache)
static void blender::draw::mesh_buffer_cache_clear (MeshBufferCache *mbc)
static void blender::draw::mesh_batch_cache_free_subdiv_cache (MeshBatchCache &cache)
Expose via BKE callbacks
void blender::draw::DRW_mesh_batch_cache_validate (Mesh &mesh)
void blender::draw::DRW_mesh_batch_cache_dirty_tag (Mesh *mesh, eMeshBatchDirtyMode mode)
void blender::draw::DRW_mesh_batch_cache_free (void *batch_cache)
Public API
static void blender::draw::texpaint_request_active_uv (MeshBatchCache &cache, Object &object, Mesh &mesh)
static void blender::draw::request_active_and_default_color_attributes (const Object &object, const Mesh &mesh, VectorSet< std::string > &attributes)
void blender::draw::DRW_mesh_get_attributes (const Object &object, const Mesh &mesh, const Span< const GPUMaterial * > materials, VectorSet< std::string > *r_attrs, DRW_MeshCDMask *r_cd_needed)
Span< gpu::Batch * > blender::draw::DRW_mesh_batch_cache_get_surface_shaded (Object &object, Mesh &mesh, const Span< const GPUMaterial * > materials)
Mesh
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_all_verts (Mesh &mesh)
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_paint_overlay_verts (Mesh &mesh)
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_all_edges (Mesh &mesh)
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_surface (Mesh &mesh)
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_paint_overlay_surface (Mesh &mesh)
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_loose_edges (Mesh &mesh)
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_surface_weights (Mesh &mesh)
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_edge_detection (Mesh &mesh, bool *r_is_manifold)
Span< gpu::Batch * > blender::draw::DRW_mesh_batch_cache_get_surface_texpaint (Object &object, Mesh &mesh)
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_surface_texpaint_single (Object &object, Mesh &mesh)
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_surface_vertpaint (Object &object, Mesh &mesh)
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_surface_sculpt (Object &object, Mesh &mesh)
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_sculpt_overlays (Mesh &mesh)
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_surface_viewer_attribute (Mesh &mesh)
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_paint_overlay_edges (Mesh &mesh)
void blender::draw::DRW_mesh_batch_cache_create_requested (TaskGraph &task_graph, Object &ob, Mesh &mesh, const Scene &scene, bool is_paint_mode, bool use_hide)
Object Mode Wireframe Overlays
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_wireframes_face (Mesh &mesh)
For Image UV Editor
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_edit_mesh_analysis (Mesh &mesh)
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_uv_faces (Object &object, Mesh &mesh)
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_all_uv_wireframe (Object &object, Mesh &mesh)
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_uv_wireframe (Object &object, Mesh &mesh)
Edit-Mesh Drawing
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_edit_triangles (Mesh &mesh)
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_edit_edges (Mesh &mesh)
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_edit_vertices (Mesh &mesh)
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_edit_vert_normals (Mesh &mesh)
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_edit_loop_normals (Mesh &mesh)
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_edit_facedots (Mesh &mesh)
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_edit_skin_roots (Mesh &mesh)
Edit-mesh Selection
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_triangles_with_select_id (Mesh &mesh)
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_facedots_with_select_id (Mesh &mesh)
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_edges_with_select_id (Mesh &mesh)
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_verts_with_select_id (Mesh &mesh)
UV Image editor API
static void blender::draw::edituv_request_active_uv (MeshBatchCache &cache, Object &object, Mesh &mesh)
Edit-mesh UV Editor
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_edituv_faces_stretch_area (Object &object, Mesh &mesh, float **tot_area, float **tot_uv_area)
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_edituv_faces_stretch_angle (Object &object, Mesh &mesh)
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_edituv_faces (Object &object, Mesh &mesh)
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_edituv_edges (Object &object, Mesh &mesh)
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_edituv_verts (Object &object, Mesh &mesh)
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_edituv_facedots (Object &object, Mesh &mesh)
blender::gpu::Batch * blender::draw::DRW_mesh_batch_cache_get_edituv_wireframe (Object &object, Mesh &mesh)
Garbage Collection
void blender::draw::DRW_mesh_batch_cache_free_old (Mesh *mesh, int ctime)
Grouped batch generation
static void blender::draw::init_empty_dummy_batch (gpu::Batch &batch)

Dependencies between buffer and batch

#define TRIS_PER_MAT_INDEX   BUFFER_LEN
static void blender::draw::mesh_batch_cache_clear (MeshBatchCache &cache)
static void blender::draw::discard_buffers (MeshBatchCache &cache, const Span< VBOType > vbos, const Span< IBOType > ibos)
BLI_INLINE bool blender::draw::mesh_cd_layers_type_overlap (DRW_MeshCDMask a, DRW_MeshCDMask b)
BLI_INLINE bool blender::draw::mesh_cd_layers_type_equal (DRW_MeshCDMask a, DRW_MeshCDMask b)
BLI_INLINE void blender::draw::mesh_cd_layers_type_merge (DRW_MeshCDMask *a, DRW_MeshCDMask b)
BLI_INLINE void blender::draw::mesh_cd_layers_type_clear (DRW_MeshCDMask *a)
static void blender::draw::mesh_cd_calc_edit_uv_layer (const Mesh &, DRW_MeshCDMask *cd_used)
static void blender::draw::mesh_cd_calc_active_uv_layer (const Object &object, const Mesh &mesh, DRW_MeshCDMask &cd_used)
static void blender::draw::mesh_cd_calc_active_mask_uv_layer (const Object &object, const Mesh &mesh, DRW_MeshCDMask &cd_used)
static DRW_MeshCDMask blender::draw::mesh_cd_calc_used_gpu_layers (const Object &object, const Mesh &mesh, const Span< const GPUMaterial * > materials, VectorSet< std::string > *attributes)

Detailed Description

Mesh API for render engines.

Definition in file draw_cache_impl_mesh.cc.

Macro Definition Documentation

◆ TRIS_PER_MAT_INDEX

#define TRIS_PER_MAT_INDEX   BUFFER_LEN

Definition at line 59 of file draw_cache_impl_mesh.cc.