Original-URL des Artikels: https://www.golem.de/news/display-scanout-engine-xbox-streck-das-bild-1404-105525.html    Veröffentlicht: 14.04.2014 09:14    Kurz-URL: https://glm.io/105525

Scaler

Xbox, streck das Bild!

Die Xbox One berechnet viele Spiele nicht nativ in 1080p. Stattdessen vergrößern ein Hardware-Scaler oder einige Softwareschritte niedrigere Auflösungen. Beide Lösungen bieten Vor- und Nachteile, welche die Bildqualität oder Bildrate beeinflussen.

Bildqualität, Grafikqualität und Bildrate - diese drei Faktoren muss jedes Spielestudio beachten, wenn es einen Konsolentitel entwickelt: Mehr Effekte und eine höhere Auflösung bedingen eine geringere Bildrate. Soll ein Spiel hingegen mit 60 fps laufen, ist es ein probates Mittel, die Anzahl und die Rechendauer pro Pixel zu verringern.

Bei der Xbox One kommt der Abwägung der drei Faktoren besondere Aufmerksamkeit zu, da die Microsoft-Konsole durch ihre 32 MByte ESRAM (Embedded Static Random Access Memory) zwar bei vielen kleinen Lese- und Schreiboperationen schnell ist, jedoch mehrere große Rendertargets mit 1080p-Auflösung nicht vorhalten kann. Zudem ist die Rechenleistung der Xbox-Grafikeinheit deutlich geringer als die der Playstation 4.

Deshalb entscheiden sich Entwicklerstudios für Auflösungen unterhalb der 1080p-Grenze. Assassin's Creed 4 etwa berechnet die Xbox One in 1.600 x 900 Pixeln in Kombination mit einer wenig leistungsintensiven Postprocessing-Kantenglättung. Der so entstandene Framebuffer wird in einer von drei Display Planes (eine Art Frontbuffer) gespeichert. Die Nutzeroberfläche, das Head-up-Display, rendert Assassin's Creed 4 in derselben Auflösung und schreibt sie in eine weitere Display Plane.

Da die Xbox One jedoch nur ein 720p- oder ein 1080p-Bild an den Fernseher weitergeben kann, müssen die Display Planes je nach Ausgabeauflösung herunter- respektive hochskaliert und verschmolzen werden. Bei der Xbox 360 machen dies die Pixelshader der Xenos-GPU, bei der Xbox One die Display Scanout Engine (DCE).

Diese Einheit im Displaybereich des SoC der Konsole skaliert unabhängig von den Shader-Einheiten die Framebuffer. Die Display Scanout Engine vergrößert oder verkleinert das Bild, ohne wertvolle Rechenzeit zu kosten. Diese ist somit frei, um die Bildqualität (Auflösung sowie Kantenglättung), Grafikqualität (Effekte etc.) oder die Zahl der Bilder pro Sekunde zu erhöhen.



Bilinear, Lanczos oder Nice-Filter

"Wir haben bis Februar einen Lanczos-Filter mit vier Taps verwendet, dieser produzierte aber Artefakte", sagten Microsofts Xbox-One-Ingenieure Golem.de. Je mehr Taps der Lanczos-Filter umfasst, desto besser wird das Bild beim Upscaling geglättet. Die zunehmende Schärfe an Kontrastkanten aber führt zu einem stärkeren Flimmern in Bewegung ("ringing").

Microsoft hatte mit dem Xbox-Update im Februar die Software der Display Scanout Engine überarbeitet. Seit der Aktualisierung ist das Bild etwas unschärfer und flimmert weniger, zudem hat Microsoft die Gammaeinstellung der Display Planes korrigiert. Diese verursachte zu dunkles Schwarz ("crushed black") und trat nur beim Upscaling von Auflösungen unterhalb von 1080p auf. Spiele mit nativen 1.920 x 1.080 Pixeln wie Forza 5 zeigen daher keine fehlerhaften Farben.

