25#define OVERLAY_EDIT_TEXT \
26 (V3D_OVERLAY_EDIT_EDGE_LEN | V3D_OVERLAY_EDIT_FACE_AREA | V3D_OVERLAY_EDIT_FACE_ANG | \
27 V3D_OVERLAY_EDIT_EDGE_ANG | V3D_OVERLAY_EDIT_INDICES)
91 const bool is_wire_shmode = (shading->type ==
OB_WIRE);
98 for (
int i = 0; i < 2; i++) {
101 if (show_retopology) {
105 state &= ~DRW_STATE_CULL_BACK;
126 "isConstantScreenSizeNormals",
142 for (
int i = 0; i < 2; i++) {
151 for (
int j = 0; j < 2; j++) {
156 state = state_common;
157 if (show_retopology) {
196 int vert_mask[4] = {0xFF, 0xFF, 0xFF, 0xFF};
213 if (select_face && show_face_dots) {
232 blender::gpu::Batch *geom_tris, *geom_verts, *geom_edges, *geom_fcenter, *skin_roots, *circle;
233 DRWShadingGroup *vert_shgrp, *edge_shgrp, *fdot_shgrp, *face_shgrp, *skin_roots_shgrp;
235 bool has_edit_mesh_cage =
false;
236 bool has_skin_roots =
false;
239 if (
BMEditMesh *em = mesh.runtime->edit_mesh.get()) {
243 has_edit_mesh_cage = editmesh_eval_cage && (editmesh_eval_cage != editmesh_eval_final);
254 geom_edges = DRW_mesh_batch_cache_get_edit_edges(mesh);
255 geom_tris = DRW_mesh_batch_cache_get_edit_triangles(mesh);
260 geom_verts = DRW_mesh_batch_cache_get_edit_vertices(mesh);
263 if (has_skin_roots) {
265 skin_roots = DRW_mesh_batch_cache_get_edit_skin_roots(mesh);
271 geom_fcenter = DRW_mesh_batch_cache_get_edit_facedots(mesh);
280 blender::gpu::Batch *geom =
nullptr;
297 if (show_retopology) {
299 geom = DRW_mesh_batch_cache_get_edit_triangles(mesh);
302 else if (do_in_front && draw_as_solid) {
307 if (vnormals_do || lnormals_do || fnormals_do) {
311 geom = DRW_mesh_batch_cache_get_edit_vert_normals(mesh);
315 geom = DRW_mesh_batch_cache_get_edit_loop_normals(mesh);
319 geom = DRW_mesh_batch_cache_get_edit_facedots(mesh);
CustomData interface, see also DNA_customdata_types.h.
int CustomData_get_offset(const CustomData *data, eCustomDataType type)
General operations, lookup, etc. for blender objects.
const Mesh * BKE_object_get_editmesh_eval_cage(const Object *object)
const Mesh * BKE_object_get_editmesh_eval_final(const Object *object)
#define SET_FLAG_FROM_TEST(value, test, flag)
@ USER_GPU_FLAG_NO_EDIT_MODE_SMOOTH_WIRE
@ V3D_OVERLAY_EDIT_VERT_NORMALS
@ V3D_OVERLAY_EDIT_FREESTYLE_FACE
@ V3D_OVERLAY_EDIT_RETOPOLOGY
@ V3D_OVERLAY_EDIT_LOOP_NORMALS
@ V3D_OVERLAY_EDIT_FACE_NORMALS
@ V3D_OVERLAY_EDIT_CREASES
@ V3D_OVERLAY_EDIT_FREESTYLE_EDGE
@ V3D_OVERLAY_EDIT_CONSTANT_SCREEN_SIZE_NORMALS
@ V3D_OVERLAY_EDIT_FACE_DOT
@ V3D_OVERLAY_EDIT_STATVIS
@ V3D_OVERLAY_EDIT_BWEIGHTS
#define DRW_shgroup_call_no_cull(shgroup, geom, ob)
#define DRW_PASS_CREATE(pass, state)
#define DRW_shgroup_uniform_block(shgroup, name, ubo)
#define RETOPOLOGY_ENABLED(v3d)
#define RETOPOLOGY_OFFSET(v3d)
#define XRAY_FLAG_ENABLED(v3d)
void GPU_framebuffer_bind(GPUFrameBuffer *framebuffer)
void GPU_framebuffer_clear_depth(GPUFrameBuffer *fb, float clear_depth)
struct GPUShader GPUShader
blender::gpu::Batch * DRW_cache_normal_arrow_get()
blender::gpu::Batch * DRW_cache_mesh_surface_get(Object *ob)
blender::gpu::Batch * DRW_cache_circle_get()
blender::gpu::Batch * DRW_cache_mesh_surface_mesh_analysis_get(Object *ob)
DRWView * DRW_view_create_with_zoffset(const DRWView *parent_view, const RegionView3D *rv3d, float offset)
bool DRW_state_show_text()
DefaultTextureList * DRW_viewport_texture_list_get()
const DRWContextState * DRW_context_state_get()
const DRWView * DRW_view_default_get()
DRWShadingGroup * DRW_shgroup_create(GPUShader *shader, DRWPass *pass)
void DRW_shgroup_uniform_float_copy(DRWShadingGroup *shgroup, const char *name, const float value)
void DRW_shgroup_uniform_texture(DRWShadingGroup *shgroup, const char *name, const GPUTexture *tex)
void DRW_shgroup_call_instances_with_attrs(DRWShadingGroup *shgroup, const Object *ob, blender::gpu::Batch *geom, blender::gpu::Batch *inst_attributes)
void DRW_shgroup_state_enable(DRWShadingGroup *shgroup, DRWState state)
bool DRW_pass_is_empty(DRWPass *pass)
void DRW_shgroup_uniform_ivec4(DRWShadingGroup *shgroup, const char *name, const int *value, int arraysize)
void DRW_shgroup_uniform_texture_ref(DRWShadingGroup *shgroup, const char *name, GPUTexture **tex)
void DRW_shgroup_uniform_bool_copy(DRWShadingGroup *shgroup, const char *name, const bool value)
void DRW_shgroup_uniform_ivec4_copy(DRWShadingGroup *shgroup, const char *name, const int *value)
void DRW_draw_pass(DRWPass *pass)
void DRW_view_set_active(const DRWView *view)
void DRW_text_edit_mesh_measure_stats(const ARegion *region, const View3D *v3d, const Object *ob, const UnitSettings *unit, DRWTextStore *dt)
@ DRW_STATE_DEPTH_LESS_EQUAL
@ DRW_STATE_FIRST_VERTEX_CONVENTION
static void overlay_edit_mesh_draw_components(OVERLAY_PassList *psl, OVERLAY_PrivateData *pd, bool in_front)
void OVERLAY_edit_mesh_cache_init(OVERLAY_Data *vedata)
void OVERLAY_edit_mesh_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_edit_mesh_init(OVERLAY_Data *vedata)
static void overlay_edit_mesh_add_ob_to_pass(OVERLAY_PrivateData *pd, Object *ob, bool in_front)
#define OVERLAY_EDIT_TEXT
void OVERLAY_edit_mesh_draw(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_edit_mesh_facedot()
GPUShader * OVERLAY_shader_edit_mesh_normal()
GPUShader * OVERLAY_shader_edit_mesh_depth()
GPUShader * OVERLAY_shader_edit_mesh_edge(bool use_flat_interp)
GPUShader * OVERLAY_shader_edit_mesh_skin_root()
GPUShader * OVERLAY_shader_edit_mesh_analysis()
GPUShader * OVERLAY_shader_edit_mesh_vert()
GPUShader * OVERLAY_shader_edit_mesh_face()
GPUUniformBuf * block_ubo
OVERLAY_StorageList * stl
OVERLAY_FramebufferList * fbl
OVERLAY_TextureList * txl
GPUFrameBuffer * overlay_default_fb
GPUFrameBuffer * overlay_in_front_fb
DRWPass * edit_mesh_depth_ps[2]
DRWPass * edit_mesh_edges_ps[2]
DRWPass * edit_mesh_faces_ps[2]
DRWPass * edit_mesh_analysis_ps
DRWPass * edit_mesh_verts_ps[2]
DRWPass * edit_mesh_faces_cage_ps[2]
DRWPass * edit_mesh_normals_ps
OVERLAY_ShadingData shdata
DRWView * view_edit_faces_cage
DRWShadingGroup * edit_mesh_normals_grp
DRWView * view_edit_faces
DRWShadingGroup * edit_mesh_faces_cage_grp[2]
DRWShadingGroup * edit_mesh_depth_grp[2]
DRWShadingGroup * edit_mesh_edges_grp[2]
DRWView * view_edit_edges
DRWShadingGroup * edit_mesh_analysis_grp
DRWShadingGroup * edit_mesh_verts_grp[2]
DRWShadingGroup * edit_mesh_faces_grp[2]
DRWShadingGroup * edit_mesh_skin_roots_grp[2]
DRWView * view_edit_verts
struct OVERLAY_PrivateData::@230 edit_mesh
DRWShadingGroup * edit_mesh_facedots_grp[2]
GPUTexture * dummy_depth_tx
struct ToolSettings * toolsettings
float normals_constant_screen_size