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>2019-03-11 15:11:46 +0300
committerClément Foucault <foucault.clem@gmail.com>2019-03-11 15:12:48 +0300
commita808b58e07dd8cd7941f6e901de6bdd8fce66f59 (patch)
tree283c0ea85ba1472e6492a0b63238e5f1e69b61aa /source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl
parent881782213d8612123e9e35d679d49ea7f9b1bb91 (diff)
Eevee: Update LTC code
Main change are: - the fresnel LUT is separated from the main GGX LUT. - LUTs use sqrt(1.0 - NV) as roughness remapping. Improving precision and removes needs for acos(). - LTC LUT is normalized by matrix middle component. Improving precision.
Diffstat (limited to 'source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl')
-rw-r--r--source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl12
1 files changed, 6 insertions, 6 deletions
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 3d5b8f6f975..99cca570b0b 100644
--- a/source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl
+++ b/source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl
@@ -198,12 +198,12 @@ void CLOSURE_NAME(
/* ---------------------------------------------------------------- */
#ifdef CLOSURE_GLOSSY
- vec2 lut_uv = lut_coords(dot(N, V), roughness);
+ vec2 lut_uv = lut_coords_ltc(dot(N, V), roughness);
vec4 ltc_mat = texture(utilTex, vec3(lut_uv, 0.0)).rgba;
#endif
#ifdef CLOSURE_CLEARCOAT
- vec2 lut_uv_clear = lut_coords(dot(C_N, V), C_roughness);
+ vec2 lut_uv_clear = lut_coords_ltc(dot(C_N, V), C_roughness);
vec4 ltc_mat_clear = texture(utilTex, vec3(lut_uv_clear, 0.0)).rgba;
vec3 out_spec_clear = vec3(0.0);
#endif
@@ -241,13 +241,13 @@ void CLOSURE_NAME(
}
#ifdef CLOSURE_GLOSSY
- vec3 brdf_lut_lights = texture(utilTex, vec3(lut_uv, 1.0)).rgb;
- out_spec *= F_area(f0, brdf_lut_lights.xy) * brdf_lut_lights.z;
+ vec2 brdf_lut_lights = texture(utilTex, vec3(lut_uv, 1.0)).ba;
+ out_spec *= F_area(f0, brdf_lut_lights.xy);
#endif
#ifdef CLOSURE_CLEARCOAT
- vec3 brdf_lut_lights_clear = texture(utilTex, vec3(lut_uv_clear, 1.0)).rgb;
- out_spec_clear *= F_area(vec3(0.04), brdf_lut_lights_clear.xy) * brdf_lut_lights_clear.z;
+ vec2 brdf_lut_lights_clear = texture(utilTex, vec3(lut_uv_clear, 1.0)).ba;
+ out_spec_clear *= F_area(vec3(0.04), brdf_lut_lights_clear.xy);
out_spec += out_spec_clear * C_intensity;
#endif