Da wir unsere Retail-Version einer Xbox One gegen ein Dev-Kit eingetauscht haben, können wir selbst keine Screenshots des DCE-Updates zeigen. Die Kollegen von Digital Foundry jedoch haben die Bildqualität der Display Scanout Engine verglichen und deutliche Unterschiede festgestellt:

Bisher hatten Spielentwickler keinen Einfluss auf die Skalierung der Display Scanout Engine, sie konnten per Xbox-API nur angeben, welche Ausgangsgrößen die Framebuffer in den Display Planes haben. Mit dem kommenden April-SDK ändert sich dies: "Dann stehen sieben verschiedene Filter zur Auswahl, weitere Anpassungen sind nicht möglich", sagten uns die Entwickler von Microsoft. Neben sechs Lanczos-Varianten mit vier bis zehn Taps und dem Nice-Filter von Jim Blinn können sich Entwickler auch für bilineares Upscaling entscheiden.

Was davon am besten ist, hängt vom jeweiligen Spiel ab: Titel mit vielen feinen Details, niedriger Auflösung und Postprocessing-Kantenglättung (wie Assassin's Creed 4) neigen mit einem 10-Tap-Lanczos eher zum Flimmern als solche, die eine Cartoon-Grafik mit einem 1080p-Framebuffer kombinieren (wie Rayman Legends). Die neuen Möglichkeiten der Display Scanout Engine sind ein Vorteil für die Spielestudios, da diese die Bildqualität nach dem Rendering noch etwas anpassen können, ohne Rechenzeit dafür aufwenden zu müssen.

Steht die Xbox One auf 720p-Ausgabe, findet übrigens bei Spielen mit höherer Auflösung ein Downscaling statt, das die Bildqualität steigert - jedoch nur, wenn nicht anschließend das TV-Gerät die Skalierung auf 1080p durchführt. Bei Assassin's Creed 4 ist ein 720p-Beamer statt eines 1080p-Fernsehers daher kurioserweise die bessere Wahl, wenn nur die Bildqualität zählt. Beim Downscaling wird das Bild von einer großen auf eine kleinere Auflösung heruntergerechnet, Filter fügen zusätzliche Informationen hinzu - ähnlich wie bei Supersampling.

Schnelle DCE für Titanen

Die durch die Display Scanout Engine eingesparte Rechenzeit ist bei Titeln, die mit möglichst konstanten 60 Frames pro Sekunde laufen sollen, ein wichtiger Aspekt: Um dies zu erreichen, darf die Rechenzeit pro Frame 16,7 Millisekunden nicht übersteigen, ansonsten sinkt die Bildrate. Studios legen während der Entwicklung einen Zielwert für die Bildrate fest und optimieren darauf die Darstellung.

Respawn Entertainment hat sich bei Titanfall für den Hardware-Scaler der Xbox One entschieden und versucht, die Bildqualität anderweitig zu erhöhen: Der Shooter läuft in 1.408 x 792 Pixeln mit 2x MSAA - das passt gerade noch in den ESRAM. Die Bildrate schwankt zwischen 40 und 60 fps, nur selten fällt sie in den 30er-Bereich ab.

Auf der Xbox 360 läuft Titanfall mit ähnlicher Bildrate, die Auflösung beträgt niedrige 1.040 x 600 Pixel mit 2x MSAA. Anders als bei der neuen Microsoft-Konsole sind in der Xbox 360 nur 10 MByte EDRAM verbaut, der Framebuffer samt MSAA ist gerade noch klein genug, um diese nicht zu sprengen. Das Upscaling auf 720p bedeutet außerdem eine zusätzliche Last für die Pixelshader der Xenos-GPU.

Interessant ist die Multisampling-Kantenglättung bei beiden Xbox-Versionen von Titanfall, die deutlich mehr Datentransferrate und Speicherplatz erfordert als Postprocessing-AA in 900p oder 1080p. Diese Option hat Respawn Entertainment verworfen, da der Vorteil von MSAA die bessere Geometrieglättung ist und die modifizierte Source-Engine mit Alpha-to-Coverage (A2C) auch Alpha-Test-Texturen wie Vegetation glättet.

Dadurch ist das bewegte Bild ruhiger und Gegner sind leichter auszumachen - das ist wichtig für flotte Shooter. MSAA fügt dem Bild zusätzliche Informationen hinzu, während Postprocessing-AA das fertige Bild nachbearbeitet und an kontrastreichen Kanten verwischt. Dadurch wird das Bild unschärfer, Flimmern in Bewegung wird kaum reduziert.

Folgerichtig ist die angekündigte Unterstützung von Temporal Approximate Anti-Aliasing (TXAA) für die PC-Version von Titanfall zu begrüßen, denn außer Supersampling Anti-Aliasing (SSAA) glättet keine Technik so gut in Bewegung. Die Bildschärfe leidet allerdings, und anders als SSAA "verschluckt" TXAA feine Texturdetails.



Cryteks Ryse-Lösung

Während Spiele wie Titanfall den Fokus eher auf die Frames per Second legen, hatte sich Crytek bei Ryse vorgenommen, Bild- und Grafikqualität ans Limit zu treiben. Das römische Schlachtenepos gilt als einer der schönsten Next-Gen-Titel, dazu mussten die Entwickler aber aus der Not eine Tugend machen.

Crytek hatte in Budapest mehrere Jahre am Kinect-Spiel Ryse für die Xbox 360 gearbeitet, den Titel im Zuge der Neuentwicklung für die Xbox One aber zurück ins Hauptstudio nach Frankfurt geholt. Die Display Scanout Engine der Konsole war zu diesem Zeitpunkt noch nicht per API ansprechbar, weswegen sich Crytek für eine GPU-Lösung entschied.

"Wir haben am Anfang Tests durchgeführt und das Spiel in 720p, 900p sowie 1080p gerendert. Die Screenshots mit der niedrigeren Auflösung skalierten wir dann für Vergleiche hoch", sagt Nicolas Schulz, Senior Rendering Engineer bei Crytek. "Interessanterweise gab es zwischen 900p und 1080p manchmal kaum einen Unterschied, wenngleich man es an bestimmten Stellen schon sah." Daher legte das Studio die Render-Auflösung auf 1.600 x 900 statt auf 1.920 x 1.080 Pixel fest, um die so freiwerdenden zusätzlichen 10 Millisekunden für eine höhere Bild- und Grafikqualität zu nutzen.

"Das ist letztendlich viel wertvoller als die leichte zusätzliche Schärfe", sagt Nicolas Schulz. Die aus Leistungsgründen vor dem Upscaling applizierte SMAA-1Tx-Kantenglättung sorgt für eine hohe Bildruhe, hierfür benötigt die Xbox One wie für die Tiefenunschärfe und die Umgebungslichtverdeckung rund 1,5 Millisekunden. Die Schattenberechnung verschlingt gar 5 Millisekunden, daher peilte Crytek während der Entwicklung 30 fps (33,3 Millisekunden pro Frame) an. In der Praxis liegt de Bildrate jedoch oft tiefer.

Das HUD erstellt die Konsole anders als bei Assassin's Creed 4 nativ in 1.920 x 1.080 Pixeln, die Nutzeroberfläche wird für den finalen Framebuffer über das von 900p auf 1080p hochskalierte Bild gelegt. Somit wird das HUD nicht unscharf. Insgesamt benötigt Cryteks GPU-Scaler nur eine Zeit von 0,3 Millisekunden pro Frame und belastet daher die GPU nur wenig.

"Wir machen einen bilinearen Texture-Lookup auf unserem Szenen Render Target, aber modifizieren die Texturkoordinaten mit einer Smoothstep-Funktion", erklärt der Crytek-Entwickler. Diese ergibt eine Mischung aus Nearest-Neighbor- und linearer Filterung, die dem Bild eine leichte Schärfe verleiht. Schulz betont, dass es beim Upscaling wichtig ist, Gammaeinstellungen und RGB-Farbraum zu berücksichtigen, damit es nicht zu Farbverschiebungen kommt.

Generell hat Crytek darauf geachtet, die Inhalte von Ryse vorab darauf zu optimieren, möglichst wenig Aliasing zu produzieren. So verzichteten die Grafiker, wann immer möglich, auf sehr kleine Dreiecke in weiter entfernten LoD-Stufen (das Level of Detail bestimmt, ab welcher Distanz welche Detailstufe dargestellt wird). Statt also die entfernte Geometrie mit Polygonen aufzubauen, hat das Studio viele vorgefilterte Normal Maps verwendet.

Einschätzung und Fazit

Der Hardware-Scaler, oder genauer gesagt die Display Scanout Engine der Xbox One, ist für das optische Gesamtergebnis der Spieldarstellung auf der Microsoft-Konsole ein wichtiger, aber nicht entscheidender Faktor. Anders als bei der Playstation 4 müssen Spielentwickler auf der Xbox One häufiger die Display Scanout Engine oder eine eigene CPU- respektive GPU-Lösung anwenden. Die geringere Rechenleistung und der mit 32 MByte eher knapp bemessene ESRAM erschweren bei besonders detailreichen Spielen mit großen Rendertargets eine native 1080p-Auflösung.

Prinzipiell bedeutet Upscaling immer einen Verlust von Bildqualität, der nur teilweise durch Filter oder eine vorab applizierte hochwertige Kantenglättung ausgeglichen wird. Wenn dann noch wie beim ursprünglichen Filter der Display Scanout Engine eine fehlerhafte Farbdarstellung oder ein Flimmern hinzukommen, leiden Bild- und Grafikqualität.

Die Effektdichte, die Qualität von Texturen, die Anzahl an Polygonen und eine schicke Beleuchtung ergeben zusammen mit einigen Render-Tricks die eigentliche Optik eines Spiels - diese ist mit den neuen Konsolen deutlich besser als bei der letzten Generation. Hierfür ist aber wie gehabt möglichst viel Rechenzeit pro Pixel und Frame notwendig, die notfalls durch eine geringere Auflösung erreicht wird. Der Display Scanout Engine fällt die undankbare Aufgabe zu, den Framebuffer hochzuskalieren, ohne vorherige Bemühungen und Berechnungen zu zerstören.

Dafür erleichtert der Scaler den Entwicklern die Programmierung, da sich diese stärker auf die Grafikqualität und die Bilder pro Sekunde konzentrieren können. Die mit dem April-SDK verfügbaren Upscaling-Filter dürften unserer Ansicht nach zudem für die meisten Studios eine gute Wahl sein. Entwicklern wie Crytek, die das letzte Quäntchen Qualität aus der Xbox One kitzeln möchten, steht alternativ die Option frei, eigene Scaler-Lösungen zu entwickeln.  (ms)


Verwandte Artikel:
Xbox One: Streamer können Gamepad mit Spieler teilen   
(02.03.2018, https://glm.io/133120 )
Micomsoft xRGB mini: Festliche Fürsorge für alte Pixel   
(24.12.2017, https://glm.io/131698 )
Always Connected PCs: Vielversprechender Windows-RT-Nachfolger mit Fragezeichen   
(09.03.2018, https://glm.io/133094 )
Xbox One: "186 Millionen Feinde in Ryse besiegt"   
(04.12.2013, https://glm.io/103143 )
Spielebranche: EA behält Titanfall und Star-Wars-Spiel dank Millionendeal   
(10.11.2017, https://glm.io/131083 )

© 1997–2020 Golem.de, https://www.golem.de/