Up to date

This page is up to date for Godot 4.0. If you still find outdated information, please open an issue.

Resolution scaling

Why use resolution scaling?

With the ever-increasing rendering complexity of modern games, rendering at native resolution isn't always viable anymore, especially on lower-end GPUs.

Resolution scaling is one of the most direct ways to influence the GPU requirements of a scene. In scenes that are bottlenecked by the GPU (rather than by the CPU), decreasing the resolution scale can improve performance significantly. Resolution scaling is particularly important on mobile GPUs where performance and power budgets are limited.

While resolution scaling is an important tool to have, remember that resolution scaling is not intended to be a replacement for decreasing graphics settings on lower-end hardware. Consider exposing both resolution scale and graphics settings in your in-game menus.

See also

You can compare resolution scaling modes and factors in action using the 3D Antialiasing demo project.

Note

Resolution scaling is currently not available for 2D rendering, but it can be simulated using the viewport stretch mode. See Multiple resolutions for more information.

Resolution scaling options

In the advanced Project Settings' Rendering > Scaling 3D section, you can find several options for 3D resolution scaling:

Scaling mode

  • Bilinear: Standard bilinear filtering (default).

  • FSR 1.0: AMD FidelityFX Super Resolution 1.0. Slower, but higher quality compared to bilinear scaling. On very slow GPUs, the cost of FSR 1.0 may be too expensive to be worth using it over bilinear scaling.

Here are comparison images between native resolution, bilinear scaling with 50% resolution scale and FSR 1.0 scaling with 50% resolution scale:

../../_images/resolution_scaling_bilinear_0.5.png ../../_images/resolution_scaling_fsr1_0.5.png

FSR 1.0 upscaling works best when coupled with another form of antialiasing. Temporal antialiasing (TAA) or multisample antialiasing (MSAA) should preferably be used in this case, as FXAA does not add temporal information and introduces more blurring to the image.

Here's the same comparison, but with 4× MSAA enabled on all images:

../../_images/resolution_scaling_bilinear_msaa_4x_0.5.png ../../_images/resolution_scaling_fsr1_msaa_4x_0.5.png

Notice how the edge upscaling of FSR 1.0 becomes much more convincing once 4× MSAA is enabled.

Rendering scale

The Rendering > Scaling 3D > Scale setting adjusts the resolution scale. 1.0 represents the full resolution scale, with the 3D rendering resolution matching the 2D rendering resolution. Resolution scales below 1.0 can be used to speed up rendering, at the cost of a blurrier final image and more aliasing.

The rendering scale can be adjusted at run-time by changing the scaling_3d_scale property on a Viewport node.

Resolution scales above 1.0 can be used for supersample antialiasing (SSAA). This will provide antialiasing at a very high performance cost, and is not recommended for most use cases. See 3D antialiasing for more information.

The tables below list common screen resolutions, the resulting 3D rendering resolution and the number of megapixels that need to be rendered each frame depending on the rendering scale option. Rows are sorted from fastest to slowest in each table.

Note

The resolution scale is defined on a per-axis basis. For example, this means that halving the resolution scale factor will reduce the number of rendered megapixels per frame by a factor of 4, not 2. Therefore, very low or very high resolution scale factors can have a greater performance impact than expected.

1920×1080 (Full HD)

Resolution scale factor

3D rendering resolution

Megapixels rendered per frame

0.50

960×540