diff --git a/drivers/gles3/shaders/scene.glsl b/drivers/gles3/shaders/scene.glsl index ba70de9e34d..04ba98a4205 100644 --- a/drivers/gles3/shaders/scene.glsl +++ b/drivers/gles3/shaders/scene.glsl @@ -1609,6 +1609,7 @@ void main() { #ifdef BASE_PASS /////////////////////// LIGHTING ////////////////////////////// +#ifndef AMBIENT_LIGHT_DISABLED // IBL precalculations float ndotv = clamp(dot(normal, view), 0.0, 1.0); vec3 F = f0 + (max(vec3(1.0 - roughness), f0) - f0) * pow(1.0 - ndotv, 5.0); @@ -1746,18 +1747,14 @@ void main() { #endif // USE_LIGHTMAP_CAPTURE #endif // !DISABLE_LIGHTMAP - { -#if defined(AMBIENT_LIGHT_DISABLED) - ambient_light = vec3(0.0, 0.0, 0.0); -#else - ambient_light *= albedo.rgb; - ambient_light *= ao; -#endif // AMBIENT_LIGHT_DISABLED - } + ambient_light *= albedo.rgb; + ambient_light *= ao; + +#endif // !AMBIENT_LIGHT_DISABLED // convert ao to direct light ao ao = mix(1.0, ao, ao_light_affect); - +#ifndef AMBIENT_LIGHT_DISABLED { #if defined(DIFFUSE_TOON) //simplify for toon, as @@ -1779,6 +1776,8 @@ void main() { #endif } +#endif // !AMBIENT_LIGHT_DISABLED + #ifndef DISABLE_LIGHT_DIRECTIONAL for (uint i = uint(0); i < scene_data.directional_light_count; i++) { #if defined(USE_LIGHTMAP) && !defined(DISABLE_LIGHTMAP) 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 67ee84b01be..cf15497c8c6 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 @@ -1310,6 +1310,8 @@ void fragment_shader(in SceneData scene_data) { #if !defined(MODE_RENDER_DEPTH) && !defined(MODE_UNSHADED) +#ifndef AMBIENT_LIGHT_DISABLED + if (scene_data.use_reflection_cubemap) { #ifdef LIGHT_ANISOTROPY_USED // https://google.github.io/filament/Filament.html#lighting/imagebasedlights/anisotropy @@ -1397,14 +1399,15 @@ void fragment_shader(in SceneData scene_data) { #endif //USE_RADIANCE_CUBEMAP_ARRAY specular_light += clearcoat_light * horizon * horizon * Fc * scene_data.ambient_light_color_energy.a; } -#endif +#endif // LIGHT_CLEARCOAT_USED +#endif // !AMBIENT_LIGHT_DISABLED #endif //!defined(MODE_RENDER_DEPTH) && !defined(MODE_UNSHADED) //radiance /// GI /// #if !defined(MODE_RENDER_DEPTH) && !defined(MODE_UNSHADED) - +#ifndef AMBIENT_LIGHT_DISABLED #ifdef USE_LIGHTMAP //lightmap @@ -1698,9 +1701,6 @@ void fragment_shader(in SceneData scene_data) { //finalize ambient light here { -#if defined(AMBIENT_LIGHT_DISABLED) - ambient_light = vec3(0.0, 0.0, 0.0); -#else ambient_light *= albedo.rgb; ambient_light *= ao; @@ -1713,15 +1713,14 @@ void fragment_shader(in SceneData scene_data) { ambient_light *= 1.0 - ssil.a; ambient_light += ssil.rgb * albedo.rgb; } -#endif // AMBIENT_LIGHT_DISABLED } - +#endif // AMBIENT_LIGHT_DISABLED // convert ao to direct light ao ao = mix(1.0, ao, ao_light_affect); //this saves some VGPRs vec3 f0 = F0(metallic, specular, albedo); - +#ifndef AMBIENT_LIGHT_DISABLED { #if defined(DIFFUSE_TOON) //simplify for toon, as @@ -1743,6 +1742,7 @@ void fragment_shader(in SceneData scene_data) { #endif } +#endif // !AMBIENT_LIGHT_DISABLED #endif //GI !defined(MODE_RENDER_DEPTH) && !defined(MODE_UNSHADED) #if !defined(MODE_RENDER_DEPTH) 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 24568d7e948..e7623e0062e 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 @@ -1071,6 +1071,8 @@ void main() { #if !defined(MODE_RENDER_DEPTH) && !defined(MODE_UNSHADED) +#ifndef AMBIENT_LIGHT_DISABLED + if (scene_data.use_reflection_cubemap) { #ifdef LIGHT_ANISOTROPY_USED // https://google.github.io/filament/Filament.html#lighting/imagebasedlights/anisotropy @@ -1158,13 +1160,14 @@ void main() { #endif //USE_RADIANCE_CUBEMAP_ARRAY specular_light += clearcoat_light * horizon * horizon * Fc * scene_data.ambient_light_color_energy.a; } -#endif +#endif // LIGHT_CLEARCOAT_USED +#endif // !AMBIENT_LIGHT_DISABLED #endif //!defined(MODE_RENDER_DEPTH) && !defined(MODE_UNSHADED) //radiance #if !defined(MODE_RENDER_DEPTH) && !defined(MODE_UNSHADED) - +#ifndef AMBIENT_LIGHT_DISABLED #ifdef USE_LIGHTMAP //lightmap @@ -1274,14 +1277,11 @@ void main() { } //Reflection probes // finalize ambient light here - { -#if defined(AMBIENT_LIGHT_DISABLED) - ambient_light = vec3(0.0, 0.0, 0.0); -#else - ambient_light *= albedo.rgb; - ambient_light *= ao; -#endif // AMBIENT_LIGHT_DISABLED - } + + ambient_light *= albedo.rgb; + ambient_light *= ao; + +#endif // !AMBIENT_LIGHT_DISABLED // convert ao to direct light ao ao = mix(1.0, ao, ao_light_affect); @@ -1289,6 +1289,7 @@ void main() { //this saves some VGPRs vec3 f0 = F0(metallic, specular, albedo); +#ifndef AMBIENT_LIGHT_DISABLED { #if defined(DIFFUSE_TOON) //simplify for toon, as @@ -1310,6 +1311,7 @@ void main() { #endif } +#endif // !AMBIENT_LIGHT_DISABLED #endif // !defined(MODE_RENDER_DEPTH) && !defined(MODE_UNSHADED) #if !defined(MODE_RENDER_DEPTH)