@@ -972,14 +972,14 @@ void RenderForwardClustered::_fill_render_list(RenderListType p_render_list, con
972972 float distance = 0.0 ;
973973
974974 // Check if camera is NOT inside the mesh AABB.
975- if (!inst->transformed_aabb .has_point (p_render_data->scene_data ->cam_transform .origin )) {
975+ if (!inst->transformed_aabb .has_point (p_render_data->scene_data ->main_cam_transform .origin )) {
976976 // Get the LOD support points on the mesh AABB.
977- Vector3 lod_support_min = inst->transformed_aabb .get_support (p_render_data->scene_data ->cam_transform .basis .get_column (Vector3::AXIS_Z));
978- Vector3 lod_support_max = inst->transformed_aabb .get_support (-p_render_data->scene_data ->cam_transform .basis .get_column (Vector3::AXIS_Z));
977+ Vector3 lod_support_min = inst->transformed_aabb .get_support (p_render_data->scene_data ->main_cam_transform .basis .get_column (Vector3::AXIS_Z));
978+ Vector3 lod_support_max = inst->transformed_aabb .get_support (-p_render_data->scene_data ->main_cam_transform .basis .get_column (Vector3::AXIS_Z));
979979
980980 // Get the distances to those points on the AABB from the camera origin.
981- float distance_min = (float )p_render_data->scene_data ->cam_transform .origin .distance_to (lod_support_min);
982- float distance_max = (float )p_render_data->scene_data ->cam_transform .origin .distance_to (lod_support_max);
981+ float distance_min = (float )p_render_data->scene_data ->main_cam_transform .origin .distance_to (lod_support_min);
982+ float distance_max = (float )p_render_data->scene_data ->main_cam_transform .origin .distance_to (lod_support_max);
983983
984984 if (distance_min * distance_max < 0.0 ) {
985985 // crossing plane
@@ -1388,7 +1388,6 @@ void RenderForwardClustered::_pre_opaque_render(RenderDataRD *p_render_data, boo
13881388 p_render_data->shadows .clear ();
13891389 p_render_data->directional_shadows .clear ();
13901390
1391- Plane camera_plane (-p_render_data->scene_data ->cam_transform .basis .get_column (Vector3::AXIS_Z), p_render_data->scene_data ->cam_transform .origin );
13921391 float lod_distance_multiplier = p_render_data->scene_data ->cam_projection .get_lod_multiplier ();
13931392 {
13941393 for (int i = 0 ; i < p_render_data->render_shadow_count ; i++) {
@@ -1407,7 +1406,7 @@ void RenderForwardClustered::_pre_opaque_render(RenderDataRD *p_render_data, boo
14071406 RENDER_TIMESTAMP (" Render OmniLight Shadows" );
14081407 // Cube shadows are rendered in their own way.
14091408 for (const int &index : p_render_data->cube_shadows ) {
1410- _render_shadow_pass (p_render_data->render_shadows [index].light , p_render_data->shadow_atlas , p_render_data->render_shadows [index].pass , p_render_data->render_shadows [index].instances , camera_plane, lod_distance_multiplier, p_render_data->scene_data ->screen_mesh_lod_threshold , true , true , true , p_render_data->render_info , viewport_size, p_render_data->scene_data ->cam_transform );
1409+ _render_shadow_pass (p_render_data->render_shadows [index].light , p_render_data->shadow_atlas , p_render_data->render_shadows [index].pass , p_render_data->render_shadows [index].instances , lod_distance_multiplier, p_render_data->scene_data ->screen_mesh_lod_threshold , true , true , true , p_render_data->render_info , viewport_size, p_render_data->scene_data ->cam_transform );
14111410 }
14121411
14131412 if (p_render_data->directional_shadows .size ()) {
@@ -1437,11 +1436,11 @@ void RenderForwardClustered::_pre_opaque_render(RenderDataRD *p_render_data, boo
14371436
14381437 // render directional shadows
14391438 for (uint32_t i = 0 ; i < p_render_data->directional_shadows .size (); i++) {
1440- _render_shadow_pass (p_render_data->render_shadows [p_render_data->directional_shadows [i]].light , p_render_data->shadow_atlas , p_render_data->render_shadows [p_render_data->directional_shadows [i]].pass , p_render_data->render_shadows [p_render_data->directional_shadows [i]].instances , camera_plane, lod_distance_multiplier, p_render_data->scene_data ->screen_mesh_lod_threshold , false , i == p_render_data->directional_shadows .size () - 1 , false , p_render_data->render_info , viewport_size, p_render_data->scene_data ->cam_transform );
1439+ _render_shadow_pass (p_render_data->render_shadows [p_render_data->directional_shadows [i]].light , p_render_data->shadow_atlas , p_render_data->render_shadows [p_render_data->directional_shadows [i]].pass , p_render_data->render_shadows [p_render_data->directional_shadows [i]].instances , lod_distance_multiplier, p_render_data->scene_data ->screen_mesh_lod_threshold , false , i == p_render_data->directional_shadows .size () - 1 , false , p_render_data->render_info , viewport_size, p_render_data->scene_data ->cam_transform );
14411440 }
14421441 // render positional shadows
14431442 for (uint32_t i = 0 ; i < p_render_data->shadows .size (); i++) {
1444- _render_shadow_pass (p_render_data->render_shadows [p_render_data->shadows [i]].light , p_render_data->shadow_atlas , p_render_data->render_shadows [p_render_data->shadows [i]].pass , p_render_data->render_shadows [p_render_data->shadows [i]].instances , camera_plane, lod_distance_multiplier, p_render_data->scene_data ->screen_mesh_lod_threshold , i == 0 , i == p_render_data->shadows .size () - 1 , true , p_render_data->render_info , viewport_size, p_render_data->scene_data ->cam_transform );
1443+ _render_shadow_pass (p_render_data->render_shadows [p_render_data->shadows [i]].light , p_render_data->shadow_atlas , p_render_data->render_shadows [p_render_data->shadows [i]].pass , p_render_data->render_shadows [p_render_data->shadows [i]].instances , lod_distance_multiplier, p_render_data->scene_data ->screen_mesh_lod_threshold , i == 0 , i == p_render_data->shadows .size () - 1 , true , p_render_data->render_info , viewport_size, p_render_data->scene_data ->cam_transform );
14451444 }
14461445
14471446 _render_shadow_process ();
@@ -2371,7 +2370,7 @@ void RenderForwardClustered::_render_buffers_debug_draw(const RenderDataRD *p_re
23712370 }
23722371}
23732372
2374- void RenderForwardClustered::_render_shadow_pass (RID p_light, RID p_shadow_atlas, int p_pass, const PagedArray<RenderGeometryInstance *> &p_instances, const Plane &p_camera_plane, float p_lod_distance_multiplier, float p_screen_mesh_lod_threshold, bool p_open_pass, bool p_close_pass, bool p_clear_region, RenderingMethod::RenderInfo *p_render_info, const Size2i &p_viewport_size, const Transform3D &p_main_cam_transform) {
2373+ void RenderForwardClustered::_render_shadow_pass (RID p_light, RID p_shadow_atlas, int p_pass, const PagedArray<RenderGeometryInstance *> &p_instances, float p_lod_distance_multiplier, float p_screen_mesh_lod_threshold, bool p_open_pass, bool p_close_pass, bool p_clear_region, RenderingMethod::RenderInfo *p_render_info, const Size2i &p_viewport_size, const Transform3D &p_main_cam_transform) {
23752374 RendererRD::LightStorage *light_storage = RendererRD::LightStorage::get_singleton ();
23762375
23772376 ERR_FAIL_COND (!light_storage->owns_light_instance (p_light));
@@ -2526,7 +2525,7 @@ void RenderForwardClustered::_render_shadow_pass(RID p_light, RID p_shadow_atlas
25262525
25272526 if (render_cubemap) {
25282527 // rendering to cubemap
2529- _render_shadow_append (render_fb, p_instances, light_projection, light_transform, zfar, 0 , 0 , reverse_cull_face, false , false , use_pancake, p_camera_plane, p_lod_distance_multiplier, p_screen_mesh_lod_threshold, Rect2 (), false , true , true , true , p_render_info, p_viewport_size, p_main_cam_transform);
2528+ _render_shadow_append (render_fb, p_instances, light_projection, light_transform, zfar, 0 , 0 , reverse_cull_face, false , false , use_pancake, p_lod_distance_multiplier, p_screen_mesh_lod_threshold, Rect2 (), false , true , true , true , p_render_info, p_viewport_size, p_main_cam_transform);
25302529 if (finalize_cubemap) {
25312530 _render_shadow_process ();
25322531 _render_shadow_end ();
@@ -2544,7 +2543,7 @@ void RenderForwardClustered::_render_shadow_pass(RID p_light, RID p_shadow_atlas
25442543
25452544 } else {
25462545 // render shadow
2547- _render_shadow_append (render_fb, p_instances, light_projection, light_transform, zfar, 0 , 0 , reverse_cull_face, using_dual_paraboloid, using_dual_paraboloid_flip, use_pancake, p_camera_plane, p_lod_distance_multiplier, p_screen_mesh_lod_threshold, atlas_rect, flip_y, p_clear_region, p_open_pass, p_close_pass, p_render_info, p_viewport_size, p_main_cam_transform);
2546+ _render_shadow_append (render_fb, p_instances, light_projection, light_transform, zfar, 0 , 0 , reverse_cull_face, using_dual_paraboloid, using_dual_paraboloid_flip, use_pancake, p_lod_distance_multiplier, p_screen_mesh_lod_threshold, atlas_rect, flip_y, p_clear_region, p_open_pass, p_close_pass, p_render_info, p_viewport_size, p_main_cam_transform);
25482547 }
25492548}
25502549
@@ -2557,7 +2556,7 @@ void RenderForwardClustered::_render_shadow_begin() {
25572556 scene_state.instance_data [RENDER_LIST_SECONDARY].clear ();
25582557}
25592558
2560- void RenderForwardClustered::_render_shadow_append (RID p_framebuffer, const PagedArray<RenderGeometryInstance *> &p_instances, const Projection &p_projection, const Transform3D &p_transform, float p_zfar, float p_bias, float p_normal_bias, bool p_reverse_cull_face, bool p_use_dp, bool p_use_dp_flip, bool p_use_pancake, const Plane &p_camera_plane, float p_lod_distance_multiplier, float p_screen_mesh_lod_threshold, const Rect2i &p_rect, bool p_flip_y, bool p_clear_region, bool p_begin, bool p_end, RenderingMethod::RenderInfo *p_render_info, const Size2i &p_viewport_size, const Transform3D &p_main_cam_transform) {
2559+ void RenderForwardClustered::_render_shadow_append (RID p_framebuffer, const PagedArray<RenderGeometryInstance *> &p_instances, const Projection &p_projection, const Transform3D &p_transform, float p_zfar, float p_bias, float p_normal_bias, bool p_reverse_cull_face, bool p_use_dp, bool p_use_dp_flip, bool p_use_pancake, float p_lod_distance_multiplier, float p_screen_mesh_lod_threshold, const Rect2i &p_rect, bool p_flip_y, bool p_clear_region, bool p_begin, bool p_end, RenderingMethod::RenderInfo *p_render_info, const Size2i &p_viewport_size, const Transform3D &p_main_cam_transform) {
25612560 uint32_t shadow_pass_index = scene_state.shadow_passes .size ();
25622561
25632562 SceneState::ShadowPass shadow_pass;
@@ -2615,7 +2614,6 @@ void RenderForwardClustered::_render_shadow_append(RID p_framebuffer, const Page
26152614 shadow_pass.pass_mode = pass_mode;
26162615
26172616 shadow_pass.rp_uniform_set = RID (); // will be filled later when instance buffer is complete
2618- shadow_pass.camera_plane = p_camera_plane;
26192617 shadow_pass.screen_mesh_lod_threshold = scene_data.screen_mesh_lod_threshold ;
26202618 shadow_pass.lod_distance_multiplier = scene_data.lod_distance_multiplier ;
26212619
0 commit comments