Blender V5.0
draw_cache.cc File Reference
#include "DNA_curve_types.h"
#include "DNA_curves_types.h"
#include "DNA_grease_pencil_types.h"
#include "DNA_lattice_types.h"
#include "DNA_mesh_types.h"
#include "DNA_modifier_types.h"
#include "DNA_object_types.h"
#include "DNA_particle_types.h"
#include "DNA_pointcloud_types.h"
#include "DNA_scene_types.h"
#include "DNA_volume_types.h"
#include "BLI_ghash.h"
#include "BLI_listbase.h"
#include "BLI_string.h"
#include "BLI_utildefines.h"
#include "BKE_attribute.hh"
#include "BKE_context.hh"
#include "BKE_mesh_wrapper.hh"
#include "BKE_object.hh"
#include "BKE_subdiv_modifier.hh"
#include "DRW_render.hh"
#include "GPU_batch.hh"
#include "GPU_batch_utils.hh"
#include "GPU_capabilities.hh"
#include "draw_cache.hh"
#include "draw_cache_impl.hh"
#include "draw_context_private.hh"

Go to the source code of this file.

Namespaces

namespace  blender
namespace  blender::draw

Macros

Internal Defines
#define VCLASS_LIGHT_AREA_SHAPE   (1 << 0)
#define VCLASS_LIGHT_SPOT_SHAPE   (1 << 1)
#define VCLASS_LIGHT_SPOT_BLEND   (1 << 2)
#define VCLASS_LIGHT_SPOT_CONE   (1 << 3)
#define VCLASS_LIGHT_DIST   (1 << 4)
#define VCLASS_CAMERA_FRAME   (1 << 5)
#define VCLASS_CAMERA_DIST   (1 << 6)
#define VCLASS_CAMERA_VOLUME   (1 << 7)
#define VCLASS_SCREENSPACE   (1 << 8)
#define VCLASS_SCREENALIGNED   (1 << 9)
#define VCLASS_EMPTY_SCALED   (1 << 10)
#define VCLASS_EMPTY_AXES   (1 << 11)
#define VCLASS_EMPTY_AXES_NAME   (1 << 12)
#define VCLASS_EMPTY_AXES_SHADOW   (1 << 13)
#define VCLASS_EMPTY_SIZE   (1 << 14)

Functions

void blender::draw::DRW_cdlayer_attr_aliases_add (GPUVertFormat *format, const char *base_name, bke::AttrType data_type, blender::StringRef layer_name, bool is_active_render, bool is_active_layer)
Generic
void blender::draw::DRW_vertbuf_create_wiredata (gpu::VertBuf *vbo, const int vert_len)
Common Object API
Note
Curve and text objects evaluate to the evaluated geometry set's mesh component if they have a surface, so curve objects themselves do not have a surface (the mesh component is presented to render engines as a separate object).
gpu::Batch * blender::draw::DRW_cache_object_all_edges_get (Object *ob)
gpu::Batch * blender::draw::DRW_cache_object_edge_detection_get (Object *ob, bool *r_is_manifold)
gpu::Batch * blender::draw::DRW_cache_object_face_wireframe_get (const Scene *scene, Object *ob)
gpu::Batch * blender::draw::DRW_cache_object_loose_edges_get (Object *ob)
gpu::Batch * blender::draw::DRW_cache_object_surface_get (Object *ob)
Span< gpu::Batch * > blender::draw::DRW_cache_object_surface_material_get (Object *ob, const Span< const GPUMaterial * > materials)
Meshes
gpu::Batch * blender::draw::DRW_cache_mesh_all_verts_get (Object *ob)
gpu::Batch * blender::draw::DRW_cache_mesh_paint_overlay_verts_get (Object *ob)
gpu::Batch * blender::draw::DRW_cache_mesh_all_edges_get (Object *ob)
gpu::Batch * blender::draw::DRW_cache_mesh_loose_edges_get (Object *ob)
gpu::Batch * blender::draw::DRW_cache_mesh_edge_detection_get (Object *ob, bool *r_is_manifold)
gpu::Batch * blender::draw::DRW_cache_mesh_surface_get (Object *ob)
gpu::Batch * blender::draw::DRW_cache_mesh_paint_overlay_surface_get (Object *ob)
gpu::Batch * blender::draw::DRW_cache_mesh_paint_overlay_edges_get (Object *ob)
Span< gpu::Batch * > blender::draw::DRW_cache_mesh_surface_shaded_get (Object *ob, const Span< const GPUMaterial * > materials)
Span< gpu::Batch * > blender::draw::DRW_cache_mesh_surface_texpaint_get (Object *ob)
gpu::Batch * blender::draw::DRW_cache_mesh_surface_texpaint_single_get (Object *ob)
gpu::Batch * blender::draw::DRW_cache_mesh_surface_vertpaint_get (Object *ob)
gpu::Batch * blender::draw::DRW_cache_mesh_surface_sculptcolors_get (Object *ob)
gpu::Batch * blender::draw::DRW_cache_mesh_surface_weights_get (Object *ob)
gpu::Batch * blender::draw::DRW_cache_mesh_face_wireframe_get (Object *ob)
gpu::Batch * blender::draw::DRW_cache_mesh_surface_mesh_analysis_get (Object *ob)
gpu::Batch * blender::draw::DRW_cache_mesh_surface_viewer_attribute_get (Object *ob)
Curve
gpu::Batch * blender::draw::DRW_cache_curve_edge_wire_get (Object *ob)
gpu::Batch * blender::draw::DRW_cache_curve_edge_wire_viewer_attribute_get (Object *ob)
gpu::Batch * blender::draw::DRW_cache_curve_edge_normal_get (Object *ob)
gpu::Batch * blender::draw::DRW_cache_curve_edge_overlay_get (Object *ob)
gpu::Batch * blender::draw::DRW_cache_curve_vert_overlay_get (Object *ob)
Font
gpu::Batch * blender::draw::DRW_cache_text_edge_wire_get (Object *ob)
Surface
gpu::Batch * blender::draw::DRW_cache_surf_edge_wire_get (Object *ob)
Lattice
gpu::Batch * blender::draw::DRW_cache_lattice_verts_get (Object *ob)
gpu::Batch * blender::draw::DRW_cache_lattice_wire_get (Object *ob, bool use_weight)
gpu::Batch * blender::draw::DRW_cache_lattice_vert_overlay_get (Object *ob)
PointCloud
gpu::Batch * blender::draw::DRW_cache_pointcloud_vert_overlay_get (Object *ob)
Volume
gpu::Batch * blender::draw::DRW_cache_volume_face_wireframe_get (Object *ob)
gpu::Batch * blender::draw::DRW_cache_volume_selection_surface_get (Object *ob)
Particles
gpu::Batch * blender::draw::DRW_cache_particles_get_hair (Object *object, ParticleSystem *psys, ModifierData *md)
gpu::Batch * blender::draw::DRW_cache_particles_get_dots (Object *object, ParticleSystem *psys)
gpu::Batch * blender::draw::DRW_cache_particles_get_edit_strands (Object *object, ParticleSystem *psys, PTCacheEdit *edit, bool use_weight)
gpu::Batch * blender::draw::DRW_cache_particles_get_edit_inner_points (Object *object, ParticleSystem *psys, PTCacheEdit *edit)
gpu::Batch * blender::draw::DRW_cache_particles_get_edit_tip_points (Object *object, ParticleSystem *psys, PTCacheEdit *edit)
Batch Cache Implementation (common)
void blender::draw::drw_batch_cache_validate (Object *ob)
void blender::draw::drw_batch_cache_generate_requested (Object *ob, TaskGraph &task_graph)
void blender::draw::drw_batch_cache_generate_requested_evaluated_mesh_or_curve (Object *ob, TaskGraph &task_graph)
void blender::draw::drw_batch_cache_generate_requested_delayed (Object *ob)
void blender::draw::DRW_batch_cache_free_old (Object *ob, int ctime)

