Blender
V3.3
|
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.
Extraction of Mesh data into VBO to feed to GPU.
Definition in file draw_cache_extract_mesh_render_data.cc.
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 | ||
) |
is_mode_active | When 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().
void mesh_render_data_free | ( | MeshRenderData * | mr | ) |
Definition at line 598 of file draw_cache_extract_mesh_render_data.cc.
References MeshRenderData::ledges, MeshRenderData::loop_normals, MeshRenderData::lverts, MEM_freeN, MEM_SAFE_FREE, and MeshRenderData::mlooptri.
Referenced by draw_subdiv_create_requested_buffers(), and blender::draw::MeshRenderDataUpdateTaskData::~MeshRenderDataUpdateTaskData().
|
static |
Definition at line 130 of file draw_cache_extract_mesh_render_data.cc.
References bm, BM_EDGES_OF_MESH, BM_ITER_MESH_INDEX, MeshExtractLooseGeom::edge_len, MeshRenderData::edge_len, MeshExtractLooseGeom::edges, BMEdge::l, MeshBufferCache::loose_geom, MEM_mallocN, and MEM_reallocN.
Referenced by mesh_render_data_loose_geom_build().
|
static |
Definition at line 60 of file draw_cache_extract_mesh_render_data.cc.
References bm, MeshRenderData::bm, MeshExtractLooseGeom::edge_len, MeshRenderData::extract_type, MeshBufferCache::loose_geom, mesh_render_data_ledges_bm(), mesh_render_data_loose_geom_mesh(), mesh_render_data_lverts_bm(), MR_EXTRACT_BMESH, and MeshExtractLooseGeom::vert_len.
Referenced by mesh_render_data_loose_geom_ensure().
|
static |
Definition at line 50 of file draw_cache_extract_mesh_render_data.cc.
References MeshBufferCache::loose_geom, mesh_render_data_loose_geom_build(), and MeshExtractLooseGeom::verts.
Referenced by mesh_render_data_update_loose_geom().
|
static |
Definition at line 40 of file draw_cache_extract_mesh_render_data.cc.
References MeshExtractLooseGeom::edge_len, MeshRenderData::edge_loose_len, MeshExtractLooseGeom::edges, MeshRenderData::ledges, MeshRenderData::loop_loose_len, MeshBufferCache::loose_geom, MeshRenderData::lverts, MeshExtractLooseGeom::vert_len, MeshRenderData::vert_loose_len, and MeshExtractLooseGeom::verts.
Referenced by mesh_render_data_update_loose_geom().
|
static |
Definition at line 77 of file draw_cache_extract_mesh_render_data.cc.
References BLI_BITMAP_ENABLE, BLI_BITMAP_NEW, BLI_BITMAP_TEST, MeshExtractLooseGeom::edge_len, MeshRenderData::edge_len, MeshExtractLooseGeom::edges, MEdge::flag, MeshBufferCache::loose_geom, ME_LOOSEEDGE, MeshRenderData::medge, MEM_freeN, MEM_mallocN, MEM_reallocN, v, MEdge::v1, MEdge::v2, MeshExtractLooseGeom::vert_len, MeshRenderData::vert_len, and MeshExtractLooseGeom::verts.
Referenced by mesh_render_data_loose_geom_build().
|
static |
Definition at line 112 of file draw_cache_extract_mesh_render_data.cc.
References bm, BM_ITER_MESH_INDEX, BM_VERTS_OF_MESH, BMVert::e, MeshBufferCache::loose_geom, MEM_mallocN, MEM_reallocN, MeshExtractLooseGeom::vert_len, MeshRenderData::vert_len, and MeshExtractLooseGeom::verts.
Referenced by mesh_render_data_loose_geom_build().
|
static |
Definition at line 249 of file draw_cache_extract_mesh_render_data.cc.
References bm, MeshRenderData::bm, BM_elem_flag_test, BM_ELEM_HIDDEN, BM_face_at_index(), BMFace::len, MeshRenderData::mat_len, BMFace::mat_nr, and min_ii().
Referenced by mesh_render_data_mat_tri_len_build().
|
static |
Definition at line 310 of file draw_cache_extract_mesh_render_data.cc.
References bm, MeshRenderData::bm, MeshRenderData::extract_type, mesh_render_data_mat_tri_len_bm_range_fn(), mesh_render_data_mat_tri_len_build_threaded(), mesh_render_data_mat_tri_len_mesh_range_fn(), MR_EXTRACT_BMESH, MeshRenderData::poly_len, and BMesh::totface.
Referenced by mesh_render_data_polys_sorted_build().
|
static |
Definition at line 290 of file draw_cache_extract_mesh_render_data.cc.
References BLI_parallel_range_settings_defaults(), BLI_task_parallel_range(), TaskParallelSettings::func_reduce, MeshRenderData::mat_len, MEM_callocN, mesh_render_data_mat_tri_len_reduce_fn(), TaskParallelSettings::min_iter_per_thread, MIN_RANGE_LEN, TaskParallelSettings::userdata_chunk, and TaskParallelSettings::userdata_chunk_size.
Referenced by mesh_render_data_mat_tri_len_build().
|
static |
Definition at line 264 of file draw_cache_extract_mesh_render_data.cc.
References MPoly::flag, MeshRenderData::mat_len, MPoly::mat_nr, ME_HIDE, min_ii(), MeshRenderData::mpoly, MPoly::totloop, and MeshRenderData::use_hide.
Referenced by mesh_render_data_mat_tri_len_build().
|
static |
Definition at line 278 of file draw_cache_extract_mesh_render_data.cc.
References MeshRenderData::mat_len.
Referenced by mesh_render_data_mat_tri_len_build_threaded().
|
static |
Definition at line 197 of file draw_cache_extract_mesh_render_data.cc.
References MeshRenderData::bm, BM_elem_flag_test, BM_ELEM_HIDDEN, BM_FACES_OF_MESH, BM_ITER_MESH_INDEX, MeshRenderData::extract_type, MPoly::flag, BMFace::len, MeshRenderData::mat_len, BMFace::mat_nr, MPoly::mat_nr, MeshBufferCache::mat_tri_len, ME_HIDE, MEM_mallocN, mesh_render_data_mat_tri_len_build(), min_ii(), MeshRenderData::mpoly, MR_EXTRACT_BMESH, MeshRenderData::poly_len, MeshBufferCache::poly_sorted, MPoly::totloop, MeshBufferCache::tri_first_index, MeshRenderData::use_hide, and MeshBufferCache::visible_tri_len.
Referenced by mesh_render_data_polys_sorted_ensure().
|
static |
Definition at line 189 of file draw_cache_extract_mesh_render_data.cc.
References mesh_render_data_polys_sorted_build(), MeshBufferCache::poly_sorted, and MeshBufferCache::tri_first_index.
Referenced by mesh_render_data_update_polys_sorted().
|
static |
Definition at line 182 of file draw_cache_extract_mesh_render_data.cc.
References MeshBufferCache::mat_tri_len, MeshRenderData::mat_tri_len, MeshBufferCache::poly_sorted, MeshRenderData::poly_sorted, MeshBufferCache::tri_first_index, MeshRenderData::tri_first_index, MeshBufferCache::visible_tri_len, and MeshRenderData::visible_tri_len.
Referenced by mesh_render_data_update_polys_sorted().
void mesh_render_data_update_looptris | ( | MeshRenderData * | mr, |
eMRIterType | iter_type, | ||
eMRDataType | data_flag | ||
) |
Part of the creation of the MeshRenderData that happens in a thread.
Definition at line 327 of file draw_cache_extract_mesh_render_data.cc.
References BKE_mesh_recalc_looptri(), BKE_mesh_recalc_looptri_with_normals(), BLI_assert, MeshRenderData::bm, MeshRenderData::edit_bmesh, MeshRenderData::extract_type, BMEditMesh::looptris, MeshRenderData::me, MEM_mallocN, Mesh::mloop, MeshRenderData::mlooptri, Mesh::mpoly, MR_DATA_LOOPTRI, MR_EXTRACT_BMESH, Mesh::mvert, MeshRenderData::poly_normals, BMesh::totloop, Mesh::totloop, Mesh::totpoly, and MeshRenderData::tri_len.
Referenced by blender::draw::mesh_buffer_cache_create_requested_subdiv(), and blender::draw::mesh_extract_render_data_node_exec().
void mesh_render_data_update_loose_geom | ( | MeshRenderData * | mr, |
MeshBufferCache * | cache, | ||
const eMRIterType | iter_type, | ||
const eMRDataType | data_flag | ||
) |
Definition at line 148 of file draw_cache_extract_mesh_render_data.cc.
References mesh_render_data_loose_geom_ensure(), mesh_render_data_loose_geom_load(), and MR_DATA_LOOSE_GEOM.
Referenced by blender::draw::mesh_buffer_cache_create_requested_subdiv(), and blender::draw::mesh_extract_render_data_node_exec().
void mesh_render_data_update_normals | ( | MeshRenderData * | mr, |
const eMRDataType | data_flag | ||
) |
Definition at line 364 of file draw_cache_extract_mesh_render_data.cc.
References BKE_mesh_normals_loop_split(), BKE_mesh_poly_normals_ensure(), BKE_mesh_vertex_normals_ensure(), MeshRenderData::bm, BM_loops_calc_normal_vcos(), MeshRenderData::bm_poly_normals, MeshRenderData::bm_vert_coords, MeshRenderData::bm_vert_normals, CD_CUSTOMLOOPNORMAL, CustomData_get_layer(), CustomData_get_offset(), MeshRenderData::edge_len, MeshRenderData::edit_data, MeshRenderData::extract_type, Mesh::flag, float(), BMesh::ldata, Mesh::ldata, MeshRenderData::loop_len, MeshRenderData::loop_normals, M_PI, MeshRenderData::me, ME_AUTOSMOOTH, Mesh::medge, MEM_mallocN, Mesh::mloop, Mesh::mpoly, MR_DATA_LOOP_NOR, MR_DATA_POLY_NOR, MR_DATA_TAN_LOOP_NOR, MR_EXTRACT_BMESH, Mesh::mvert, MeshRenderData::poly_len, MeshRenderData::poly_normals, Mesh::smoothresh, MeshRenderData::vert_len, MeshRenderData::vert_normals, and EditMeshData::vertexCos.
Referenced by blender::draw::mesh_buffer_cache_create_requested_subdiv(), and blender::draw::mesh_extract_render_data_node_exec().
void mesh_render_data_update_polys_sorted | ( | MeshRenderData * | mr, |
MeshBufferCache * | cache, | ||
const eMRDataType | data_flag | ||
) |
Definition at line 172 of file draw_cache_extract_mesh_render_data.cc.
References mesh_render_data_polys_sorted_ensure(), mesh_render_data_polys_sorted_load(), and MR_DATA_POLYS_SORTED.
Referenced by blender::draw::mesh_extract_render_data_node_exec().
|
static |
Definition at line 434 of file draw_cache_extract_mesh_render_data.cc.
References blender::compositor::active, MeshRenderData::active_color_name, BKE_id_attribute_copy_domains_temp(), BKE_id_attributes_active_color_get(), BKE_id_attributes_render_color_get(), MeshRenderData::default_color_name, editmesh_final_or_this(), Mesh::id, ID_ME, mesh, mesh_cd_ldata_get_from_mesh(), and mesh_cd_vdata_get_from_mesh().
Referenced by mesh_render_data_create().