Blender  V3.3
draw_cache_extract_mesh_render_data.cc File Reference

Extraction of Mesh data into VBO to feed to GPU. More...

#include "MEM_guardedalloc.h"
#include "BLI_array.hh"
#include "BLI_bitmap.h"
#include "BLI_math.h"
#include "BLI_task.h"
#include "BKE_editmesh.h"
#include "BKE_editmesh_cache.h"
#include "BKE_mesh.h"
#include "GPU_batch.h"
#include "ED_mesh.h"
#include "mesh_extractors/extract_mesh.hh"

Go to the source code of this file.

Functions

Update Loose Geometry
static void mesh_render_data_lverts_bm (const MeshRenderData *mr, MeshBufferCache *cache, BMesh *bm)
 
static void mesh_render_data_ledges_bm (const MeshRenderData *mr, MeshBufferCache *cache, BMesh *bm)
 
static void mesh_render_data_loose_geom_mesh (const MeshRenderData *mr, MeshBufferCache *cache)
 
static void mesh_render_data_loose_geom_build (const MeshRenderData *mr, MeshBufferCache *cache)
 
static void mesh_render_data_loose_geom_load (MeshRenderData *mr, MeshBufferCache *cache)
 
static void mesh_render_data_loose_geom_ensure (const MeshRenderData *mr, MeshBufferCache *cache)
 
void mesh_render_data_update_loose_geom (MeshRenderData *mr, MeshBufferCache *cache, const eMRIterType iter_type, const eMRDataType data_flag)
 
Polygons sorted per material

Contains polygon indices sorted based on their material.

static void mesh_render_data_polys_sorted_load (MeshRenderData *mr, const MeshBufferCache *cache)
 
static void mesh_render_data_polys_sorted_ensure (MeshRenderData *mr, MeshBufferCache *cache)
 
static void mesh_render_data_polys_sorted_build (MeshRenderData *mr, MeshBufferCache *cache)
 
static int * mesh_render_data_mat_tri_len_build (MeshRenderData *mr)
 
void mesh_render_data_update_polys_sorted (MeshRenderData *mr, MeshBufferCache *cache, const eMRDataType data_flag)
 
static void mesh_render_data_mat_tri_len_bm_range_fn (void *__restrict userdata, const int iter, const TaskParallelTLS *__restrict tls)
 
static void mesh_render_data_mat_tri_len_mesh_range_fn (void *__restrict userdata, const int iter, const TaskParallelTLS *__restrict tls)
 
static void mesh_render_data_mat_tri_len_reduce_fn (const void *__restrict userdata, void *__restrict chunk_join, void *__restrict chunk)
 
static int * mesh_render_data_mat_tri_len_build_threaded (MeshRenderData *mr, int face_len, TaskParallelRangeFunc range_func)
 
Mesh/BMesh Interface (indirect, partially cached access to complex data).
void mesh_render_data_update_looptris (MeshRenderData *mr, const eMRIterType iter_type, const eMRDataType data_flag)
 
void mesh_render_data_update_normals (MeshRenderData *mr, const eMRDataType data_flag)
 
static void retrieve_active_attribute_names (MeshRenderData &mr, const Object &object, const Mesh &mesh)
 
MeshRenderDatamesh_render_data_create (Object *object, Mesh *me, const bool is_editmode, const bool is_paint_mode, const bool is_mode_active, const float obmat[4][4], const bool do_final, const bool do_uvedit, const ToolSettings *ts)
 
void mesh_render_data_free (MeshRenderData *mr)
 

Detailed Description

Extraction of Mesh data into VBO to feed to GPU.

Definition in file draw_cache_extract_mesh_render_data.cc.

Function Documentation

◆ mesh_render_data_create()

MeshRenderData* mesh_render_data_create ( Object object,
Mesh me,
bool  is_editmode,
bool  is_paint_mode,
bool  is_mode_active,
const float  obmat[4][4],
bool  do_final,
bool  do_uvedit,
const ToolSettings ts 
)
Parameters
is_mode_activeWhen true, use the modifiers from the edit-data, otherwise don't use modifiers as they are not from this object.

Definition at line 458 of file draw_cache_extract_mesh_render_data.cc.

