diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2019-03-11 15:11:46 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2019-03-11 15:12:48 +0300 |
commit | a808b58e07dd8cd7941f6e901de6bdd8fce66f59 (patch) | |
tree | 283c0ea85ba1472e6492a0b63238e5f1e69b61aa /source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl | |
parent | 881782213d8612123e9e35d679d49ea7f9b1bb91 (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.glsl | 12 |
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 |