Blender V4.3
BKE_mesh_types.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2020 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
5#pragma once
6
11#include <memory>
12#include <mutex>
13
14#include "BLI_array.hh"
15#include "BLI_bit_vector.hh"
16#include "BLI_bounds_types.hh"
19#include "BLI_shared_cache.hh"
20#include "BLI_vector.hh"
21
23
24struct BMEditMesh;
25struct BVHCache;
26struct Mesh;
28struct SubdivCCG;
30namespace blender::bke {
31struct EditMeshData;
32}
33namespace blender::bke::bake {
34struct BakeMaterialsList;
35}
36
46
47namespace blender::bke {
48
59 Face = 0,
65 Point = 1,
71 Corner = 2,
72};
73
87
91struct LooseEdgeCache : public LooseGeomCache {};
95struct LooseVertCache : public LooseGeomCache {};
96
99 bool frozen = false;
100 bool dirty_while_frozen = false;
101
103 void freeze();
105 void unfreeze();
107 void tag_dirty();
108};
109
117 Mesh *mesh_eval = nullptr;
118 std::mutex eval_mutex;
119
121 std::mutex render_mutex;
122
125
136 std::shared_ptr<BMEditMesh> edit_mesh;
137
143
148 std::unique_ptr<EditMeshData> edit_data;
149
154 void *batch_cache = nullptr;
155
160
162 BVHCache *bvh_cache = nullptr;
163
166
171 std::unique_ptr<SubdivCCG> subdiv_ccg;
173
175 bool deformed_only = false;
183 bool is_original_bmesh = false;
184
187
194
201
219
222
229
236
238 std::unique_ptr<bake::BakeMaterialsList> bake_materials;
239
241 ~MeshRuntime();
242};
243
244} // namespace blender::bke
eMeshWrapperType
@ ME_WRAPPER_TYPE_MDATA
@ ME_WRAPPER_TYPE_SUBD
@ ME_WRAPPER_TYPE_BMESH
signed char int8_t
Definition stdint.h:75
blender::BitVector is_loose_bits
SharedCache< Bounds< float3 > > bounds_cache
SharedCache< LooseEdgeCache > loose_edges_cache
std::unique_ptr< bake::BakeMaterialsList > bake_materials
std::shared_ptr< BMEditMesh > edit_mesh
std::unique_ptr< EditMeshData > edit_data
SharedCache< Array< int > > vert_to_face_offset_cache
SharedCache< Array< int > > corner_to_face_map_cache
SharedCache< Vector< float3 > > corner_normals_cache
SharedCache< LooseVertCache > verts_no_face_cache
std::unique_ptr< SubdivCCG > subdiv_ccg
SharedCache< Array< int > > corner_tri_faces_cache
SharedCache< LooseVertCache > loose_verts_cache
SharedCache< Vector< float3 > > vert_normals_cache
eMeshWrapperType wrapper_type
SharedCache< Array< int > > vert_to_face_map_cache
SharedCache< Vector< float3 > > face_normals_cache
SharedCache< ShrinkwrapBoundaryData > shrinkwrap_boundary_cache
SharedCache< Array< int > > vert_to_corner_map_cache
SubsurfRuntimeData * subsurf_runtime_data
CustomData_MeshMasks cd_mask_extra
const ImplicitSharingInfo * face_offsets_sharing_info
SharedCache< Array< int3 > > data