References BKE_editmesh_cache_ensure_poly_normals(), BKE_editmesh_cache_ensure_vert_normals(), BKE_object_get_editmesh_eval_cage(), BKE_object_get_editmesh_eval_final(), BLI_assert, BMEditMesh::bm, bm, MeshRenderData::bm, BM_EDGE, BM_FACE, BM_LOOP, BM_mesh_active_edge_get(), BM_mesh_active_face_get(), BM_mesh_active_vert_get(), BM_mesh_elem_index_ensure(), BM_mesh_elem_table_ensure(), MeshRenderData::bm_poly_centers, MeshRenderData::bm_poly_normals, BM_VERT, MeshRenderData::bm_vert_coords, MeshRenderData::bm_vert_normals, MeshRenderData::bweight_ofs, CD_BWEIGHT, CD_CREASE, CD_FREESTYLE_EDGE, CD_FREESTYLE_FACE, CD_MEDGE, CD_MLOOP, CD_MPOLY, CD_MVERT, CD_ORIGINDEX, copy_m4_m4(), CustomData_get_layer(), CustomData_get_offset(), MeshRenderData::e_origindex, BMesh::edata, Mesh::edata, EDBM_uv_active_face_get(), MeshRenderData::edge_crease_ofs, MeshRenderData::edge_len, MeshRenderData::edit_bmesh, MeshRenderData::edit_data, Mesh_Runtime::edit_data, Mesh::edit_mesh, MeshRenderData::eed_act, MeshRenderData::efa_act, MeshRenderData::efa_act_uv, ELEM, MeshRenderData::eve_act, MeshRenderData::extract_type, MeshRenderData::freestyle_edge_ofs, MeshRenderData::freestyle_face_ofs, Mesh_Runtime::is_original, Mesh::ldata, MeshRenderData::loop_len, MeshRenderData::mat_len, MeshRenderData::me, ME_WRAPPER_TYPE_MDATA, ME_WRAPPER_TYPE_SUBD, MeshRenderData::medge, MEM_callocN, mesh_render_mat_len_get(), MeshRenderData::mloop, MeshRenderData::mpoly, MR_EXTRACT_BMESH, MR_EXTRACT_MAPPED, MR_EXTRACT_MESH, MeshRenderData::mvert, MeshRenderData::obmat, MeshRenderData::p_origindex, BMesh::pdata, Mesh::pdata, MeshRenderData::poly_len, poly_to_tri_count(), EditMeshData::polyCos, EditMeshData::polyNos, retrieve_active_attribute_names(), Mesh::runtime, MeshRenderData::toolsettings, BMesh::totedge, Mesh::totedge, BMesh::totface, BMesh::totloop, Mesh::totloop, Mesh::totpoly, BMesh::totvert, Mesh::totvert, MeshRenderData::tri_len, MeshRenderData::v_origindex, BMesh::vdata, Mesh::vdata, MeshRenderData::vert_crease_ofs, MeshRenderData::vert_len, EditMeshData::vertexCos, EditMeshData::vertexNos, and Mesh_Runtime::wrapper_type.

Referenced by draw_subdiv_create_requested_buffers(), and blender::draw::mesh_buffer_cache_create_requested().

◆ mesh_render_data_free()

void mesh_render_data_free ( MeshRenderData mr)

◆ mesh_render_data_ledges_bm()

static void mesh_render_data_ledges_bm ( const MeshRenderData mr,
MeshBufferCache cache,
BMesh bm 
)
static

◆ mesh_render_data_loose_geom_build()

static void mesh_render_data_loose_geom_build ( const MeshRenderData mr,
MeshBufferCache cache 
)
static

◆ mesh_render_data_loose_geom_ensure()

static void mesh_render_data_loose_geom_ensure ( const MeshRenderData mr,
MeshBufferCache cache 
)
static

◆ mesh_render_data_loose_geom_load()

static void mesh_render_data_loose_geom_load ( MeshRenderData mr,
MeshBufferCache cache 
)
static

◆ mesh_render_data_loose_geom_mesh()

static void mesh_render_data_loose_geom_mesh ( const MeshRenderData mr,
MeshBufferCache cache 
)
static

◆ mesh_render_data_lverts_bm()

static void mesh_render_data_lverts_bm ( const MeshRenderData mr,
MeshBufferCache cache,
BMesh bm 
)
static

◆ mesh_render_data_mat_tri_len_bm_range_fn()

static void mesh_render_data_mat_tri_len_bm_range_fn ( void *__restrict  userdata,
const int  iter,
const TaskParallelTLS *__restrict  tls 
)
static

◆ mesh_render_data_mat_tri_len_build()

static int * mesh_render_data_mat_tri_len_build ( MeshRenderData mr)
static

◆ mesh_render_data_mat_tri_len_build_threaded()

static int* mesh_render_data_mat_tri_len_build_threaded ( MeshRenderData mr,
int  face_len,
TaskParallelRangeFunc  range_func 
)
static

◆ mesh_render_data_mat_tri_len_mesh_range_fn()

static void mesh_render_data_mat_tri_len_mesh_range_fn ( void *__restrict  userdata,
const int  iter,
const TaskParallelTLS *__restrict  tls 
)
static

◆ mesh_render_data_mat_tri_len_reduce_fn()

static void mesh_render_data_mat_tri_len_reduce_fn ( const void *__restrict  userdata,
void *__restrict  chunk_join,
void *__restrict  chunk 
)
static

◆ mesh_render_data_polys_sorted_build()

static void mesh_render_data_polys_sorted_build ( MeshRenderData mr,
MeshBufferCache cache 
)
static

◆ mesh_render_data_polys_sorted_ensure()

static void mesh_render_data_polys_sorted_ensure ( MeshRenderData mr,
MeshBufferCache cache 
)
static

◆ mesh_render_data_polys_sorted_load()

static void mesh_render_data_polys_sorted_load ( MeshRenderData mr,
const MeshBufferCache cache 
)
static

◆ mesh_render_data_update_looptris()

void mesh_render_data_update_looptris ( MeshRenderData mr,
eMRIterType  iter_type,
eMRDataType  data_flag 
)

◆ mesh_render_data_update_loose_geom()

void mesh_render_data_update_loose_geom ( MeshRenderData mr,
MeshBufferCache cache,
const eMRIterType  iter_type,
const eMRDataType  data_flag 
)

◆ mesh_render_data_update_normals()

void mesh_render_data_update_normals ( MeshRenderData mr,
const eMRDataType  data_flag 
)

◆ mesh_render_data_update_polys_sorted()

void mesh_render_data_update_polys_sorted ( MeshRenderData mr,
MeshBufferCache cache,
const eMRDataType  data_flag 
)

◆ retrieve_active_attribute_names()

static void retrieve_active_attribute_names ( MeshRenderData mr,
const Object object,
const Mesh mesh 
)
static