Skip to content

Commit 96ce5c0

Browse files
committed
Ensure Sky with custom fov has correction matrix applied to it in RD renderers
1 parent bdf625b commit 96ce5c0

File tree

1 file changed

+11
-22
lines changed
  • servers/rendering/renderer_rd/environment

1 file changed

+11
-22
lines changed

servers/rendering/renderer_rd/environment/sky.cpp

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1187,6 +1187,17 @@ void SkyRD::setup_sky(const RenderDataRD *p_render_data, const Size2i p_screen_s
11871187
projection[2].y = -projection[2].y;
11881188
}
11891189

1190+
float custom_fov = RendererSceneRenderRD::get_singleton()->environment_get_sky_custom_fov(p_render_data->environment);
1191+
1192+
if (custom_fov && sky_scene_state.view_count == 1) {
1193+
// With custom fov we don't support stereo...
1194+
float near_plane = projection.get_z_near();
1195+
float far_plane = projection.get_z_far();
1196+
float aspect = projection.get_aspect();
1197+
1198+
projection.set_perspective(custom_fov, aspect, near_plane, far_plane);
1199+
}
1200+
11901201
sky_scene_state.cam_projection = correction * projection;
11911202

11921203
// Our info in our UBO is only used if we're rendering stereo.
@@ -1450,20 +1461,9 @@ void SkyRD::update_res_buffers(Ref<RenderSceneBuffersRD> p_render_buffers, RID p
14501461
Basis sky_transform = RendererSceneRenderRD::get_singleton()->environment_get_sky_orientation(p_env);
14511462
sky_transform.invert();
14521463

1453-
float custom_fov = RendererSceneRenderRD::get_singleton()->environment_get_sky_custom_fov(p_env);
1454-
14551464
// Camera
14561465
Projection projection = sky_scene_state.cam_projection;
14571466

1458-
if (custom_fov && sky_scene_state.view_count == 1) {
1459-
// With custom fov we don't support stereo...
1460-
float near_plane = projection.get_z_near();
1461-
float far_plane = projection.get_z_far();
1462-
float aspect = projection.get_aspect();
1463-
1464-
projection.set_perspective(custom_fov, aspect, near_plane, far_plane);
1465-
}
1466-
14671467
sky_transform = sky_transform * sky_scene_state.cam_transform.basis;
14681468

14691469
if (shader_data->uses_quarter_res) {
@@ -1551,20 +1551,9 @@ void SkyRD::draw_sky(RD::DrawListID p_draw_list, Ref<RenderSceneBuffersRD> p_ren
15511551
Basis sky_transform = RendererSceneRenderRD::get_singleton()->environment_get_sky_orientation(p_env);
15521552
sky_transform.invert();
15531553

1554-
float custom_fov = RendererSceneRenderRD::get_singleton()->environment_get_sky_custom_fov(p_env);
1555-
15561554
// Camera
15571555
Projection projection = sky_scene_state.cam_projection;
15581556

1559-
if (custom_fov && sky_scene_state.view_count == 1) {
1560-
// With custom fov we don't support stereo...
1561-
float near_plane = projection.get_z_near();
1562-
float far_plane = projection.get_z_far();
1563-
float aspect = projection.get_aspect();
1564-
1565-
projection.set_perspective(custom_fov, aspect, near_plane, far_plane);
1566-
}
1567-
15681557
sky_transform = sky_transform * sky_scene_state.cam_transform.basis;
15691558

15701559
PipelineCacheRD *pipeline = &shader_data->pipelines[sky_scene_state.view_count > 1 ? SKY_VERSION_BACKGROUND_MULTIVIEW : SKY_VERSION_BACKGROUND];

0 commit comments

Comments
 (0)