Fixes spotlight's cluster artifacts and negative light.
(cherry picked from commit 8a2d345a85
)
This commit is contained in:
parent
ecd098341a
commit
c9e5f90813
|
@ -576,8 +576,9 @@ void main() {
|
||||||
float attenuation = get_omni_attenuation(d, spot_lights.data[light_index].inv_radius, spot_lights.data[light_index].attenuation);
|
float attenuation = get_omni_attenuation(d, spot_lights.data[light_index].inv_radius, spot_lights.data[light_index].attenuation);
|
||||||
|
|
||||||
vec3 spot_dir = spot_lights.data[light_index].direction;
|
vec3 spot_dir = spot_lights.data[light_index].direction;
|
||||||
float scos = max(dot(-normalize(light_rel_vec), spot_dir), spot_lights.data[light_index].cone_angle);
|
highp float cone_angle = spot_lights.data[light_index].cone_angle;
|
||||||
float spot_rim = max(0.0001, (1.0 - scos) / (1.0 - spot_lights.data[light_index].cone_angle));
|
float scos = max(dot(-normalize(light_rel_vec), spot_dir), cone_angle);
|
||||||
|
float spot_rim = max(0.0001, (1.0 - scos) / (1.0 - cone_angle));
|
||||||
attenuation *= 1.0 - pow(spot_rim, spot_lights.data[light_index].cone_attenuation);
|
attenuation *= 1.0 - pow(spot_rim, spot_lights.data[light_index].cone_attenuation);
|
||||||
|
|
||||||
vec3 light = spot_lights.data[light_index].color;
|
vec3 light = spot_lights.data[light_index].color;
|
||||||
|
|
Loading…
Reference in New Issue