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:
authorClément Foucault <foucault.clem@gmail.com>2018-01-09 21:01:24 +0300
committerClément Foucault <foucault.clem@gmail.com>2018-01-09 21:01:24 +0300
commita0655ed487a838a5d2c1d39e62db9a39a4100715 (patch)
tree3ff12eba3d3b1d1229de608ed851db29d9b7dadb /source/blender/draw/engines/eevee/shaders/effect_gtao_frag.glsl
parent8aaf7bc438ad0c471dc4ad13bc8a9a17210ee18b (diff)
Eevee: Fix AO in planar reflections.
Diffstat (limited to 'source/blender/draw/engines/eevee/shaders/effect_gtao_frag.glsl')
-rw-r--r--source/blender/draw/engines/eevee/shaders/effect_gtao_frag.glsl28
1 files changed, 18 insertions, 10 deletions
diff --git a/source/blender/draw/engines/eevee/shaders/effect_gtao_frag.glsl b/source/blender/draw/engines/eevee/shaders/effect_gtao_frag.glsl
index 1c63051c65b..730abcc89cf 100644
--- a/source/blender/draw/engines/eevee/shaders/effect_gtao_frag.glsl
+++ b/source/blender/draw/engines/eevee/shaders/effect_gtao_frag.glsl
@@ -12,8 +12,8 @@ uniform sampler2D normalBuffer;
void main()
{
- vec4 texel_size = 1.0 / vec2(textureSize(depthBuffer, 0)).xyxy;
- vec2 uvs = saturate(gl_FragCoord.xy * texel_size.xy);
+ vec2 texel_size = 1.0 / vec2(textureSize(depthBuffer, 0)).xy;
+ vec2 uvs = saturate(gl_FragCoord.xy * texel_size);
float depth = textureLod(depthBuffer, uvs, 0.0).r;
@@ -23,13 +23,9 @@ void main()
vec3 bent_normal;
float visibility;
-#if 1
+
gtao_deferred(normal, viewPosition, depth, visibility, bent_normal);
-#else
- vec2 rand = vec2((1.0 / 4.0) * float((int(gl_FragCoord.y) & 0x1) * 2 + (int(gl_FragCoord.x) & 0x1)), 0.5);
- rand = fract(rand.x + texture(utilTex, vec3(floor(gl_FragCoord.xy * 0.5) / LUT_SIZE, 2.0)).rg);
- gtao(normal, viewPosition, rand, visibility, bent_normal);
-#endif
+
denoise_ao(normal, depth, visibility, bent_normal);
FragColor = vec4(visibility);
@@ -38,13 +34,25 @@ void main()
#else
uniform float sampleNbr;
+#ifdef LAYERED_DEPTH
+uniform sampler2DArray depthBufferLayered;
+uniform int layer;
+# define gtao_depthBuffer depthBufferLayered
+# define gtao_textureLod(a, b, c) textureLod(a, vec3(b, layer), c)
+
+#else
+# define gtao_depthBuffer depthBuffer
+# define gtao_textureLod(a, b, c) textureLod(a, b, c)
+
+#endif
+
void main()
{
ivec2 hr_co = ivec2(gl_FragCoord.xy);
ivec2 fs_co = get_fs_co(hr_co);
- vec2 uvs = saturate((vec2(fs_co) + 0.5) / vec2(textureSize(depthBuffer, 0)));
- float depth = textureLod(depthBuffer, uvs, 0.0).r;
+ vec2 uvs = saturate((vec2(fs_co) + 0.5) / vec2(textureSize(gtao_depthBuffer, 0).xy));
+ float depth = gtao_textureLod(gtao_depthBuffer, uvs, 0.0).r;
if (depth == 1.0) {
/* Do not trace for background */