@@ -2354,12 +2354,34 @@ void Node3DEditorViewport::_project_settings_changed() {
2354
2354
viewport->set_shadow_atlas_quadrant_subdiv (2 , Viewport::ShadowAtlasQuadrantSubdiv (atlas_q2));
2355
2355
viewport->set_shadow_atlas_quadrant_subdiv (3 , Viewport::ShadowAtlasQuadrantSubdiv (atlas_q3));
2356
2356
2357
- bool shrink = view_menu->get_popup ()->is_item_checked (view_menu->get_popup ()->get_item_index (VIEW_HALF_RESOLUTION));
2358
-
2359
- if (shrink != (subviewport_container->get_stretch_shrink () > 1 )) {
2360
- subviewport_container->set_stretch_shrink (shrink ? 2 : 1 );
2357
+ int shrink_factor;
2358
+ switch (int (EDITOR_GET (" editors/3d/viewport_resolution_scale" ))) {
2359
+ case 0 :
2360
+ // Auto (DPI-specific).
2361
+ // Use 1:2 render scale on hiDPI displays to improve performance, especially on integrated graphics.
2362
+ shrink_factor = EDSCALE >= 1.667 ? 2 : 1 ;
2363
+ break ;
2364
+ case 1 :
2365
+ // Very Low (1:4).
2366
+ shrink_factor = 4 ;
2367
+ break ;
2368
+ case 2 :
2369
+ // Low (1:3).
2370
+ shrink_factor = 3 ;
2371
+ break ;
2372
+ case 3 :
2373
+ // Medium (1:2).
2374
+ shrink_factor = 2 ;
2375
+ break ;
2376
+ case 4 :
2377
+ default :
2378
+ // Full (1:1).
2379
+ shrink_factor = 1 ;
2380
+ break ;
2361
2381
}
2362
2382
2383
+ subviewport_container->set_stretch_shrink (shrink_factor);
2384
+
2363
2385
// Update MSAA, screen-space AA and debanding if changed
2364
2386
2365
2387
const int msaa_mode = ProjectSettings::get_singleton ()->get (" rendering/anti_aliasing/quality/msaa" );
@@ -3034,12 +3056,6 @@ void Node3DEditorViewport::_menu_option(int p_option) {
3034
3056
view_menu->get_popup ()->set_item_checked (idx, current);
3035
3057
3036
3058
} break ;
3037
- case VIEW_HALF_RESOLUTION: {
3038
- int idx = view_menu->get_popup ()->get_item_index (VIEW_HALF_RESOLUTION);
3039
- bool current = view_menu->get_popup ()->is_item_checked (idx);
3040
- current = !current;
3041
- view_menu->get_popup ()->set_item_checked (idx, current);
3042
- } break ;
3043
3059
case VIEW_INFORMATION: {
3044
3060
int idx = view_menu->get_popup ()->get_item_index (VIEW_INFORMATION);
3045
3061
bool current = view_menu->get_popup ()->is_item_checked (idx);
@@ -3481,12 +3497,6 @@ void Node3DEditorViewport::set_state(const Dictionary &p_state) {
3481
3497
_menu_option (VIEW_FRAME_TIME);
3482
3498
}
3483
3499
}
3484
- if (p_state.has (" half_res" )) {
3485
- bool half_res = p_state[" half_res" ];
3486
-
3487
- int idx = view_menu->get_popup ()->get_item_index (VIEW_HALF_RESOLUTION);
3488
- view_menu->get_popup ()->set_item_checked (idx, half_res);
3489
- }
3490
3500
if (p_state.has (" cinematic_preview" )) {
3491
3501
previewing_cinema = p_state[" cinematic_preview" ];
3492
3502
@@ -3537,7 +3547,6 @@ Dictionary Node3DEditorViewport::get_state() const {
3537
3547
d[" gizmos" ] = view_menu->get_popup ()->is_item_checked (view_menu->get_popup ()->get_item_index (VIEW_GIZMOS));
3538
3548
d[" information" ] = view_menu->get_popup ()->is_item_checked (view_menu->get_popup ()->get_item_index (VIEW_INFORMATION));
3539
3549
d[" frame_time" ] = view_menu->get_popup ()->is_item_checked (view_menu->get_popup ()->get_item_index (VIEW_FRAME_TIME));
3540
- d[" half_res" ] = subviewport_container->get_stretch_shrink () > 1 ;
3541
3550
d[" cinematic_preview" ] = view_menu->get_popup ()->is_item_checked (view_menu->get_popup ()->get_item_index (VIEW_CINEMATIC_PREVIEW));
3542
3551
if (previewing) {
3543
3552
d[" previewing" ] = EditorNode::get_singleton ()->get_edited_scene ()->get_path_to (previewing);
@@ -4066,8 +4075,6 @@ Node3DEditorViewport::Node3DEditorViewport(Node3DEditor *p_spatial_editor, Edito
4066
4075
view_menu->get_popup ()->add_check_shortcut (ED_SHORTCUT (" spatial_editor/view_fps" , TTR (" View Frame Time" )), VIEW_FRAME_TIME);
4067
4076
view_menu->get_popup ()->set_item_checked (view_menu->get_popup ()->get_item_index (VIEW_ENVIRONMENT), true );
4068
4077
view_menu->get_popup ()->add_separator ();
4069
- view_menu->get_popup ()->add_check_shortcut (ED_SHORTCUT (" spatial_editor/view_half_resolution" , TTR (" Half Resolution" )), VIEW_HALF_RESOLUTION);
4070
- view_menu->get_popup ()->add_separator ();
4071
4078
view_menu->get_popup ()->add_check_shortcut (ED_SHORTCUT (" spatial_editor/view_audio_listener" , TTR (" Audio Listener" )), VIEW_AUDIO_LISTENER);
4072
4079
view_menu->get_popup ()->add_check_shortcut (ED_SHORTCUT (" spatial_editor/view_audio_doppler" , TTR (" Enable Doppler" )), VIEW_AUDIO_DOPPLER);
4073
4080
view_menu->get_popup ()->set_item_checked (view_menu->get_popup ()->get_item_index (VIEW_GIZMOS), true );
0 commit comments