You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-04 12:00:25 +00:00
Fix peter-panning with default spotlight
This commit is contained in:
@@ -733,7 +733,7 @@ void light_process_spot(uint idx, vec3 vertex, vec3 eye_vec, vec3 normal, vec3 v
|
||||
vec4 v = vec4(vertex + normal_bias, 1.0);
|
||||
|
||||
vec4 splane = (spot_lights.data[idx].shadow_matrix * v);
|
||||
splane.z += spot_lights.data[idx].shadow_bias / (light_length * spot_lights.data[idx].inv_radius);
|
||||
splane.z += spot_lights.data[idx].shadow_bias;
|
||||
splane /= splane.w;
|
||||
|
||||
if (sc_use_light_soft_shadows() && spot_lights.data[idx].soft_shadow_size > 0.0) {
|
||||
|
||||
@@ -2510,7 +2510,7 @@ bool RendererSceneCull::_light_instance_update_shadow(Instance *p_instance, cons
|
||||
}
|
||||
|
||||
real_t radius = RSG::light_storage->light_get_param(p_instance->base, RS::LIGHT_PARAM_RANGE);
|
||||
real_t z_near = MIN(0.005f, radius);
|
||||
real_t z_near = MIN(0.025f, radius);
|
||||
Projection cm;
|
||||
cm.set_perspective(90, 1, z_near, radius);
|
||||
|
||||
@@ -2600,7 +2600,7 @@ bool RendererSceneCull::_light_instance_update_shadow(Instance *p_instance, cons
|
||||
|
||||
real_t radius = RSG::light_storage->light_get_param(p_instance->base, RS::LIGHT_PARAM_RANGE);
|
||||
real_t angle = RSG::light_storage->light_get_param(p_instance->base, RS::LIGHT_PARAM_SPOT_ANGLE);
|
||||
real_t z_near = MIN(0.005f, radius);
|
||||
real_t z_near = MIN(0.025f, radius);
|
||||
|
||||
Projection cm;
|
||||
cm.set_perspective(angle * 2.0, 1.0, z_near, radius);
|
||||
|
||||
Reference in New Issue
Block a user