37 if (!hidden && (
data->sync_selection || selected)) {
44 const int UNUSED(elt_index),
58 const int UNUSED(elt_index),
96 uint subdiv_quad_index,
100 const uint loop_idx = subdiv_quad_index * 4;
120 uint subdiv_quad_index,
121 const MPoly *coarse_quad)
124 const uint loop_idx = subdiv_quad_index * 4;
182 if (!hidden && (
data->sync_selection || selected)) {
189 const int UNUSED(f_index),
203 }
while ((l_iter = l_iter->
next) != l_first);
215 bool mp_hidden, mp_select;
226 for (
int ml_index = mp->
loopstart; ml_index < ml_index_end; ml_index += 1) {
227 const MLoop *ml = &mloop[ml_index];
230 const int ml_index_next = (ml_index == ml_index_last) ? mp->
loopstart : (ml_index + 1);
231 const bool real_edge = (mr->
e_origindex ==
nullptr ||
262 uint subdiv_quad_index,
263 const BMFace *coarse_poly)
271 uint start_loop_idx = subdiv_quad_index * 4;
272 uint end_loop_idx = (subdiv_quad_index + 1) * 4;
273 for (
uint loop_idx = start_loop_idx; loop_idx < end_loop_idx; loop_idx++) {
274 const int edge_origindex = subdiv_loop_edge_index[loop_idx];
275 const bool real_edge = (edge_origindex != -1 &&
279 mp_hidden || !real_edge,
282 (loop_idx + 1 == end_loop_idx) ? start_loop_idx : (loop_idx + 1));
289 uint subdiv_quad_index,
290 const MPoly *coarse_poly)
295 bool mp_hidden, mp_select;
306 uint start_loop_idx = subdiv_quad_index * 4;
307 uint end_loop_idx = (subdiv_quad_index + 1) * 4;
308 for (
uint loop_idx = start_loop_idx; loop_idx < end_loop_idx; loop_idx++) {
309 const int edge_origindex = subdiv_loop_edge_index[loop_idx];
310 const bool real_edge = (edge_origindex != -1 &&
314 mp_hidden || !real_edge,
317 (loop_idx + 1 == end_loop_idx) ? start_loop_idx : (loop_idx + 1));
371 if (!hidden && (
data->sync_selection || selected)) {
378 const int UNUSED(f_index),
389 }
while ((l_iter = l_iter->
next) != l_first);
405 for (
int ml_index = mp->
loopstart; ml_index < ml_index_end; ml_index += 1) {
406 const MLoop *ml = &mloop[ml_index];
438 uint subdiv_quad_index,
439 const BMFace *coarse_quad)
444 uint start_loop_idx = subdiv_quad_index * 4;
445 uint end_loop_idx = (subdiv_quad_index + 1) * 4;
446 for (
uint i = start_loop_idx; i < end_loop_idx; i++) {
447 const int vert_origindex = subdiv_loop_vert_index[i];
458 uint subdiv_quad_index,
459 const MPoly *coarse_quad)
468 uint start_loop_idx = subdiv_quad_index * 4;
469 uint end_loop_idx = (subdiv_quad_index + 1) * 4;
470 for (
uint i = start_loop_idx; i < end_loop_idx; i++) {
471 const int vert_origindex = subdiv_loop_vert_index[i];
472 const bool real_vert = !mr->
v_origindex || (vert_origindex != -1 &&
528 if (!hidden && (
data->sync_selection || selected)) {
563 for (
int ml_index = mp->
loopstart; ml_index < ml_index_end; ml_index += 1) {
564 const MLoop *ml = &mloop[ml_index];
#define BLI_BITMAP_TEST(_bitmap, _index)
#define UV_SYNC_SELECTION
struct GPUIndexBuf GPUIndexBuf
void GPU_indexbuf_set_point_vert(GPUIndexBufBuilder *builder, uint elem, uint v1)
void GPU_indexbuf_set_point_restart(GPUIndexBufBuilder *builder, uint elem)
void GPU_indexbuf_init(GPUIndexBufBuilder *, GPUPrimType, uint prim_len, uint vertex_len)
void GPU_indexbuf_add_point_vert(GPUIndexBufBuilder *, uint v)
void GPU_indexbuf_add_line_verts(GPUIndexBufBuilder *, uint v1, uint v2)
void GPU_indexbuf_build_in_place(GPUIndexBufBuilder *, GPUIndexBuf *)
void GPU_indexbuf_add_tri_verts(GPUIndexBufBuilder *, uint v1, uint v2, uint v3)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble v1
void * GPU_vertbuf_get_data(const GPUVertBuf *verts)
#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 const BMVert * v2
static void extract_edituv_points_iter_poly_mesh(const MeshRenderData *mr, const MPoly *mp, const int mp_index, void *_data)
BLI_INLINE void edituv_facedot_add(MeshExtract_EditUvElem_Data *data, bool hidden, bool selected, int face_index)
static void extract_edituv_points_iter_poly_bm(const MeshRenderData *UNUSED(mr), const BMFace *f, const int UNUSED(f_index), void *_data)
static void extract_edituv_fdots_init(const MeshRenderData *mr, MeshBatchCache *UNUSED(cache), void *UNUSED(ibo), void *tls_data)
static void extract_edituv_lines_init_subdiv(const DRWSubdivCache *subdiv_cache, const MeshRenderData *mr, MeshBatchCache *UNUSED(cache), void *UNUSED(buf), void *tls_data)
constexpr MeshExtract create_extractor_edituv_fdots()
static void extract_edituv_fdots_finish(const MeshRenderData *UNUSED(mr), MeshBatchCache *UNUSED(cache), void *buf, void *_data)
static void extract_edituv_points_iter_subdiv_mesh(const DRWSubdivCache *subdiv_cache, const MeshRenderData *mr, void *_data, uint subdiv_quad_index, const MPoly *coarse_quad)
BLI_INLINE void edituv_point_add(MeshExtract_EditUvElem_Data *data, bool hidden, bool selected, int v1)
static void extract_edituv_points_init_subdiv(const DRWSubdivCache *subdiv_cache, const MeshRenderData *mr, MeshBatchCache *UNUSED(cache), void *UNUSED(buf), void *tls_data)
static void extract_edituv_lines_iter_subdiv_mesh(const DRWSubdivCache *subdiv_cache, const MeshRenderData *mr, void *_data, uint subdiv_quad_index, const MPoly *coarse_poly)
static void extract_edituv_lines_iter_poly_mesh(const MeshRenderData *mr, const MPoly *mp, const int mp_index, void *_data)
constexpr MeshExtract create_extractor_edituv_tris()
static void extract_edituv_lines_finish(const MeshRenderData *UNUSED(mr), MeshBatchCache *UNUSED(cache), void *buf, void *_data)
static void extract_edituv_tris_init_subdiv(const DRWSubdivCache *subdiv_cache, const MeshRenderData *mr, MeshBatchCache *UNUSED(cache), void *UNUSED(buf), void *tls_data)
constexpr MeshExtract create_extractor_edituv_lines()
static void extract_edituv_tris_init(const MeshRenderData *mr, MeshBatchCache *UNUSED(cache), void *UNUSED(ibo), void *tls_data)
static void extract_edituv_tris_iter_subdiv_mesh(const DRWSubdivCache *UNUSED(subdiv_cache), const MeshRenderData *mr, void *_data, uint subdiv_quad_index, const MPoly *coarse_quad)
static void extract_edituv_tris_finish_subdiv(const struct DRWSubdivCache *UNUSED(subdiv_cache), const MeshRenderData *UNUSED(mr), MeshBatchCache *UNUSED(cache), void *buf, void *_data)
static void extract_edituv_points_iter_subdiv_bm(const DRWSubdivCache *subdiv_cache, const MeshRenderData *UNUSED(mr), void *_data, uint subdiv_quad_index, const BMFace *coarse_quad)
static void extract_edituv_fdots_iter_poly_mesh(const MeshRenderData *mr, const MPoly *mp, const int mp_index, void *_data)
BLI_INLINE void edituv_tri_add(MeshExtract_EditUvElem_Data *data, bool hidden, bool selected, int v1, int v2, int v3)
static void extract_edituv_tris_iter_looptri_bm(const MeshRenderData *UNUSED(mr), BMLoop **elt, const int UNUSED(elt_index), void *_data)
static void extract_edituv_lines_finish_subdiv(const struct DRWSubdivCache *UNUSED(subdiv_cache), const MeshRenderData *UNUSED(mr), MeshBatchCache *UNUSED(cache), void *buf, void *_data)
static void extract_edituv_points_init(const MeshRenderData *mr, MeshBatchCache *UNUSED(cache), void *UNUSED(ibo), void *tls_data)
static void extract_edituv_fdots_iter_poly_bm(const MeshRenderData *UNUSED(mr), const BMFace *f, const int f_index, void *_data)
static void extract_edituv_lines_init(const MeshRenderData *mr, MeshBatchCache *UNUSED(cache), void *UNUSED(ibo), void *tls_data)
BLI_INLINE void edituv_edge_add(MeshExtract_EditUvElem_Data *data, bool hidden, bool selected, int v1, int v2)
static void extract_edituv_tris_iter_looptri_mesh(const MeshRenderData *mr, const MLoopTri *mlt, const int UNUSED(elt_index), void *_data)
static void extract_edituv_points_finish(const MeshRenderData *UNUSED(mr), MeshBatchCache *UNUSED(cache), void *buf, void *_data)
static void extract_edituv_lines_iter_subdiv_bm(const DRWSubdivCache *subdiv_cache, const MeshRenderData *mr, void *_data, uint subdiv_quad_index, const BMFace *coarse_poly)
static void extract_edituv_tris_finish(const MeshRenderData *UNUSED(mr), MeshBatchCache *UNUSED(cache), void *buf, void *_data)
constexpr MeshExtract create_extractor_edituv_points()
static void extract_edituv_lines_iter_poly_bm(const MeshRenderData *UNUSED(mr), const BMFace *f, const int UNUSED(f_index), void *_data)
static void extract_edituv_tris_iter_subdiv_bm(const DRWSubdivCache *UNUSED(subdiv_cache), const MeshRenderData *UNUSED(mr), void *_data, uint subdiv_quad_index, const BMFace *coarse_quad)
static void extract_edituv_points_finish_subdiv(const struct DRWSubdivCache *UNUSED(subdiv_cache), const MeshRenderData *UNUSED(mr), MeshBatchCache *UNUSED(cache), void *buf, void *_data)
struct GPUVertBuf * edges_orig_index
struct GPUVertBuf * verts_orig_index
uint num_subdiv_triangles
GPUIndexBuf * edituv_points
GPUIndexBuf * edituv_fdots
GPUIndexBuf * edituv_tris
GPUIndexBuf * edituv_lines
const ToolSettings * toolsettings
uint32_t * subsurf_face_dot_tags