Up to date

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

Auflösungsskalierung

Warum Auflösungsskalierung verwenden?

Mit der ständig zunehmenden Komplexität moderner Spiele ist das Rendern in nativer Auflösung nicht mehr immer praktikabel, vor allem nicht auf leistungsschwächeren GPUs.

Die Auflösungsskalierung ist eine der direktesten Möglichkeiten, die GPU-Anforderungen einer Szene zu beeinflussen. In Szenen, in denen die GPU (und nicht die CPU) einen Bottleneck darstellt, kann eine Verringerung der Skalierung der Auflösung die Performance erheblich verbessern. Auflösungsskalierung ist besonders wichtig für mobile Grafikprozessoren, bei denen Performance und Energiebudget begrenzt sind.

Auflösungsskalierung ist zwar ein wichtiges Hilfsmittel, aber denken Sie daran, dass Auflösungsskalierung nicht als Ersatz für die Senkung der Grafikeinstellungen auf leistungsschwächerer Hardware gedacht ist. Ziehen Sie in Erwägung, sowohl Auflösungsskalierung als auch die Grafikeinstellungen in den Menüs Ihres Spiels anzubieten.

Siehe auch

Sie können die Auflösungsskalierungsmodi und -faktoren in Aktion vergleichen, indem Sie das 3D Antialiasing-Demoprojekt verwenden.

Bemerkung

Auflösungsskalierung ist derzeit nicht für 2D-Rendering verfügbar, kann aber mit dem Viewport-Stretch-Modus simuliert werden. Siehe Mehrere Auflösungen für weitere Informationen.

Optionen für die Auflösungsskalierung

Im Abschnitt Rendern > 3D-Skalierung der erweiterten Projekteinstellungen finden Sie mehrere Optionen für die Skalierung der 3D-Auflösung:

Skalierungsmodus

  • Bilinear: Standardmäßige bilineare Filterung (Default).

  • FSR 1.0: AMD FidelityFX Super Resolution 1.0. Langsamer, aber qualitativ besser als die bilineare Skalierung. Auf sehr langsamen GPUs können die Kosten für FSR1 zu hoch sein, als dass es sich lohnen würde, es gegenüber der bilinearen Skalierung einzusetzen.

  • FSR 2.2: AMD FidelityFX Super Resolution 2.2 (seit Godot 4.2). Am langsamsten, aber mit noch höherer Qualität im Vergleich zu FSR1 und bilinearer Skalierung. Auf langsamen GPUs können die Kosten für FSR2 zu hoch sein, als dass es sich lohnen würde, es gegenüber der bilinearen Skalierung oder FSR1 einzusetzen. Um die Performance von FSR2 mit FSR1 zu vergleichen, müssen Sie einen niedrigeren Skalierungsfaktor für die Auflösung verwenden.

Hier sind Vergleichsbilder zwischen nativer Auflösung, bilinearer Skalierung mit 50 % Auflösungsfaktor, FSR1 und FSR2-Skalierung mit 50 % Auflösungsfaktor:

../../_images/resolution_scaling_bilinear_0.5.png ../../_images/resolution_scaling_fsr1_0.5.png ../../_images/resolution_scaling_fsr2_0.5.webp

FSR1-Upscaling funktioniert am besten, wenn es mit einer anderen Form von Antialiasing gekoppelt wird. In diesem Fall sollte vorzugsweise temporales Antialiasing (TAA) oder Multisample-Antialiasing (MSAA) verwendet werden, da FXAA keine zeitlichen Informationen hinzufügt und dem Bild mehr Unschärfe zufügt.

Andererseits bietet der FSR2 sein eigenes temporales Antialiasing. Das bedeutet, dass Sie keine anderen Antialiasing-Methoden aktivieren müssen, damit das resultierende Bild geglättet aussieht. Die Projekteinstellung TAA verwenden wird ignoriert, wenn FSR2 als 3D-Skalierungsmethode verwendet wird, da das temporale Antialiasing von FSR2 Vorrang hat.

Hier ist derselbe Vergleich, aber mit 4× MSAA aktiviert auf allen Bildern:

../../_images/resolution_scaling_bilinear_msaa_4x_0.5.png ../../_images/resolution_scaling_fsr1_msaa_4x_0.5.png ../../_images/resolution_scaling_fsr2_msaa_4x_0.5.webp

Beachten Sie, dass das Kanten-Upscaling von FSR1 viel überzeugender wird, wenn 4× MSAA aktiviert ist. FSR2 profitiert jedoch nicht sehr von der Aktivierung von MSAA, da es bereits ein temporales Antialiasing durchführt.

