50 }
while ((l_iter = l_iter->
next) != l_first);
55 const int UNUSED(mp_index),
64 int ml_index = ml_index_last, ml_index_next = mp->
loopstart;
66 const MLoop *ml = &mloop[ml_index];
67 const MEdge *med = &medge[ml->
e];
76 }
while ((ml_index = ml_index_next++) != ml_index_last);
80 int ml_index = ml_index_last, ml_index_next = mp->
loopstart;
82 const MLoop *ml = &mloop[ml_index];
84 }
while ((ml_index = ml_index_next++) != ml_index_last);
90 const int ledge_index,
94 const int l_index_offset = mr->
edge_len + ledge_index;
96 const int l_index = mr->
loop_len + ledge_index * 2;
108 const int ledge_index,
112 const int l_index_offset = mr->
edge_len + ledge_index;
113 const int e_index = mr->
ledges[ledge_index];
117 const int l_index = mr->
loop_len + ledge_index * 2;
174 if (
format.attr_len == 0) {
190 *flags_data++ = (medge[edge.coarse_edge_index].
flag &
ME_HIDE) != 0;
203 int e = edge.coarse_edge_index;
209 *flags_data++ =
false;
228 subdiv_cache, ibo, flags,
static_cast<uint>(loose_geom.
edge_len));
#define UNUSED_VARS_NDEBUG(...)
struct GPUIndexBufBuilder GPUIndexBufBuilder
struct GPUIndexBuf GPUIndexBuf
void GPU_indexbuf_init(GPUIndexBufBuilder *, GPUPrimType, uint prim_len, uint vertex_len)
void GPU_indexbuf_init_build_on_device(GPUIndexBuf *elem, uint index_len)
void GPU_indexbuf_join(GPUIndexBufBuilder *builder, const GPUIndexBufBuilder *builder_from)
void GPU_indexbuf_set_line_verts(GPUIndexBufBuilder *builder, uint elem, uint v1, uint v2)
void GPU_indexbuf_set_line_restart(GPUIndexBufBuilder *builder, uint elem)
void GPU_indexbuf_create_subrange_in_place(GPUIndexBuf *elem, GPUIndexBuf *elem_src, uint start, uint length)
void GPU_indexbuf_build_in_place(GPUIndexBufBuilder *, GPUIndexBuf *)
void GPU_vertbuf_discard(GPUVertBuf *)
struct GPUVertBuf GPUVertBuf
GPUVertBuf * GPU_vertbuf_calloc(void)
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)
Read Guarded memory(de)allocation.
#define BM_FACE_FIRST_LOOP(p)
#define BM_elem_index_get(ele)
#define BM_elem_flag_test(ele, hflag)
#define BM_elem_flag_test_bool(ele, hflag)
ATTR_WARN_UNUSED_RESULT BMesh * bm
BLI_INLINE BMEdge * BM_edge_at_index(BMesh *bm, const int index)
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
constexpr int64_t size() const
void draw_subdiv_build_lines_buffer(const DRWSubdivCache *cache, GPUIndexBuf *lines_indices)
void draw_subdiv_build_lines_loose_buffer(const DRWSubdivCache *cache, GPUIndexBuf *lines_indices, GPUVertBuf *lines_flags, uint num_loose_edges)
blender::Span< DRWSubdivLooseEdge > draw_subdiv_cache_get_loose_edges(const DRWSubdivCache *cache)
ccl_global float * buffer
static void extract_lines_task_reduce(void *_userdata_to, void *_userdata_from)
constexpr MeshExtract create_extractor_lines()
static void extract_lines_with_lines_loose_finish(const MeshRenderData *mr, MeshBatchCache *cache, void *buf, void *data)
static void extract_lines_iter_ledge_mesh(const MeshRenderData *mr, const MEdge *med, const int ledge_index, void *data)
static void extract_lines_with_lines_loose_finish_subdiv(const struct DRWSubdivCache *subdiv_cache, const MeshRenderData *UNUSED(mr), MeshBatchCache *cache, void *UNUSED(buf), void *UNUSED(_data))
static void extract_lines_loose_geom_subdiv(const DRWSubdivCache *subdiv_cache, const MeshRenderData *mr, void *buffer, void *UNUSED(data))
constexpr MeshExtract create_extractor_lines_with_lines_loose()
static void extract_lines_loose_only_init(const MeshRenderData *mr, MeshBatchCache *cache, void *buf, void *UNUSED(tls_data))
static void extract_lines_loose_subbuffer(const MeshRenderData *mr, MeshBatchCache *cache)
static void extract_lines_finish(const MeshRenderData *UNUSED(mr), MeshBatchCache *UNUSED(cache), void *buf, void *data)
static void extract_lines_iter_poly_mesh(const MeshRenderData *mr, const MPoly *mp, const int UNUSED(mp_index), void *data)
constexpr MeshExtract create_extractor_lines_loose_only()
static void extract_lines_init(const MeshRenderData *mr, MeshBatchCache *UNUSED(cache), void *UNUSED(buf), void *tls_data)
static void extract_lines_init_subdiv(const DRWSubdivCache *subdiv_cache, const MeshRenderData *UNUSED(mr), MeshBatchCache *UNUSED(cache), void *buffer, void *UNUSED(data))
static void extract_lines_loose_only_init_subdiv(const DRWSubdivCache *UNUSED(subdiv_cache), const MeshRenderData *mr, MeshBatchCache *cache, void *buffer, void *UNUSED(data))
static void extract_lines_iter_poly_bm(const MeshRenderData *UNUSED(mr), const BMFace *f, const int UNUSED(f_index), void *data)
static void extract_lines_iter_ledge_bm(const MeshRenderData *mr, const BMEdge *eed, const int ledge_index, void *data)
DRWSubdivLooseGeom loose_geom
GPUIndexBuf * lines_loose
struct MeshBufferList::@273 ibo
eMRExtractType extract_type