diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2020-07-01 20:11:22 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2020-07-01 20:15:52 +0300 |
commit | 4723644e7f5b9ac607844fb9c43fafda7360e606 (patch) | |
tree | ba03e7349c7f93a414b31a19c1d3d974470a1ed6 /source/blender/draw/engines/overlay | |
parent | 6358c7754c322919368aef9580bfa5b9a0fa0b60 (diff) |
Fix T67587 Overlay: WeightPaint color blends with background in wireframe mode
Fix this by rendering to the overlay framebuffer when using alpha blend
mode.
Diffstat (limited to 'source/blender/draw/engines/overlay')
-rw-r--r-- | source/blender/draw/engines/overlay/overlay_paint.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/source/blender/draw/engines/overlay/overlay_paint.c b/source/blender/draw/engines/overlay/overlay_paint.c index 456c56f9c03..652d6af54a2 100644 --- a/source/blender/draw/engines/overlay/overlay_paint.c +++ b/source/blender/draw/engines/overlay/overlay_paint.c @@ -254,11 +254,18 @@ void OVERLAY_paint_draw(OVERLAY_Data *vedata) OVERLAY_PrivateData *pd = stl->pd; OVERLAY_PassList *psl = vedata->psl; + OVERLAY_FramebufferList *fbl = vedata->fbl; DefaultFramebufferList *dfbl = DRW_viewport_framebuffer_list_get(); if (DRW_state_is_fbo()) { - /* Paint overlay needs final color because of multiply blend mode. */ - GPU_framebuffer_bind(pd->painting.in_front ? dfbl->in_front_fb : dfbl->default_fb); + if (pd->painting.alpha_blending) { + GPU_framebuffer_bind(pd->painting.in_front ? fbl->overlay_in_front_fb : + fbl->overlay_default_fb); + } + else { + /* Paint overlay needs final color because of multiply blend mode. */ + GPU_framebuffer_bind(pd->painting.in_front ? dfbl->in_front_fb : dfbl->default_fb); + } } if (psl->paint_depth_ps) { |