[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