From c0ae38f65642da42909420e444ef464686773e49 Mon Sep 17 00:00:00 2001 From: Alexander Romanov Date: Wed, 27 Apr 2016 19:14:13 +1000 Subject: Fix artifacts w/ low near clear in bglPolygonOffset --- source/blender/editors/screen/glutil.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'source/blender/editors/screen') diff --git a/source/blender/editors/screen/glutil.c b/source/blender/editors/screen/glutil.c index b7ad911b6f5..a1c330d9dff 100644 --- a/source/blender/editors/screen/glutil.c +++ b/source/blender/editors/screen/glutil.c @@ -795,8 +795,13 @@ void bglPolygonOffset(float viewdist, float dist) #endif } else { - /* should be clipping value or so... */ - offs = 0.0005f * dist; + /* This adjustment effectively results in reducing the Z value by 0.25%. + * + * winmat[14] actually evaluates to `-2 * far * near / (far - near)`, + * is very close to -0.2 with default clip range, and is used as the coefficient multiplied by `w / z`, + * thus controlling the z dependent part of the depth value. + */ + offs = winmat[14] * -0.0025f * dist; } winmat[14] -= offs; -- cgit v1.2.3