From 1fe561e6623697d6d2f3f0e22dd609109ee65261 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Tue, 6 Nov 2018 20:52:06 +0100 Subject: Eevee: Wireframe: Increase precision a bit Take the full derivative and compute its length instead of using fwidth. --- source/blender/gpu/shaders/gpu_shader_material.glsl | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'source/blender/gpu/shaders') diff --git a/source/blender/gpu/shaders/gpu_shader_material.glsl b/source/blender/gpu/shaders/gpu_shader_material.glsl index 4039b20a082..e5740babebc 100644 --- a/source/blender/gpu/shaders/gpu_shader_material.glsl +++ b/source/blender/gpu/shaders/gpu_shader_material.glsl @@ -1445,7 +1445,10 @@ void node_wireframe_screenspace(float size, vec2 barycentric, out float fac) barys.z = 1.0 - barycentric.x - barycentric.y; size *= (1.0 / 3.0); - vec3 deltas = fwidth(barys); + vec3 dx = dFdx(barys); + vec3 dy = dFdy(barys); + vec3 deltas = sqrt(dx * dx + dy * dy); + vec3 s = step(-deltas * size, -barys); fac = max(s.x, max(s.y, s.z)); -- cgit v1.2.3