Explorar o código

Fixes spotlight's cluster artifacts and negative light.

viksl hai 1 ano
pai
achega
8a2d345a85

+ 3 - 2
servers/rendering/renderer_rd/shaders/environment/volumetric_fog_process.glsl

@@ -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);
 
 						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);
-						float spot_rim = max(0.0001, (1.0 - scos) / (1.0 - spot_lights.data[light_index].cone_angle));
+						highp float cone_angle = 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);
 
 						vec3 light = spot_lights.data[light_index].color;