[Bf-blender-cvs] [c372113489c] blender2.8: Eevee: Add macro to sample noise in utilTex.

Clément Foucault noreply at git.blender.org
Tue Jan 16 18:22:41 CET 2018


Commit: c372113489cbcd072aaba5abe50e6fa125f35cea
Author: Clément Foucault
Date:   Tue Jan 16 18:17:02 2018 +0100
Branches: blender2.8
https://developer.blender.org/rBc372113489cbcd072aaba5abe50e6fa125f35cea

Eevee: Add macro to sample noise in utilTex.

Avoid future coding error.

===================================================================

M	source/blender/draw/engines/eevee/shaders/bsdf_sampling_lib.glsl
M	source/blender/draw/engines/eevee/shaders/effect_ssr_frag.glsl
M	source/blender/draw/engines/eevee/shaders/effect_subsurface_frag.glsl
M	source/blender/draw/engines/eevee/shaders/lamps_lib.glsl
M	source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl
M	source/blender/draw/engines/eevee/shaders/ltc_lib.glsl

===================================================================

diff --git a/source/blender/draw/engines/eevee/shaders/bsdf_sampling_lib.glsl b/source/blender/draw/engines/eevee/shaders/bsdf_sampling_lib.glsl
index 11faec58d40..e5c0cb9c9c9 100644
--- a/source/blender/draw/engines/eevee/shaders/bsdf_sampling_lib.glsl
+++ b/source/blender/draw/engines/eevee/shaders/bsdf_sampling_lib.glsl
@@ -9,11 +9,12 @@ vec2 jitternoise = vec2(0.0);
 #ifndef UTIL_TEX
 #define UTIL_TEX
 uniform sampler2DArray utilTex;
+#define texelfetch_noise_tex(coord) texelFetch(utilTex, ivec3(ivec2(coord) % LUT_SIZE, 2.0), 0)
 #endif /* UTIL_TEX */
 
 void setup_noise(void)
 {
-	jitternoise = texture(utilTex, vec3(gl_FragCoord.xy / LUT_SIZE, 2.0)).rg; /* Global variable */
+	jitternoise = texelfetch_noise_tex(gl_FragCoord.xy).rg; /* Global variable */
 }
 
 #ifdef HAMMERSLEY_SIZE
diff --git a/source/blender/draw/engines/eevee/shaders/effect_ssr_frag.glsl b/source/blender/draw/engines/eevee/shaders/effect_ssr_frag.glsl
index 02911c5793c..bc78d622093 100644
--- a/source/blender/draw/engines/eevee/shaders/effect_ssr_frag.glsl
+++ b/source/blender/draw/engines/eevee/shaders/effect_ssr_frag.glsl
@@ -5,6 +5,7 @@
 #ifndef UTIL_TEX
 #define UTIL_TEX
 uniform sampler2DArray utilTex;
+#define texelfetch_noise_tex(coord) texelFetch(utilTex, ivec3(ivec2(coord) % LUT_SIZE, 2.0), 0)
 #endif /* UTIL_TEX */
 
 #define MAX_MIP 9.0
