From 54e1b635677076ff4bed88afbe1ac8fcf84088d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Thu, 23 Apr 2020 21:32:21 +0200 Subject: Fix T74173 Assert when scaling camera in viewport to zero --- source/blender/draw/engines/overlay/overlay_extra.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'source/blender/draw/engines') diff --git a/source/blender/draw/engines/overlay/overlay_extra.c b/source/blender/draw/engines/overlay/overlay_extra.c index 566c8cad528..32085890f20 100644 --- a/source/blender/draw/engines/overlay/overlay_extra.c +++ b/source/blender/draw/engines/overlay/overlay_extra.c @@ -1160,6 +1160,10 @@ void OVERLAY_camera_cache_populate(OVERLAY_Data *vedata, Object *ob) } else { copy_v3_fl3(scale, len_v3(ob->obmat[0]), len_v3(ob->obmat[1]), len_v3(ob->obmat[2])); + /* Avoid division by 0. */ + if (ELEM(0.0f, scale[0], scale[1], scale[2])) { + return; + } invert_v3(scale); } -- cgit v1.2.3 From d0ff3434cffa2e056e4f191ead21226f32ea8c15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Thu, 23 Apr 2020 22:21:22 +0200 Subject: Fix T73741 Grid Floor render on top of Wireframe objects Go for a bias towards background to avoid loosing wireframe objects. --- source/blender/draw/engines/overlay/shaders/grid_frag.glsl | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'source/blender/draw/engines') diff --git a/source/blender/draw/engines/overlay/shaders/grid_frag.glsl b/source/blender/draw/engines/overlay/shaders/grid_frag.glsl index db845c7f1dd..9743f918ce3 100644 --- a/source/blender/draw/engines/overlay/shaders/grid_frag.glsl +++ b/source/blender/draw/engines/overlay/shaders/grid_frag.glsl @@ -227,21 +227,20 @@ void main() } } - /* Add a small bias so the grid will always - * be on top of a mesh with the same depth. */ - float grid_depth = gl_FragCoord.z - 6e-8 - fwidth(gl_FragCoord.z); float scene_depth = texelFetch(depthBuffer, ivec2(gl_FragCoord.xy), 0).r; if ((gridFlag & GRID_BACK) != 0) { fade *= (scene_depth == 1.0) ? 1.0 : 0.0; } else { + /* Add a small bias so the grid will always be below of a mesh with the same depth. */ + float grid_depth = gl_FragCoord.z + 4.8e-7; /* Manual, non hard, depth test: * Progressively fade the grid below occluders * (avoids popping visuals due to depth buffer precision) */ /* Harder settings tend to flicker more, * but have less "see through" appearance. */ - const float test_hardness = 1e7; - fade *= 1.0 - clamp((grid_depth - scene_depth) * test_hardness, 0.0, 1.0); + float bias = max(fwidth(gl_FragCoord.z), 2.4e-7); + fade *= linearstep(grid_depth, grid_depth + bias, scene_depth); } FragColor.a *= fade; -- cgit v1.2.3