[Bf-blender-cvs] [aa5c543a7fe] blender2.8: Eevee: Fix downsampling shader with textureGather
Clément Foucault
noreply at git.blender.org
Tue Sep 11 16:15:47 CEST 2018
Commit: aa5c543a7fe1fa1be95b6a09421a20617928d3b1
Author: Clément Foucault
Date: Tue Sep 11 16:14:29 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBaa5c543a7fe1fa1be95b6a09421a20617928d3b1
Eevee: Fix downsampling shader with textureGather
This was leading to issues with all raytracing and AO algorithm.
Fix T55619
===================================================================
M source/blender/draw/engines/eevee/shaders/effect_minmaxz_frag.glsl
===================================================================
diff --git a/source/blender/draw/engines/eevee/shaders/effect_minmaxz_frag.glsl b/source/blender/draw/engines/eevee/shaders/effect_minmaxz_frag.glsl
index f834b698ef9..e9f05cfe0ff 100644
--- a/source/blender/draw/engines/eevee/shaders/effect_minmaxz_frag.glsl
+++ b/source/blender/draw/engines/eevee/shaders/effect_minmaxz_frag.glsl
@@ -49,7 +49,8 @@ void main()
#else
vec4 samp;
# ifdef GPU_ARB_texture_gather
- samp = gatherLowerMip(vec2(texelPos) / vec2(mipsize));
+ /* + 1.0 to gather at the center of target 4 texels. */
+ samp = gatherLowerMip((vec2(texelPos) + 1.0) / vec2(mipsize));
# else
samp.x = sampleLowerMip(texelPos);
samp.y = sampleLowerMip(texelPos + ivec2(1, 0));
@@ -67,7 +68,7 @@ void main()
val = minmax2(val, samp.x);
}
# ifdef GPU_ARB_texture_gather
- samp = gatherLowerMip((vec2(texelPos) + vec2(1.0, 0.0)) / vec2(mipsize));
+ samp = gatherLowerMip((vec2(texelPos) + vec2(2.0, 1.0)) / vec2(mipsize));
# else
samp.y = sampleLowerMip(texelPos + ivec2(2, 0));
samp.z = sampleLowerMip(texelPos + ivec2(2, 1));
@@ -77,7 +78,7 @@ void main()
/* if we are reducing an odd-height texture then fetch the edge texels */
if (((mipsize.y & 1) != 0) && (texelPos.y == mipsize.y - 3)) {
# ifdef GPU_ARB_texture_gather
- samp = gatherLowerMip((vec2(texelPos) + vec2(0.0, 1.0)) / vec2(mipsize));
+ samp = gatherLowerMip((vec2(texelPos) + vec2(1.0, 2.0)) / vec2(mipsize));
# else
samp.x = sampleLowerMip(texelPos + ivec2(0, 2));
samp.y = sampleLowerMip(texelPos + ivec2(1, 2));
More information about the Bf-blender-cvs
mailing list