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

Reply via email to