Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/draw/engines/eevee/shaders/effect_reflection_trace_frag.glsl')
-rw-r--r--source/blender/draw/engines/eevee/shaders/effect_reflection_trace_frag.glsl14
1 files changed, 12 insertions, 2 deletions
diff --git a/source/blender/draw/engines/eevee/shaders/effect_reflection_trace_frag.glsl b/source/blender/draw/engines/eevee/shaders/effect_reflection_trace_frag.glsl
index f30b7789043..b88a106e897 100644
--- a/source/blender/draw/engines/eevee/shaders/effect_reflection_trace_frag.glsl
+++ b/source/blender/draw/engines/eevee/shaders/effect_reflection_trace_frag.glsl
@@ -19,6 +19,8 @@
uniform sampler2D normalBuffer;
uniform sampler2D specroughBuffer;
+uniform vec2 targetSize;
+uniform float randomScale;
in vec4 uvcoordsvar;
@@ -27,7 +29,16 @@ layout(location = 1) out float hitDepth;
void main()
{
- vec2 uvs = uvcoordsvar.xy;
+ vec4 rand = texelfetch_noise_tex(gl_FragCoord.xy);
+ /* Decorrelate from AA. */
+ /* TODO(fclem) we should use a more general approach for more random number dimensions. */
+ vec2 random_px = floor(fract(rand.xy * 2.2074408460575947536) * 1.99999) - 0.5;
+ rand.xy = fract(rand.xy * 3.2471795724474602596);
+
+ /* Randomly choose the pixel to start the ray from when tracing at lower resolution.
+ * This method also make sure we always start from the center of a fullres texel. */
+ vec2 uvs = (gl_FragCoord.xy + random_px * randomScale) / (targetSize * ssrUvScale);
+
float depth = textureLod(maxzBuffer, uvs * hizUvScale.xy, 0.0).r;
HitData data;
@@ -88,7 +99,6 @@ void main()
}
}
- vec4 rand = texelfetch_noise_tex(vec2(gl_FragCoord.xy));
/* Gives *perfect* reflection for very small roughness */
if (roughness < 0.04) {
rand.xzw *= 0.0;