Rendering-Skalierung

Mit der Einstellung Rendern > Skalierung 3D > Skalierung wird die Auflösungsskalierung angepasst. 1,0 steht für die volle Auflösung, wobei die 3D-Rendering-Auflösung der 2D-Rendering-Auflösung entspricht. Auflösungsskalierungen unter 1.0 können verwendet werden, um das Rendering zu beschleunigen, allerdings zum Preis eines unschärferen Endbildes und mehr Aliasing.

Der Rendering-Skalierung kann zur Laufzeit angepasst werden, indem das Property scaling_3d_scale auf einem Viewport-Node geändert wird.

Auflösungsskalierungen oberhalb 1.0 können für Supersample Antialiasing (SSAA) verwendet werden. Dies bietet Antialiasing mit einem sehr hohen Performance-Aufwand und wird nicht empfohlen für die meisten Anwendungsfälle. Siehe 3D-Antialiasing für weitere Informationen.

In den folgenden Tabellen sind gängige Bildschirmauflösungen, die resultierende 3D-Rendering-Auflösung und die Anzahl der Megapixel aufgeführt, die je nach Rendering-Skalierungsoption pro Frame gerendert werden müssen. Die Zeilen sind in jeder Tabelle vom schnellsten zum langsamsten sortiert.

Bemerkung

Die Auflösungsskalierung wird auf einer pro Achse-Basis definiert. Das bedeutet zum Beispiel, dass eine Halbierung des Auflösungsskalierungsfaktors die Anzahl der gerenderten Megapixel pro Frame um den Faktor 4 und nicht um den Faktor 2 reduziert. Daher können sehr niedrige oder sehr hohe Auflösungsskalierungsfaktoren einen größeren Einfluss auf die Performance haben als erwartet.

1920×1080 (Full HD)

Skalierungsfaktor der Auflösung

3D-Rendering-Auflösung

Pro Bild gerenderte Megapixel

0.50

960×540

0.52 MPix

0.67

1286×723

0.93 MPix

0.75

1440×810

1.17 MPix

0.85

1632×918

1.50 MPix

1.00 (nativ)

1920×1080

2.07 MPix

1.33 (Super-Sampling)

2553×1436

3.67 MPix

1.50 (Super-Sampling)

2880×1620

4.67 MPix

2.00 (Super-Sampling)

3840×2160

8.29 MPix

2560×1440 (QHD)

Skalierungsfaktor der Auflösung

3D-Rendering-Auflösung

Pro Bild gerenderte Megapixel

0.50

1280×720

0.92 MPix

0.67

1715×964

1.65 MPix

0.75

1920×1080

2.07 MPix

0.85

2176×1224

2.66 MPix

1.00 (nativ)

2560×1440

3.69 MPix

1.33 (Super-Sampling)

3404×1915

6.52 MPix

1.50 (Super-Sampling)

3840×2160

8.29 MPix

2.00 (Super-Sampling)

5120×2880

14.75 MPix

3840×2160 (Ultra HD "4K")

Skalierungsfaktor der Auflösung

3D-Rendering-Auflösung

Pro Bild gerenderte Megapixel

0.50

1920×1080

2.07 MPix

0.67

2572×1447

3.72 MPix

0.75

2880×1620

4.67 MPix

0.85

3264×1836

5.99 MPix

1.00 (nativ)

3840×2160

8.29 MPix

1.33 (Super-Sampling)

5107×2872

14.67 MPix

1.50 (Super-Sampling)

5760×3240

18.66 MPix

2.00 (Super-Sampling)

7680×4320

33.18 MPix

FSR-Schärfe

Wenn Sie die Skalierungsmodi FSR1 oder FSR2 verwenden, kann die Schärfe über die erweiterte Projekteinstellung Rendern > Skalierung 3D > FSR-Schärfe gesteuert werden.

Die Intensität ist im Vergleich zu den meisten anderen Schärfereglern invertiert: niedrigere Werte führen zu einem schärferen Bild, während höhere Werte die Wirkung des Schärfefilters verringern. Der Wert 0.0 ist der schärfste, während 2.0 der am wenigsten scharfe ist. Der Defaultwert 0.2 bietet ein Gleichgewicht zwischen der Erhaltung der Schärfe des Originalbildes und der Vermeidung von zusätzlichen Aliasing-Effekten durch Überschärfung.

Bemerkung

