[Bf-blender-cvs] [bc348f274a5] greasepencil-object: Cleanup and move constant to defines

Antonio Vazquez noreply at git.blender.org
Mon Jun 19 10:09:55 CEST 2017


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;




More information about the Bf-blender-cvs mailing list