Macro Definition Documentation

◆ VCLASS_CAMERA_DIST

#define VCLASS_CAMERA_DIST   (1 << 6)

Definition at line 52 of file draw_cache.cc.

Referenced by blender::draw::overlay::ShapeCache::ShapeCache().

◆ VCLASS_CAMERA_FRAME

#define VCLASS_CAMERA_FRAME   (1 << 5)

Definition at line 51 of file draw_cache.cc.

Referenced by blender::draw::overlay::ShapeCache::ShapeCache().

◆ VCLASS_CAMERA_VOLUME

#define VCLASS_CAMERA_VOLUME   (1 << 7)

Definition at line 53 of file draw_cache.cc.

Referenced by blender::draw::overlay::ShapeCache::ShapeCache().

◆ VCLASS_EMPTY_AXES

#define VCLASS_EMPTY_AXES   (1 << 11)

Definition at line 59 of file draw_cache.cc.

Referenced by blender::draw::overlay::ShapeCache::ShapeCache().

◆ VCLASS_EMPTY_AXES_NAME

#define VCLASS_EMPTY_AXES_NAME   (1 << 12)

Definition at line 60 of file draw_cache.cc.

Referenced by blender::draw::overlay::ShapeCache::ShapeCache().

◆ VCLASS_EMPTY_AXES_SHADOW

#define VCLASS_EMPTY_AXES_SHADOW   (1 << 13)

Definition at line 61 of file draw_cache.cc.

◆ VCLASS_EMPTY_SCALED

#define VCLASS_EMPTY_SCALED   (1 << 10)

◆ VCLASS_EMPTY_SIZE

#define VCLASS_EMPTY_SIZE   (1 << 14)

Definition at line 62 of file draw_cache.cc.

Referenced by blender::draw::overlay::ShapeCache::ShapeCache().

◆ VCLASS_LIGHT_AREA_SHAPE

#define VCLASS_LIGHT_AREA_SHAPE   (1 << 0)

Definition at line 45 of file draw_cache.cc.

Referenced by blender::draw::overlay::ShapeCache::ShapeCache().

◆ VCLASS_LIGHT_DIST

#define VCLASS_LIGHT_DIST   (1 << 4)

Definition at line 49 of file draw_cache.cc.

Referenced by blender::draw::overlay::light_append_direction_line().

◆ VCLASS_LIGHT_SPOT_BLEND

#define VCLASS_LIGHT_SPOT_BLEND   (1 << 2)

Definition at line 47 of file draw_cache.cc.

Referenced by blender::draw::overlay::ShapeCache::ShapeCache().

◆ VCLASS_LIGHT_SPOT_CONE

#define VCLASS_LIGHT_SPOT_CONE   (1 << 3)

Definition at line 48 of file draw_cache.cc.

Referenced by blender::draw::overlay::ShapeCache::ShapeCache().

◆ VCLASS_LIGHT_SPOT_SHAPE

#define VCLASS_LIGHT_SPOT_SHAPE   (1 << 1)

Definition at line 46 of file draw_cache.cc.

Referenced by blender::draw::overlay::ShapeCache::ShapeCache().

◆ VCLASS_SCREENALIGNED

#define VCLASS_SCREENALIGNED   (1 << 9)

Definition at line 56 of file draw_cache.cc.

Referenced by blender::draw::overlay::ShapeCache::ShapeCache().

◆ VCLASS_SCREENSPACE

#define VCLASS_SCREENSPACE   (1 << 8)