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: Standard bilinear filtering (default). This is used as a fallback when the current renderer doesn't support FSR 1.0 or FSR 2.2. Available in all renderers.
FSR 1.0: AMD FidelityFX Super Resolution 1.0. Slower, but higher quality compared to bilinear scaling. On very slow GPUs, the cost of FSR1 may be too expensive to be worth using it over bilinear scaling. Only available when using the Forward+ renderer.
FSR 2.2: AMD FidelityFX Super Resolution 2.2 (since Godot 4.2). Slowest, but even higher quality compared to FSR1 and bilinear scaling. On slow GPUs, the cost of FSR2 may be too expensive to be worth using it over bilinear scaling or FSR1. To match FSR2 performance with FSR1, you need to use a lower resolution scale factor. Only available when using the Forward+ renderer.
Hier sind Vergleichsbilder zwischen nativer Auflösung, bilinearer Skalierung mit 50 % Auflösungsfaktor, FSR1 und FSR2-Skalierung mit 50 % Auflösungsfaktor:
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:
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.
The rendering scale can be adjusted at runtime by changing the scaling_3d_scale
property on a Viewport node.
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 |
|---|---|---|
|
960×540 |
0.52 MPix |
|
1286×723 |
0.93 MPix |
|
1440×810 |
1.17 MPix |
|
1632×918 |
1.50 MPix |
|
1920×1080 |
2.07 MPix |
|
2553×1436 |
3.67 MPix |
|
2880×1620 |
4.67 MPix |
|
3840×2160 |
8.29 MPix |
2560×1440 (QHD)
Skalierungsfaktor der Auflösung |
3D-Rendering-Auflösung |
Pro Bild gerenderte Megapixel |
|---|---|---|
|
1280×720 |
0.92 MPix |
|
1715×964 |
1.65 MPix |
|
1920×1080 |
2.07 MPix |
|
2176×1224 |
2.66 MPix |
|
2560×1440 |
3.69 MPix |
|
3404×1915 |
6.52 MPix |
|
3840×2160 |
8.29 MPix |
|
5120×2880 |
14.75 MPix |
3840×2160 (Ultra HD "4K")
Skalierungsfaktor der Auflösung |
3D-Rendering-Auflösung |
Pro Bild gerenderte Megapixel |
|---|---|---|
|
1920×1080 |
2.07 MPix |
|
2572×1447 |
3.72 MPix |
|
2880×1620 |
4.67 MPix |
|
3264×1836 |
5.99 MPix |
|
3840×2160 |
8.29 MPix |
|
5107×2872 |
14.67 MPix |
|
5760×3240 |
18.66 MPix |
|
7680×4320 |
33.18 MPix |
FSR-Schärfe
This is only available in the Forward+ renderer, not the Mobile or Compatibility renderers.
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
This is only available in the Forward+ and Mobile renderers, not the Compatibility renderer.
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: log2f(min(scaling_3d_scale, 1.0)) + custom_texture_mipmap_bias
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.
The texture LOD bias can manually be changed by adjusting the Rendering >
Textures > Default Filters > Texture Mipmap Bias advanced project setting. It
can also be changed at runtime on Viewports by
adjusting the texture_mipmap_bias property.
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:
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.