@@ -196,7 +197,7 @@ void fallback_cubemap(
 	/* Specular probes */
 	vec3 spec_dir = get_specular_reflection_dominant_dir(N, V, roughnessSquared);
 
-	vec4 rand = texture(utilTex, vec3(gl_FragCoord.xy / LUT_SIZE, 2.0));
+	vec4 rand = texelfetch_noise_tex(gl_FragCoord.xy);
 	vec3 bent_normal;
 	float final_ao = occlusion_compute(N, viewPosition, 1.0, rand.rg, bent_normal);
 	final_ao = specular_occlusion(dot(N, V), final_ao, roughness);
diff --git a/source/blender/draw/engines/eevee/shaders/effect_subsurface_frag.glsl b/source/blender/draw/engines/eevee/shaders/effect_subsurface_frag.glsl
index 88e71a060c5..a0c39c79048 100644
--- a/source/blender/draw/engines/eevee/shaders/effect_subsurface_frag.glsl
+++ b/source/blender/draw/engines/eevee/shaders/effect_subsurface_frag.glsl
@@ -12,7 +12,12 @@ uniform float jitterThreshold;
 uniform sampler2D depthBuffer;
 uniform sampler2D sssData;
 uniform sampler2D sssAlbedo;
+
+#ifndef UTIL_TEX
+#define UTIL_TEX
 uniform sampler2DArray utilTex;
+#define texelfetch_noise_tex(coord) texelFetch(utilTex, ivec3(ivec2(coord) % LUT_SIZE, 2.0), 0)
+#endif /* UTIL_TEX */
 
 out vec4 FragColor;
 
@@ -41,7 +46,7 @@ void main(void)
 	vec4 sss_data = texture(sssData, uvs).rgba;
 	float depth_view = get_view_z_from_depth(texture(depthBuffer, uvs).r);
 
-	float rand = texelFetch(utilTex, ivec3(ivec2(gl_FragCoord.xy) % LUT_SIZE, 2), 0).r;
+	float rand = texelfetch_noise_tex(gl_FragCoord.xy).r;
 #ifdef FIRST_PASS
 	float angle = M_2PI * rand + M_PI_2;
 	vec2 dir = vec2(1.0, 0.0);
diff --git a/source/blender/draw/engines/eevee/shaders/lamps_lib.glsl b/source/blender/draw/engines/eevee/shaders/lamps_lib.glsl
index c731dcda742..80e9690d34b 100644
--- a/source/blender/draw/engines/eevee/shaders/lamps_lib.glsl
+++ b/source/blender/draw/engines/eevee/shaders/lamps_lib.glsl
@@ -203,7 +203,7 @@ float light_visibility(LightData ld, vec3 W,
 			vec3 T, B;
 			make_orthonormal_basis(L.xyz / L.w, T, B);
 
-			vec4 rand = texture(utilTex, vec3(gl_FragCoord.xy / LUT_SIZE, 2.0));
+			vec4 rand = texelfetch_noise_tex(gl_FragCoord.xy);
 			/* WATCH THIS : This still seems to have correlation artifacts for low samples. */
 			rand.zw *= fast_sqrt(rand.y) * data.sh_contact_spread;
 
@@ -310,7 +310,7 @@ vec3 light_translucent(LightData ld, vec3 W, vec3 N, vec4 l_vector, float scale)
 		vec3 T, B;
 		make_orthonormal_basis(L.xyz / L.w, T, B);
 
-		vec4 rand = texture(utilTex, vec3(gl_FragCoord.xy / LUT_SIZE, 2.0));
+		vec4 rand = texelfetch_noise_tex(gl_FragCoord.xy);
 		/* WATCH THIS : This still seems to have correlation artifacts for low samples. */
 		rand.zw *= fast_sqrt(rand.y) * data.sh_blur;
 
diff --git a/source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl b/source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl
index 19bfb5856c0..d425a8575e2 100644
--- a/source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl
+++ b/source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl
@@ -15,6 +15,7 @@ uniform float refractionDepth;
 #ifndef UTIL_TEX
 #define UTIL_TEX
 uniform sampler2DArray utilTex;
+#define texelfetch_noise_tex(coord) texelFetch(utilTex, ivec3(ivec2(coord) % LUT_SIZE, 2.0), 0)
 #endif /* UTIL_TEX */
 
 in vec3 worldPosition;
@@ -175,7 +176,7 @@ void CLOSURE_NAME(
 
 	vec3 V = cameraVec;
 
-	vec4 rand = texture(utilTex, vec3(gl_FragCoord.xy / LUT_SIZE, 2.0));
+	vec4 rand = texelFetch(utilTex, ivec3(ivec2(gl_FragCoord.xy) % LUT_SIZE, 2.0), 0);
 
 	/* ---------------------------------------------------------------- */
 	/* -------------------- SCENE LAMPS LIGHTING ---------------------- */
diff --git a/source/blender/draw/engines/eevee/shaders/ltc_lib.glsl b/source/blender/draw/engines/eevee/shaders/ltc_lib.glsl
index ffaa81c3638..74df189a965 100644
--- a/source/blender/draw/engines/eevee/shaders/ltc_lib.glsl
+++ b/source/blender/draw/engines/eevee/shaders/ltc_lib.glsl
@@ -5,6 +5,7 @@
 #ifndef UTIL_TEX
 #define UTIL_TEX
 uniform sampler2DArray utilTex;
+#define texelfetch_noise_tex(coord) texelFetch(utilTex, ivec3(ivec2(coord) % LUT_SIZE, 2.0), 0)
 #endif /* UTIL_TEX */
 
 /* from Real-Time Area Lighting: a Journey from Research to Production



More information about the Bf-blender-cvs mailing list