diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2017-04-18 22:02:02 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2017-04-18 22:33:09 +0300 |
commit | 80db7092500abef075d981408cdc75f615ce0a34 (patch) | |
tree | cd804b88f2defcb8f95634e99f0eec86fb40be7a /source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl | |
parent | 5bbc803ff0538c3363dcf785d53be0d1804bd37e (diff) |
Eevee: Spherical Harmonic diffuse.
For now it's done each frame and it's rather slow (16ms) but result will be cached soon.
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 | 5 |
1 files changed, 4 insertions, 1 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 598d34941eb..189cdcf10fb 100644 --- a/source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl +++ b/source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl @@ -6,6 +6,7 @@ uniform mat4 ProjectionMatrix; uniform samplerCube probeFiltered; uniform float lodMax; +uniform vec3 shCoefs[9]; #ifndef USE_LTC uniform sampler2D brdfLut; @@ -198,7 +199,7 @@ void main() sd.R = reflect(-sd.V, sd.N); /* hardcoded test vars */ - vec3 albedo = vec3(0.0); + vec3 albedo = mix(vec3(0.0, 0.0, 0.0), vec3(0.8, 0.8, 0.8), saturate(worldPosition.y/2)); vec3 f0 = mix(vec3(0.83, 0.5, 0.1), vec3(0.03, 0.03, 0.03), saturate(worldPosition.y/2)); vec3 specular = mix(f0, vec3(1.0), pow(max(0.0, 1.0 - dot(sd.N, sd.V)), 5.0)); float roughness = saturate(worldPosition.x/lodMax); @@ -229,5 +230,7 @@ void main() vec3 Li = textureLod(probeFiltered, sd.spec_dominant_dir, roughness * lodMax).rgb; radiance += Li * brdf_lut.y + f0 * Li * brdf_lut.x; + radiance += spherical_harmonics(sd.N, shCoefs) * albedo; + fragColor = vec4(radiance, 1.0); }
\ No newline at end of file |