Blender  V3.3
extract_mesh_vbo_fdots_edituv_data.cc
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2021 Blender Foundation. All rights reserved. */
3 
8 #include "extract_mesh.hh"
9 
10 #include "draw_cache_impl.h"
11 
12 namespace blender::draw {
13 
14 /* ---------------------------------------------------------------------- */
20  int cd_ofs;
21 };
22 
24  MeshBatchCache *UNUSED(cache),
25  void *buf,
26  void *tls_data)
27 {
28  GPUVertBuf *vbo = static_cast<GPUVertBuf *>(buf);
29  static GPUVertFormat format = {0};
30  if (format.attr_len == 0) {
32  }
33 
36 
38  data->vbo_data = (EditLoopData *)GPU_vertbuf_get_data(vbo);
39  data->cd_ofs = CustomData_get_offset(&mr->bm->ldata, CD_MLOOPUV);
40 }
41 
43  const BMFace *f,
44  const int UNUSED(f_index),
45  void *_data)
46 {
48  EditLoopData *eldata = &data->vbo_data[BM_elem_index_get(f)];
49  memset(eldata, 0x0, sizeof(*eldata));
50  mesh_render_data_face_flag(mr, f, data->cd_ofs, eldata);
51 }
52 
54  const MPoly *UNUSED(mp),
55  const int mp_index,
56  void *_data)
57 {
59  EditLoopData *eldata = &data->vbo_data[mp_index];
60  memset(eldata, 0x0, sizeof(*eldata));
61  BMFace *efa = bm_original_face_get(mr, mp_index);
62  if (efa) {
63  mesh_render_data_face_flag(mr, efa, data->cd_ofs, eldata);
64  }
65 }
66 
68 {
69  MeshExtract extractor = {nullptr};
73  extractor.data_type = MR_DATA_NONE;
74  extractor.data_size = sizeof(MeshExtract_EditUVFdotData_Data);
75  extractor.use_threading = true;
76  extractor.mesh_buffer_offset = offsetof(MeshBufferList, vbo.fdots_edituv_data);
77  return extractor;
78 }
79 
82 } // namespace blender::draw
83 
int CustomData_get_offset(const struct CustomData *data, int type)
#define UNUSED(x)
@ CD_MLOOPUV
struct GPUVertBuf GPUVertBuf
void GPU_vertbuf_data_alloc(GPUVertBuf *, uint v_len)
#define GPU_vertbuf_init_with_format(verts, format)
void * GPU_vertbuf_get_data(const GPUVertBuf *verts)
@ GPU_FETCH_INT
uint GPU_vertformat_attr_add(GPUVertFormat *, const char *name, GPUVertCompType, uint comp_len, GPUVertFetchMode)
@ GPU_COMP_U8
#define BM_elem_index_get(ele)
Definition: bmesh_inline.h:110
@ MR_DATA_NONE
void mesh_render_data_face_flag(const MeshRenderData *mr, const BMFace *efa, const int cd_ofs, EditLoopData *eattr)
Definition: extract_mesh.cc:92
Extraction of Mesh data into VBO to feed to GPU.
BLI_INLINE BMFace * bm_original_face_get(const MeshRenderData *mr, int idx)
const MeshExtract extract_fdots_edituv_data
format
Definition: logImageCore.h:38
constexpr MeshExtract create_extractor_fdots_edituv_data()
static void extract_fdots_edituv_data_init(const MeshRenderData *mr, MeshBatchCache *UNUSED(cache), void *buf, void *tls_data)
static void extract_fdots_edituv_data_iter_poly_bm(const MeshRenderData *mr, const BMFace *f, const int UNUSED(f_index), void *_data)
static void extract_fdots_edituv_data_iter_poly_mesh(const MeshRenderData *mr, const MPoly *UNUSED(mp), const int mp_index, void *_data)
CustomData ldata
Definition: bmesh_class.h:337
GPUVertBuf * fdots_edituv_data
size_t mesh_buffer_offset
eMRDataType data_type
size_t data_size
ExtractPolyBMeshFn * iter_poly_bm
ExtractPolyMeshFn * iter_poly_mesh
bool use_threading
ExtractInitFn * init