diff --git a/drivers/gles3/rasterizer_scene_gles3.cpp b/drivers/gles3/rasterizer_scene_gles3.cpp index 5d45222c767..6d0d59ce426 100644 --- a/drivers/gles3/rasterizer_scene_gles3.cpp +++ b/drivers/gles3/rasterizer_scene_gles3.cpp @@ -700,10 +700,10 @@ void RasterizerSceneGLES3::_setup_sky(const RenderDataGLES3 *p_render_data, cons sky_light_data.energy *= RSG::camera_attributes->camera_attributes_get_exposure_normalization_factor(p_render_data->camera_attributes); } - Color linear_col = light_storage->light_get_color(base); - sky_light_data.color[0] = linear_col.r; - sky_light_data.color[1] = linear_col.g; - sky_light_data.color[2] = linear_col.b; + Color srgb_col = light_storage->light_get_color(base); + sky_light_data.color[0] = srgb_col.r; + sky_light_data.color[1] = srgb_col.g; + sky_light_data.color[2] = srgb_col.b; sky_light_data.enabled = true; diff --git a/drivers/gles3/shaders/sky.glsl b/drivers/gles3/shaders/sky.glsl index f2292dee680..dd0bd7962ee 100644 --- a/drivers/gles3/shaders/sky.glsl +++ b/drivers/gles3/shaders/sky.glsl @@ -141,8 +141,8 @@ vec4 fog_process(vec3 view, vec3 sky_color) { vec4 sun_scatter = vec4(0.0); float sun_total = 0.0; for (uint i = 0u; i < directional_light_count; i++) { - vec3 light_color = directional_lights.data[i].color_size.xyz * directional_lights.data[i].direction_energy.w; - float light_amount = pow(max(dot(view, directional_lights.data[i].direction_energy.xyz), 0.0), 8.0); + vec3 light_color = srgb_to_linear(directional_lights.data[i].color_size.xyz) * directional_lights.data[i].direction_energy.w; + float light_amount = pow(max(dot(view, directional_lights.data[i].direction_energy.xyz), 0.0), 8.0) * M_PI; fog_color += light_color * light_amount * fog_sun_scatter; } } diff --git a/servers/rendering/renderer_rd/shaders/environment/sky.glsl b/servers/rendering/renderer_rd/shaders/environment/sky.glsl index 4cf61766493..6f8d5e19090 100644 --- a/servers/rendering/renderer_rd/shaders/environment/sky.glsl +++ b/servers/rendering/renderer_rd/shaders/environment/sky.glsl @@ -164,7 +164,7 @@ vec4 fog_process(vec3 view, vec3 sky_color) { float sun_total = 0.0; for (uint i = 0; i < sky_scene_data.directional_light_count; i++) { vec3 light_color = directional_lights.data[i].color_size.xyz * directional_lights.data[i].direction_energy.w; - float light_amount = pow(max(dot(view, directional_lights.data[i].direction_energy.xyz), 0.0), 8.0); + float light_amount = pow(max(dot(view, directional_lights.data[i].direction_energy.xyz), 0.0), 8.0) * M_PI; fog_color += light_color * light_amount * sky_scene_data.fog_sun_scatter; } }