Commit: bc348f274a520fcca4d411daae4559e6da4b8e34 Author: Antonio Vazquez Date: Mon Jun 19 10:09:44 2017 +0200 Branches: greasepencil-object https://developer.blender.org/rBbc348f274a520fcca4d411daae4559e6da4b8e34
Cleanup and move constant to defines =================================================================== M source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c M source/blender/draw/engines/gpencil/shaders/gpencil_stroke_geom.glsl =================================================================== diff --git a/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c b/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c index ac539ca359e..558a7581b67 100644 --- a/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c +++ b/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c @@ -44,6 +44,9 @@ #include "draw_cache_impl.h" #include "gpencil_engine.h" +#define ZFIGHT_INIT -2048 +#define ZFIGHT_STEP 48 + /* verify if cache is valid */ static bool gpencil_batch_cache_valid(bGPdata *gpd, int cfra) { @@ -442,7 +445,7 @@ static void gpencil_draw_strokes(GpencilBatchCache *cache, GPENCIL_e_data *e_dat stl->shgroups[id].shgrps_fill = DRW_gpencil_shgroup_fill_create(vedata, psl->stroke_pass, e_data->gpencil_fill_sh, ob, gpd, gps->palcolor, id, zdepth); stl->shgroups[id].shgrps_stroke = DRW_gpencil_shgroup_stroke_create(vedata, psl->stroke_pass, e_data->gpencil_stroke_sh, ob, gpd, id, zdepth); ++stl->storage->pal_id; - stl->g_data->main_sort += 15; + stl->g_data->main_sort += ZFIGHT_STEP; fillgrp = stl->shgroups[id].shgrps_fill; strokegrp = stl->shgroups[id].shgrps_stroke; @@ -596,7 +599,8 @@ void DRW_gpencil_populate_datablock(GPENCIL_e_data *e_data, void *vedata, Scene } } - stl->g_data->main_sort = -300; + /* start in negative to start zfight shift from back of the object location */ + stl->g_data->main_sort = ZFIGHT_INIT; GpencilBatchCache *cache = gpencil_batch_cache_get(gpd, CFRA); cache->cache_idx = 0; @@ -618,7 +622,7 @@ void DRW_gpencil_populate_datablock(GPENCIL_e_data *e_data, void *vedata, Scene gpencil_draw_strokes(cache, e_data, vedata, ts, ob, gpd, gpl, gpf, gpl->opacity, gpl->tintcolor, false, false, zdepth); /* separate layers */ - stl->g_data->main_sort += 40; + stl->g_data->main_sort += ZFIGHT_STEP; } /* draw current painting strokes */ gpencil_draw_buffer_strokes(cache, vedata, ts, gpd); diff --git a/source/blender/draw/engines/gpencil/shaders/gpencil_stroke_geom.glsl b/source/blender/draw/engines/gpencil/shaders/gpencil_stroke_geom.glsl index 0ee8e970914..0cd78ef2076 100644 --- a/source/blender/draw/engines/gpencil/shaders/gpencil_stroke_geom.glsl +++ b/source/blender/draw/engines/gpencil/shaders/gpencil_stroke_geom.glsl @@ -22,6 +22,8 @@ out vec2 mTexCoord; #define ZFIGHT_SHIFT_LOW 0.00000001 #define ZFIGHT_SHIFT_MID 0.0000001 #define ZFIGHT_SHIFT_HIG 0.000001 +/* keep synchronized with ZFIGHT_STEP/2 in gpencil_draw_cache_impl.c */ +#define ZFIGHT_HALF_STEP 24 /* project 3d point to 2d on screen space */ vec2 toScreenSpace(vec4 vertex) @@ -29,7 +31,7 @@ vec2 toScreenSpace(vec4 vertex) return vec2(vertex.xy / vertex.w) * Viewport; } -/* get zdepth value (0 Near, 1 Far) */ +/* get zdepth value */ float getZdepth(vec4 point) { if (xraymode == GP_XRAY_FRONT) { @@ -46,7 +48,7 @@ float getZdepth(vec4 point) else { factor = ZFIGHT_SHIFT_LOW; } - return (point.z / point.w) - ((sort + 12) * factor); + return (point.z / point.w) - ((sort + ZFIGHT_HALF_STEP) * factor); } if (xraymode == GP_XRAY_BACK) { return 1.0; _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs