From e6705fad3393867d2e3fea040f61931edf9d5709 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Wed, 1 May 2019 10:48:13 +0200 Subject: DRW: Add DRW_STATE_BLEND_PREMUL_UNDER Just basic alpha under operation with premultiplied source. --- source/blender/draw/intern/draw_manager_exec.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'source/blender/draw/intern/draw_manager_exec.c') diff --git a/source/blender/draw/intern/draw_manager_exec.c b/source/blender/draw/intern/draw_manager_exec.c index 7e1fda14608..8e23a616ff5 100644 --- a/source/blender/draw/intern/draw_manager_exec.c +++ b/source/blender/draw/intern/draw_manager_exec.c @@ -205,7 +205,7 @@ void drw_state_set(DRWState state) int test; if (CHANGED_ANY_STORE_VAR(DRW_STATE_BLEND | DRW_STATE_BLEND_PREMUL | DRW_STATE_ADDITIVE | DRW_STATE_MULTIPLY | DRW_STATE_ADDITIVE_FULL | - DRW_STATE_BLEND_OIT, + DRW_STATE_BLEND_OIT | DRW_STATE_BLEND_PREMUL_UNDER, test)) { if (test) { glEnable(GL_BLEND); @@ -216,6 +216,9 @@ void drw_state_set(DRWState state) GL_ONE, GL_ONE_MINUS_SRC_ALPHA); /* Alpha */ } + else if ((state & DRW_STATE_BLEND_PREMUL_UNDER) != 0) { + glBlendFunc(GL_ONE_MINUS_DST_ALPHA, GL_ONE); + } else if ((state & DRW_STATE_BLEND_PREMUL) != 0) { glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); } -- cgit v1.2.3