@@ -777,7 +777,6 @@ void RasterizerSceneGLES3::_draw_sky(RID p_env, const Projection &p_projection,
777
777
ERR_FAIL_COND (p_env.is_null ());
778
778
779
779
Sky *sky = sky_owner.get_or_null (environment_get_sky (p_env));
780
- ERR_FAIL_NULL (sky);
781
780
782
781
GLES3::SkyMaterialData *material_data = nullptr ;
783
782
RID sky_material;
@@ -851,6 +850,15 @@ void RasterizerSceneGLES3::_draw_sky(RID p_env, const Projection &p_projection,
851
850
material_storage->shaders .sky_shader .version_set_uniform (SkyShaderGLES3::SKY_ENERGY_MULTIPLIER, p_sky_energy_multiplier, shader_data->version , SkyShaderGLES3::MODE_BACKGROUND, spec_constants);
852
851
material_storage->shaders .sky_shader .version_set_uniform (SkyShaderGLES3::LUMINANCE_MULTIPLIER, p_luminance_multiplier, shader_data->version , SkyShaderGLES3::MODE_BACKGROUND, spec_constants);
853
852
853
+ Color fog_color = environment_get_fog_light_color (p_env).srgb_to_linear () * environment_get_fog_light_energy (p_env);
854
+ material_storage->shaders .sky_shader .version_set_uniform (SkyShaderGLES3::FOG_ENABLED, environment_get_fog_enabled (p_env), shader_data->version , SkyShaderGLES3::MODE_BACKGROUND, spec_constants);
855
+ material_storage->shaders .sky_shader .version_set_uniform (SkyShaderGLES3::FOG_AERIAL_PERSPECTIVE, environment_get_fog_aerial_perspective (p_env), shader_data->version , SkyShaderGLES3::MODE_BACKGROUND, spec_constants);
856
+ material_storage->shaders .sky_shader .version_set_uniform (SkyShaderGLES3::FOG_LIGHT_COLOR, fog_color, shader_data->version , SkyShaderGLES3::MODE_BACKGROUND, spec_constants);
857
+ material_storage->shaders .sky_shader .version_set_uniform (SkyShaderGLES3::FOG_SUN_SCATTER, environment_get_fog_sun_scatter (p_env), shader_data->version , SkyShaderGLES3::MODE_BACKGROUND, spec_constants);
858
+ material_storage->shaders .sky_shader .version_set_uniform (SkyShaderGLES3::FOG_DENSITY, environment_get_fog_density (p_env), shader_data->version , SkyShaderGLES3::MODE_BACKGROUND, spec_constants);
859
+ material_storage->shaders .sky_shader .version_set_uniform (SkyShaderGLES3::FOG_SKY_AFFECT, environment_get_fog_sky_affect (p_env), shader_data->version , SkyShaderGLES3::MODE_BACKGROUND, spec_constants);
860
+ material_storage->shaders .sky_shader .version_set_uniform (SkyShaderGLES3::DIRECTIONAL_LIGHT_COUNT, sky_globals.directional_light_count , shader_data->version , SkyShaderGLES3::MODE_BACKGROUND, spec_constants);
861
+
854
862
if (p_use_multiview) {
855
863
glBindBufferBase (GL_UNIFORM_BUFFER, SKY_MULTIVIEW_UNIFORM_LOCATION, scene_state.multiview_buffer );
856
864
glBindBuffer (GL_UNIFORM_BUFFER, 0 );
@@ -2587,7 +2595,7 @@ void RasterizerSceneGLES3::render_scene(const Ref<RenderSceneBuffers> &p_render_
2587
2595
2588
2596
scene_state.enable_gl_depth_draw (false );
2589
2597
2590
- if (draw_sky) {
2598
+ if (draw_sky || draw_sky_fog_only ) {
2591
2599
RENDER_TIMESTAMP (" Render Sky" );
2592
2600
2593
2601
scene_state.enable_gl_depth_test (true );
0 commit comments