diff options
author | Dalai Felinto <dalai@blender.org> | 2020-04-02 16:05:41 +0300 |
---|---|---|
committer | Dalai Felinto <dalai@blender.org> | 2020-04-02 16:07:56 +0300 |
commit | fa8a3c8f26f4eeb09d5d8b2792d32887be4fe111 (patch) | |
tree | b2c918af88c2799311f7566fd770600207b9ca7d /source/blender/draw/engines/overlay/overlay_edit_mesh.c | |
parent | 7bffdab93c40d6de0410f767cdb24ebe1e478344 (diff) |
Revert "Fix T72688: Vertex Group Weights in Edit Mode Occludes In Front Armatures"
This reverts commit 782e6ea4edd9cb09f2583c8f28a24d6330dc6ce8.
Said fix introduced a crash the moment one goes to edit mode.
Diffstat (limited to 'source/blender/draw/engines/overlay/overlay_edit_mesh.c')
-rw-r--r-- | source/blender/draw/engines/overlay/overlay_edit_mesh.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/source/blender/draw/engines/overlay/overlay_edit_mesh.c b/source/blender/draw/engines/overlay/overlay_edit_mesh.c index be4e4a9e00e..400947ea819 100644 --- a/source/blender/draw/engines/overlay/overlay_edit_mesh.c +++ b/source/blender/draw/engines/overlay/overlay_edit_mesh.c @@ -118,6 +118,18 @@ void OVERLAY_edit_mesh_cache_init(OVERLAY_Data *vedata) show_face_dots = true; } + { + /* TODO(fclem) Shouldn't this be going into the paint overlay? */ + state = DRW_STATE_WRITE_COLOR | DRW_STATE_WRITE_DEPTH | DRW_STATE_DEPTH_LESS_EQUAL; + DRW_PASS_CREATE(psl->edit_mesh_weight_ps, state | pd->clipping_state); + + sh = OVERLAY_shader_paint_weight(); + pd->edit_mesh_weight_grp = grp = DRW_shgroup_create(sh, psl->edit_mesh_weight_ps); + DRW_shgroup_uniform_float_copy(grp, "opacity", 1.0); + DRW_shgroup_uniform_bool_copy(grp, "drawContours", false); + DRW_shgroup_uniform_texture(grp, "colorramp", G_draw.weight_ramp); + DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo); + } /* Run Twice for in-front passes. */ for (int i = 0; i < 2; i++) { /* Complementary Depth Pass */ @@ -271,12 +283,17 @@ void OVERLAY_edit_mesh_cache_populate(OVERLAY_Data *vedata, Object *ob) bool do_in_front = (ob->dtx & OB_DRAWXRAY) != 0; bool do_occlude_wire = (pd->edit_mesh.flag & V3D_OVERLAY_EDIT_OCCLUDE_WIRE) != 0; + bool do_show_weight = (pd->edit_mesh.flag & V3D_OVERLAY_EDIT_WEIGHT) != 0; bool do_show_mesh_analysis = (pd->edit_mesh.flag & V3D_OVERLAY_EDIT_STATVIS) != 0; bool fnormals_do = (pd->edit_mesh.flag & V3D_OVERLAY_EDIT_FACE_NORMALS) != 0; bool vnormals_do = (pd->edit_mesh.flag & V3D_OVERLAY_EDIT_VERT_NORMALS) != 0; bool lnormals_do = (pd->edit_mesh.flag & V3D_OVERLAY_EDIT_LOOP_NORMALS) != 0; - if (do_show_mesh_analysis && !pd->xray_enabled) { + if (do_show_weight) { + geom = DRW_cache_mesh_surface_weights_get(ob); + DRW_shgroup_call_no_cull(pd->edit_mesh_weight_grp, geom, ob); + } + else if (do_show_mesh_analysis && !pd->xray_enabled) { geom = DRW_cache_mesh_surface_mesh_analysis_get(ob); if (geom) { DRW_shgroup_call_no_cull(pd->edit_mesh_analysis_grp, geom, ob); @@ -347,6 +364,7 @@ void OVERLAY_edit_mesh_draw(OVERLAY_Data *vedata) GPU_framebuffer_bind(fbl->overlay_default_fb); } + DRW_draw_pass(psl->edit_mesh_weight_ps); DRW_draw_pass(psl->edit_mesh_analysis_ps); DRW_draw_pass(psl->edit_mesh_depth_ps[NOT_IN_FRONT]); |