diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2021-03-19 22:28:33 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2021-03-19 23:11:06 +0300 |
commit | b96acd0663b589e5519a97c4f435d37e507fb8c1 (patch) | |
tree | 8fc0c7528b45ee4ab8ec8e00962162d3cf76fac9 /source/blender/draw/engines/eevee/shaders | |
parent | 89ef0da5513a2bc85a518b0941807ecdd6980a66 (diff) |
EEVEE: Volumetrics: Add back support for light clamp
The new clamping works by modifying the lamp internal radius which
then soften the light contribution.
However this does remove more light compare to the old solution.
This is because the clamp now affects the light over a much larger
distance since it is smoother. Old scene needs manual tweaking.
Diffstat (limited to 'source/blender/draw/engines/eevee/shaders')
-rw-r--r-- | source/blender/draw/engines/eevee/shaders/lights_lib.glsl | 3 | ||||
-rw-r--r-- | source/blender/draw/engines/eevee/shaders/volumetric_lib.glsl | 2 |
2 files changed, 3 insertions, 2 deletions
diff --git a/source/blender/draw/engines/eevee/shaders/lights_lib.glsl b/source/blender/draw/engines/eevee/shaders/lights_lib.glsl index 0c26c8d1ff1..2f1fd0ce5f8 100644 --- a/source/blender/draw/engines/eevee/shaders/lights_lib.glsl +++ b/source/blender/draw/engines/eevee/shaders/lights_lib.glsl @@ -19,7 +19,7 @@ struct LightData { vec4 rightvec_sizex; /* xyz: Normalized up vector, w: area size X or spot scale X */ vec4 upvec_sizey; /* xyz: Normalized right vector, w: area size Y or spot scale Y */ vec4 forwardvec_type; /* xyz: Normalized forward vector, w: Light Type */ - vec4 diff_spec_volume; /* xyz: Diffuse/Spec/Volume power, w: unused. */ + vec4 diff_spec_volume; /* xyz: Diffuse/Spec/Volume power, w: radius for volumetric. */ }; /* convenience aliases */ @@ -27,6 +27,7 @@ struct LightData { #define l_diff diff_spec_volume.x #define l_spec diff_spec_volume.y #define l_volume diff_spec_volume.z +#define l_volume_radius diff_spec_volume.w #define l_position position_influence.xyz #define l_influence position_influence.w #define l_influence_volume color_influence_volume.w diff --git a/source/blender/draw/engines/eevee/shaders/volumetric_lib.glsl b/source/blender/draw/engines/eevee/shaders/volumetric_lib.glsl index 11fd3418a72..788e621c3c1 100644 --- a/source/blender/draw/engines/eevee/shaders/volumetric_lib.glsl +++ b/source/blender/draw/engines/eevee/shaders/volumetric_lib.glsl @@ -73,7 +73,7 @@ vec3 light_volume(LightData ld, vec4 l_vector) **/ float d = l_vector.w; float d_sqr = sqr(d); - float r_sqr = sqr(ld.l_radius); + float r_sqr = ld.l_volume_radius; /* Using reformulation that has better numerical percision. */ power = 2.0 / (d_sqr + r_sqr + d * sqrt(d_sqr + r_sqr)); |