diff --git a/servers/rendering/renderer_rd/shaders/forward_clustered/scene_forward_clustered.glsl b/servers/rendering/renderer_rd/shaders/forward_clustered/scene_forward_clustered.glsl index f9947be27a5..bb78cd1a7ac 100644 --- a/servers/rendering/renderer_rd/shaders/forward_clustered/scene_forward_clustered.glsl +++ b/servers/rendering/renderer_rd/shaders/forward_clustered/scene_forward_clustered.glsl @@ -1949,11 +1949,11 @@ void fragment_shader(in SceneData scene_data) { } if (ambient_accum.a < 1.0) { - ambient_accum.rgb = mix(ambient_light, ambient_accum.rgb, ambient_accum.a); + ambient_accum.rgb = ambient_light * (1.0 - ambient_accum.a) + ambient_accum.rgb; } if (reflection_accum.a < 1.0) { - reflection_accum.rgb = mix(specular_light, reflection_accum.rgb, reflection_accum.a); + reflection_accum.rgb = specular_light * (1.0 - reflection_accum.a) + reflection_accum.rgb; } if (reflection_accum.a > 0.0) { diff --git a/servers/rendering/renderer_rd/shaders/forward_mobile/scene_forward_mobile.glsl b/servers/rendering/renderer_rd/shaders/forward_mobile/scene_forward_mobile.glsl index 728bd7128b5..edbebbd14c3 100644 --- a/servers/rendering/renderer_rd/shaders/forward_mobile/scene_forward_mobile.glsl +++ b/servers/rendering/renderer_rd/shaders/forward_mobile/scene_forward_mobile.glsl @@ -1418,11 +1418,11 @@ void main() { } if (ambient_accum.a < 1.0) { - ambient_accum.rgb = mix(ambient_light, ambient_accum.rgb, ambient_accum.a); + ambient_accum.rgb = ambient_light * (1.0 - ambient_accum.a) + ambient_accum.rgb; } if (reflection_accum.a < 1.0) { - reflection_accum.rgb = mix(specular_light, reflection_accum.rgb, reflection_accum.a); + reflection_accum.rgb = specular_light * (1.0 - reflection_accum.a) + reflection_accum.rgb; } if (reflection_accum.a > 0.0) {