Wenn Sie die Schärfung beim Rendern in nativer Auflösung verwenden möchten, ist es in Godot derzeit nicht möglich, die Schärfungskomponente von FSR1 (RCAS) unabhängig von der Hochskalierungskomponente (EASU) zu verwenden.

Als Abhilfe können Sie die 3D-Rendering-Skalierung auf 0,99 setzen, den Skalierungsmodus auf FSR 1.0 einstellen und dann die FSR-Schärfe nach Bedarf anpassen. Auf diese Weise können Sie FSR1 verwenden und gleichzeitig mit einer nahezu nativen Auflösung rendern.

Alternativ können Sie den Skalierungsmodus auf FSR 2.2 einstellen, wobei die 3D-Rendering-Skalierung auf 1.0 gesetzt wird, wenn Sie genügend GPU-Spielraum haben. Dies bietet ebenfalls ein hochwertiges temporales Antialiasing. Die Einstellung FSR Sharpness bleibt in diesem Fall funktionsfähig.

Mipmap-Bias

Godot verwendet automatisch einen negative Textur-Mipmap-Bias, wenn die 3D-Auflösungsskalierung unter 1.0 gesetzt wird. Dies ermöglicht eine bessere Erhaltung von Texturdetails auf Kosten eines körnigen Aussehens bei detaillierten Texturen.

Der Textur-LOD-Bias wirkt sich derzeit sowohl auf das 2D- als auch auf das 3D-Rendering in gleicher Weise aus. Beachten Sie jedoch, dass sie sich nur auf Texturen mit aktivierten Mipmaps auswirkt. Texturen, die in 2D verwendet werden, haben standardmäßig keine Mipmaps aktiviert, was bedeutet, dass nur das 3D-Rendering betroffen ist, es sei denn, Sie haben Mipmaps für 2D-Texturen im Import-Dock aktiviert.

Die Formel zur Bestimmung des Textur-Mipmap-Bias lautet: TODO

Um der Unschärfe einiger Antialiasing-Methoden entgegenzuwirken, fügt Godot auch einen -0.25 Offset hinzu, wenn FXAA aktiviert ist, und einen -0.5 Offset, wenn TAA aktiviert ist. Wenn beide gleichzeitig aktiviert sind, wird ein -0.75 Offset verwendet. Dieser Mipmap-Bias-Offset wird vor dem Auflösungsskalierungs-Offset angewendet, so dass er sich nicht abhängig von der Auflösungsskala ändert.

Der Textur-LOD-Bias kann manuell durch Anpassen der erweiterten Projekteinstellung Rendern > Texturen > Standardfilter > Textur-Mipmap-Bias geändert werden. Er kann auch zur Laufzeit auf Viewports geändert werden, indem die Property texture_mipmap_bias angepasst wird.

Warnung

Die manuelle Anpassung des Mipmap-LOD-Bias kann in bestimmten Szenarien nützlich sein, sollte aber sorgfältig durchgeführt werden, um zu verhindern, dass das endgültige Bild bei Bewegung körnig aussieht.

Ein negatives LOD-Bias der Mipmaps kann auch die Performance verringern, da Mips mit höherer Auflösung in größerer Entfernung abgetastet werden müssen. Empfohlene Werte für einen manuellen Offset liegen zwischen -0.5 und 0.0.

Ein positiver Mipmap-LOD-Bias lässt Mipmap-Texturen unschärfer erscheinen als beabsichtigt. Dies kann die Performance leicht verbessern, wird aber ansonsten nicht empfohlen, da der Verlust an visueller Qualität den Performance-Gewinn in der Regel nicht wert ist.

Das folgende Beispiel zeigt einen extremen Fall mit einem LOD-Bias der Mipmap von -1.0 und deaktivierter anisotroper Filterung, um den Unterschied deutlicher zu machen:

../../_images/resolution_scaling_texture_mipmap_bias_comparison.png

Fehlersuche

Die Performance nimmt nicht wesentlich zu, wenn die Auflösungsskalierung verringert wird

Wenn sich die Performance nicht wesentlich erhöht, wenn die Auflösungsskalierung auf einen Wert wie 0.5 verringert wird, bedeutet dies wahrscheinlich, dass das Performance-Bottleneck an anderer Stelle in Ihrer Szene liegt. Zum Beispiel könnte Ihre Szene zu viele Zeichenaufrufe haben, wodurch ein CPU-Bottleneck entsteht. Ebenso kann es sein, dass Sie zu viele Grafikeffekte aktiviert haben, die Ihr Grafikprozessor nicht verarbeiten kann (wie SDFGI, SSAO oder SSR).

Weitere Informationen finden Sie in den Performance-Tutorials.