diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2018-01-18 23:52:16 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2018-01-18 23:52:36 +0300 |
commit | 59989fd4e0b7a99b209d19a7ea880421f75b9977 (patch) | |
tree | 7a765aac52904166da04a15bd762b97c20dc42bc /source/blender/draw/engines/eevee/shaders/volumetric_lib.glsl | |
parent | 03e432bcdbd61ccea2d74065203af199b46b2e83 (diff) |
Eevee: Volumetrics: Update/fix the lamp power convertion.
Include a better fit for area lights.
Diffstat (limited to 'source/blender/draw/engines/eevee/shaders/volumetric_lib.glsl')
-rw-r--r-- | source/blender/draw/engines/eevee/shaders/volumetric_lib.glsl | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/source/blender/draw/engines/eevee/shaders/volumetric_lib.glsl b/source/blender/draw/engines/eevee/shaders/volumetric_lib.glsl index 1376c53d633..e12554bfabc 100644 --- a/source/blender/draw/engines/eevee/shaders/volumetric_lib.glsl +++ b/source/blender/draw/engines/eevee/shaders/volumetric_lib.glsl @@ -71,14 +71,17 @@ vec3 light_volume(LightData ld, vec4 l_vector) /* TODO : Area lighting ? */ /* XXX : Removing Area Power. */ /* TODO : put this out of the shader. */ + /* See eevee_light_setup(). */ if (ld.l_type == AREA) { - power = 0.0962 * (ld.l_sizex * ld.l_sizey * 4.0 * M_PI); + power = (ld.l_sizex * ld.l_sizey * 4.0 * M_PI) * (1.0 / 80.0); + power *= 20.0 * max(0.0, dot(-ld.l_forward, l_vector.xyz / l_vector.w)); /* XXX ad hoc, empirical */ } else if (ld.l_type == SUN) { - power = 1.0; + power = (4.0f * ld.l_radius * ld.l_radius * M_2PI) * (1.0 / 12.5); /* Removing area light power*/ + power *= M_2PI * 0.78; /* Matching cycles with point light. */ } else { - power = 0.0248 * (4.0 * ld.l_radius * ld.l_radius * M_PI * M_PI); + power = (4.0 * ld.l_radius * ld.l_radius) * (1.0 /10.0); } /* OPTI: find a better way than calculating this on the fly */ |