diff options
author | Antonio Vazquez <blendergit@gmail.com> | 2020-06-23 20:11:52 +0300 |
---|---|---|
committer | Antonio Vazquez <blendergit@gmail.com> | 2020-06-23 20:20:02 +0300 |
commit | 11a390e85e2b1358f2167d86490a1c9abec17ea6 (patch) | |
tree | 8d2ebd2ae6725952c973dd8e13a37f0b6a243dff /source/blender/draw | |
parent | f3a8192ef78100dc03e00be6cd75e35d10e98fd2 (diff) |
GPencil: Implement antialiasing parameter to Pixel FX
Related to T78153
Differential Revision: https://developer.blender.org/D8100
Diffstat (limited to 'source/blender/draw')
-rw-r--r-- | source/blender/draw/engines/gpencil/gpencil_shader_fx.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/source/blender/draw/engines/gpencil/gpencil_shader_fx.c b/source/blender/draw/engines/gpencil/gpencil_shader_fx.c index 7ce7a726bb7..cf6e78f4702 100644 --- a/source/blender/draw/engines/gpencil/gpencil_shader_fx.c +++ b/source/blender/draw/engines/gpencil/gpencil_shader_fx.c @@ -262,6 +262,8 @@ static void gpencil_vfx_pixelize(PixelShaderFxData *fx, Object *ob, gpIterVfxDat mul_v3_m4v3(ob_center, persmat, ob->obmat[3]); mul_v3_fl(ob_center, 1.0f / w); + const bool use_antialiasing = ((fx->flag & FX_PIXEL_FILTER_NEAREST) == 0); + /* Convert to uvs. */ mul_v2_fl(ob_center, 0.5f); add_v2_fl(ob_center, 0.5f); @@ -285,7 +287,8 @@ static void gpencil_vfx_pixelize(PixelShaderFxData *fx, Object *ob, gpIterVfxDat DRW_shgroup_uniform_vec2_copy(grp, "targetPixelSize", pixsize_uniform); DRW_shgroup_uniform_vec2_copy(grp, "targetPixelOffset", ob_center); DRW_shgroup_uniform_vec2_copy(grp, "accumOffset", (float[2]){pixel_size[0], 0.0f}); - DRW_shgroup_uniform_int_copy(grp, "sampCount", (pixel_size[0] / vp_size_inv[0] > 3.0) ? 2 : 1); + int samp_count = (pixel_size[0] / vp_size_inv[0] > 3.0) ? 2 : 1; + DRW_shgroup_uniform_int_copy(grp, "sampCount", use_antialiasing ? samp_count : 0); DRW_shgroup_call_procedural_triangles(grp, NULL, 1); } @@ -294,7 +297,8 @@ static void gpencil_vfx_pixelize(PixelShaderFxData *fx, Object *ob, gpIterVfxDat grp = gpencil_vfx_pass_create("Fx Pixelize Y", state, iter, sh); DRW_shgroup_uniform_vec2_copy(grp, "targetPixelSize", pixsize_uniform); DRW_shgroup_uniform_vec2_copy(grp, "accumOffset", (float[2]){0.0f, pixel_size[1]}); - DRW_shgroup_uniform_int_copy(grp, "sampCount", (pixel_size[1] / vp_size_inv[1] > 3.0) ? 2 : 1); + int samp_count = (pixel_size[1] / vp_size_inv[1] > 3.0) ? 2 : 1; + DRW_shgroup_uniform_int_copy(grp, "sampCount", use_antialiasing ? samp_count : 0); DRW_shgroup_call_procedural_triangles(grp, NULL, 1); } } |