Superwide monitors support

In a project constrained to 16:9, we aim to add support for superwide monitors.

The intended behaviour is a centered 16:9 frame with letterbox presented at native resolution or a fraction of it.

We use the Constrain Aspect Ratio setting in camera to add letterboxing.

Setting the resolution using UGameSettings results in a stretched image (letterbox inside letterbox) and only works if the resolution is set to match monitor native resolution.

Setting any other 21:9 resolutions on a 21:9 monitor results in stretching even when the system display resolution is matching.

  1. What is the correct way to set superwide resolutions without stretching?
  2. Using Constrain Aspect Ratio in camera creates issues with superwide monitors (and other aspect ratios). Is there any way to fix this issue?

We observed that NVIDIA Control Panel scaling settings affect the result - the behavior improves when set to “No Scaling”.

Is there a way to control the behavior directly from Unreal Engine without asking the user to modify system settings?

[Image Removed]

[Attachment Removed]

Steps to Reproduce
Note: Issue is also valid for 5.5.4

Follow the steps using desktop with a superwide monitor (21:9 aspect)

  1. Open sample project based on TPP template and package for Win64 (development)
  2. Open packaged build.
  3. Use keys 1-6 to switch between resolutions as explained in HUD in top-left corner of the screen
  4. Note how 21:9 resolutions other than native stretch and draw incorrectly

Note: the resolution setting logic is in the level Blueprint

[Image Removed]

[Attachment Removed]

Hello [mention removed]​,

Thanks for the repro project, it was very useful. I’ve tested this on an ultrawide (21:9) monitor and was able to reproduce the behavior you’re describing.

What’s happening here isn’t that Constrain Aspect Ratio stops working. Instead, when switching to a non-native fullscreen resolution with a different aspect ratio, the rendered image is being scaled by the OS / GPU driver (for example, NVIDIA scaling) after Unreal has already rendered the frame. At that stage, the engine no longer controls how the backbuffer is presented on the physical display, which is why the 16:9 image ends up stretched and the letterboxing appears to be lost.

If you need to change from a native ultrawide resolution to a specific 16:9 resolution while preserving the aspect ratio and letterboxing, one supported option is to set the Fullscreen Mode to Windowed when applying the resolution change. In windowed mode, the window itself is resized to the requested resolution, no display-level scaling is applied, and the aspect ratio is preserved.

Please let me know if this information helps your case.

Best,

Francisco

[Attachment Removed]