diff --git a/servers/rendering/renderer_rd/environment/sky.cpp b/servers/rendering/renderer_rd/environment/sky.cpp index 6aa6f4d7ef..1ffac1d687 100644 --- a/servers/rendering/renderer_rd/environment/sky.cpp +++ b/servers/rendering/renderer_rd/environment/sky.cpp @@ -1187,6 +1187,17 @@ void SkyRD::setup_sky(const RenderDataRD *p_render_data, const Size2i p_screen_s projection[2].y = -projection[2].y; } + float custom_fov = RendererSceneRenderRD::get_singleton()->environment_get_sky_custom_fov(p_render_data->environment); + + if (custom_fov && sky_scene_state.view_count == 1) { + // With custom fov we don't support stereo... + float near_plane = projection.get_z_near(); + float far_plane = projection.get_z_far(); + float aspect = projection.get_aspect(); + + projection.set_perspective(custom_fov, aspect, near_plane, far_plane); + } + sky_scene_state.cam_projection = correction * projection; // Our info in our UBO is only used if we're rendering stereo. @@ -1450,20 +1461,9 @@ void SkyRD::update_res_buffers(Ref p_render_buffers, RID p Basis sky_transform = RendererSceneRenderRD::get_singleton()->environment_get_sky_orientation(p_env); sky_transform.invert(); - float custom_fov = RendererSceneRenderRD::get_singleton()->environment_get_sky_custom_fov(p_env); - // Camera Projection projection = sky_scene_state.cam_projection; - if (custom_fov && sky_scene_state.view_count == 1) { - // With custom fov we don't support stereo... - float near_plane = projection.get_z_near(); - float far_plane = projection.get_z_far(); - float aspect = projection.get_aspect(); - - projection.set_perspective(custom_fov, aspect, near_plane, far_plane); - } - sky_transform = sky_transform * sky_scene_state.cam_transform.basis; if (shader_data->uses_quarter_res) { @@ -1551,20 +1551,9 @@ void SkyRD::draw_sky(RD::DrawListID p_draw_list, Ref p_ren Basis sky_transform = RendererSceneRenderRD::get_singleton()->environment_get_sky_orientation(p_env); sky_transform.invert(); - float custom_fov = RendererSceneRenderRD::get_singleton()->environment_get_sky_custom_fov(p_env); - // Camera Projection projection = sky_scene_state.cam_projection; - if (custom_fov && sky_scene_state.view_count == 1) { - // With custom fov we don't support stereo... - float near_plane = projection.get_z_near(); - float far_plane = projection.get_z_far(); - float aspect = projection.get_aspect(); - - projection.set_perspective(custom_fov, aspect, near_plane, far_plane); - } - sky_transform = sky_transform * sky_scene_state.cam_transform.basis; PipelineCacheRD *pipeline = &shader_data->pipelines[sky_scene_state.view_count > 1 ? SKY_VERSION_BACKGROUND_MULTIVIEW : SKY_VERSION_BACKGROUND];