From f42569bb71e66c56f906e13a76fc0df3bf0c88d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Wed, 21 Sep 2022 21:48:23 +0200 Subject: Fix EEVEE: Screen Space Refraction Artefacts caused by viewport aspect ratio This was caused by the vertical/horizontal clasification being done in NDC space which wasn't respecting the Aspect ratio. Multiplying the test vector by the target size fixes the issue. --- source/blender/draw/engines/eevee/shaders/raytrace_lib.glsl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'source/blender/draw') diff --git a/source/blender/draw/engines/eevee/shaders/raytrace_lib.glsl b/source/blender/draw/engines/eevee/shaders/raytrace_lib.glsl index 73c4b521b05..8bd60573078 100644 --- a/source/blender/draw/engines/eevee/shaders/raytrace_lib.glsl +++ b/source/blender/draw/engines/eevee/shaders/raytrace_lib.glsl @@ -51,7 +51,8 @@ void raytrace_screenspace_ray_finalize(inout ScreenSpaceRay ray) } float ray_len_sqr = len_squared(ray.direction.xyz); /* Make ray.direction cover one pixel. */ - bool is_more_vertical = abs(ray.direction.x) < abs(ray.direction.y); + bool is_more_vertical = abs(ray.direction.x / ssrPixelSize.x) < + abs(ray.direction.y / ssrPixelSize.y); ray.direction /= (is_more_vertical) ? abs(ray.direction.y) : abs(ray.direction.x); ray.direction *= (is_more_vertical) ? ssrPixelSize.y : ssrPixelSize.x; /* Clip to segment's end. */ -- cgit v1.2.3