From 230b9eac69c4ba42f8a6934e4032d09ba10b5715 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Thu, 25 Jun 2020 18:01:35 +0200 Subject: Fix T70193 Overlay: Grid floor disappears for orthographic camera The fix is to disable the fading for in the +Z direction in this case. --- source/blender/draw/engines/overlay/overlay_grid.c | 4 ++++ source/blender/draw/engines/overlay/shaders/grid_frag.glsl | 7 +++++-- 2 files changed, 9 insertions(+), 2 deletions(-) (limited to 'source/blender') diff --git a/source/blender/draw/engines/overlay/overlay_grid.c b/source/blender/draw/engines/overlay/overlay_grid.c index 5ed32de6d93..e3079870d8f 100644 --- a/source/blender/draw/engines/overlay/overlay_grid.c +++ b/source/blender/draw/engines/overlay/overlay_grid.c @@ -41,6 +41,7 @@ enum { CLIP_ZPOS = (1 << 7), CLIP_ZNEG = (1 << 8), GRID_BACK = (1 << 9), + GRID_CAMERA = (1 << 10), }; void OVERLAY_grid_init(OVERLAY_Data *vedata) @@ -145,6 +146,9 @@ void OVERLAY_grid_init(OVERLAY_Data *vedata) if (rv3d->persp == RV3D_CAMOB && v3d->camera && v3d->camera->type == OB_CAMERA) { Object *camera_object = DEG_get_evaluated_object(draw_ctx->depsgraph, v3d->camera); dist = ((Camera *)(camera_object->data))->clip_end; + shd->grid_flag |= GRID_CAMERA; + shd->zneg_flag |= GRID_CAMERA; + shd->zpos_flag |= GRID_CAMERA; } else { dist = v3d->clip_end; diff --git a/source/blender/draw/engines/overlay/shaders/grid_frag.glsl b/source/blender/draw/engines/overlay/shaders/grid_frag.glsl index 9743f918ce3..317e9fe0447 100644 --- a/source/blender/draw/engines/overlay/shaders/grid_frag.glsl +++ b/source/blender/draw/engines/overlay/shaders/grid_frag.glsl @@ -28,7 +28,8 @@ uniform float gridSteps[STEPS_LEN] = float[](0.001, 0.01, 0.1, 1.0, 10.0, 100.0, #define PLANE_XY (1 << 4) #define PLANE_XZ (1 << 5) #define PLANE_YZ (1 << 6) -#define GRID_BACK (1 << 9) /* grid is behind objects */ +#define GRID_BACK (1 << 9) /* grid is behind objects */ +#define GRID_CAMERA (1 << 10) /* In camera view */ #define M_1_SQRTPI 0.5641895835477563 /* 1/sqrt(pi) */ @@ -104,7 +105,9 @@ void main() fade *= 1.0 - smoothstep(0.0, gridDistance, dist - gridDistance); } else { - dist = abs(gl_FragCoord.z * 2.0 - 1.0); + dist = gl_FragCoord.z * 2.0 - 1.0; + /* Avoid fading in +Z direction in camera view (see T70193). */ + dist = ((gridFlag & GRID_CAMERA) != 0) ? clamp(dist, 0.0, 1.0) : abs(dist); fade = 1.0 - smoothstep(0.0, 0.5, dist - 0.5); dist = 1.0; /* avoid branch after */ -- cgit v1.2.3