[Bf-blender-cvs] [8ea92115f3d] greasepencil-refactor: GPencil: Refactor: Speedup: Only blend pixels rendered in the layer
Clément Foucault
noreply at git.blender.org
Sat Dec 14 03:31:28 CET 2019
Commit: 8ea92115f3dc33d8e67f3f467f7525911e418e7d
Author: Clément Foucault
Date: Sat Dec 14 03:31:10 2019 +0100
Branches: greasepencil-refactor
https://developer.blender.org/rB8ea92115f3dc33d8e67f3f467f7525911e418e7d
GPencil: Refactor: Speedup: Only blend pixels rendered in the layer
===================================================================
M source/blender/draw/engines/gpencil/gpencil_cache_utils.c
===================================================================
diff --git a/source/blender/draw/engines/gpencil/gpencil_cache_utils.c b/source/blender/draw/engines/gpencil/gpencil_cache_utils.c
index 293fd306721..81ed4f1cab0 100644
--- a/source/blender/draw/engines/gpencil/gpencil_cache_utils.c
+++ b/source/blender/draw/engines/gpencil/gpencil_cache_utils.c
@@ -86,7 +86,7 @@ GPENCIL_tLayer *gpencil_layer_cache_add_new(GPENCIL_PrivateData *pd, Object *ob,
}
if ((gpl->blend_mode != eGplBlendMode_Regular) || (gpl->opacity < 1.0f)) {
- DRWState state = DRW_STATE_WRITE_COLOR;
+ DRWState state = DRW_STATE_WRITE_COLOR | DRW_STATE_STENCIL_EQUAL;
switch (gpl->blend_mode) {
case eGplBlendMode_Regular:
state |= DRW_STATE_BLEND_ALPHA_PREMUL;
@@ -119,6 +119,7 @@ GPENCIL_tLayer *gpencil_layer_cache_add_new(GPENCIL_PrivateData *pd, Object *ob,
DRW_shgroup_uniform_float_copy(grp, "blendOpacity", gpl->opacity);
DRW_shgroup_uniform_texture_ref(grp, "colorBuf", &pd->color_layer_tx);
DRW_shgroup_uniform_texture_ref(grp, "revealBuf", &pd->reveal_layer_tx);
+ DRW_shgroup_stencil_mask(grp, 0xFF);
/* TODO only blend pixels that have been rendered. */
DRW_shgroup_call_procedural_triangles(grp, NULL, 1);
@@ -130,7 +131,6 @@ GPENCIL_tLayer *gpencil_layer_cache_add_new(GPENCIL_PrivateData *pd, Object *ob,
DRW_shgroup_state_enable(grp, DRW_STATE_BLEND_ADD);
DRW_shgroup_uniform_int_copy(grp, "blendMode", 999);
DRW_shgroup_uniform_texture_ref(grp, "colorBuf", &pd->color_layer_tx);
- DRW_shgroup_uniform_texture_ref(grp, "revealBuf", &pd->reveal_layer_tx);
/* TODO only blend pixels that have been rendered. */
DRW_shgroup_call_procedural_triangles(grp, NULL, 1);
}
More information about the Bf-blender-cvs
mailing list