Jump to content
Sign in to follow this  
PUBG_TecK

Konsolen-Entwickler-Bericht Nr. 2

Recommended Posts

Hallo zusammen!
 

Willkommen zur zweiten Ausgabe des Konsolen-Entwickler-Berichts!

All jene, die unseren ersten Beitrag dieser Reihe verpasst haben, in dem wir uns mit dem „Sichtspektrum und dessen Auswirkung auf die Performance des Spiels“ auseinandergesetzt haben, können diesen hier nachlesen: [Xbox] [PS4]

 

Im heutigen Beitrag befassen wir uns mit der GPU-Zeit und verschiedenen Faktoren, die bei der Reduzierung der GPU-Zeit eine Rolle spielen.

Was ist die GPU-Zeit?

Vereinfacht gesagt, ist die GPU-Zeit jene Zeit, welche die GPU (Graphics Processing Unit) benötigt, um ein einzelnes Bild zu berechnen. Je mehr GPU-Berechnungen nötig sind, desto länger ist die GPU-Zeit. Die GPU-Zeiten wirken sich direkt auf die FPS (Frames Per Second/Bilder pro Sekunde) beim Spielen aus. Erhöhte GPU-Zeiten senken somit direkt die Performance. Es gibt zahlreiche Faktoren, die sich auf die GPU-Zeit auswirken, einschließlich der Zeit, die benötigt wird, um die vielen verschiedenen Elemente zu rendern, die auf dem Bildschirm zu sehen sind. 

 

Die GPU ist ein Prozessor, der sich um die Computergrafik kümmert. Sie zeichnet pro Bild Milltionen von Pixeln – und das viele Male pro Sekunde. Die Anzahl der Pixel, die auf dem Bildschirm zu sehen sind, wird durch die eingestellte Auflösung bestimmt. Je höher die Auflösung, desto mehr Pixel und Details können pro Bild gezeigt werden und desto mehr Rechenleistung wird benötigt.

 

Wenn man eine 4K-Auflösung mit der häufig genutzten 1080p-Auflösung vergleicht, gibt es bei 4K 4-mal so viele Pixel wie bei 1080p. Das bedeutet dass die von der GPU berechnete Datenmenge ebenfalls 4-mal so groß ist. Das erhöht natürlich die GPU-Zeit.

Dynamische Auflösung

 

Hinweis: Die Option „Dynamische Auflösung“ wird derzeit optimiert und dann mit einem künftigen Update für PS4 und Xbox One zur Verfügung stehen.


Die dynamische Auflösung ist eine Funktion, durch welche die Auflösung dynamisch geändert wird, und zwar abhängig von den nötigen GPU-Berechnungen. Die Auflösung wird hierbei in Echtzeit zwischen 1440p und 4K gewechselt. Auch die Bildwiederholungsrate ist dabei variabel. Befindet Ihr Euch in einem Match, und die GPU hat eine hohe Rechenlast, wird die Auflösung vorübergehend automatisch verringert, um eine stabile Performance zu gewährleisten.

 

Mit der folgenden Grafik möchten wir Euch zeigen, wie sich die dynamische Auflösung auf die GPU-Zeiten auswirkt. Bitte beachtet dabei, dass die Grafik die GPU-Zeit in Millisekunden anzeigt. Es werden nicht die Bilder pro Sekunde dargestellt. In diesem Fall bedeutet das also, dass kleinere Werte besser sind.

image.png.d737b15ff809c26821f1d2f6edda505e.png
*Die oben gezeigte GPU-Zeit bezieht sich auf die Berechnung mit einer Xbox One X.


Mit eingeschalteter dynamischer Auflösung lässt sich eine Verbesserung der GPU-Zeit von 20 % beobachten. Eine geringere GPU-Zeit bedeutet, dass die GPU die einzelnen Bilder schneller berechnen kann. Und das führt zu einer verbesserten und stabileren Performance!

GPU Instance Culling (Entfernen von GPU-Instanzen)

Das GPU Instance Culling wird seit Version 1.0 für Xbox One X und PS4 Pro genutzt, und seit der ursprünglichen Implementierung haben wir viele Verbesserungen daran vorgenommen, um die Performance zu steigern. Künftig werden wir noch weitere Verbesserungen des GPU Instance Culling umsetzen, auch im nächsten Live-Server-Update. Weiter unten in diesem Abschnitt finden sich weitere Informationen über die bevorstehenden Änderungen.

 

Bitte beachtet, dass diese anstehenden Verbesserungen des GPU Instance Culling derzeit noch für die PS4 der 1. Generation sowie für Xbox One der 1. Generation und S-Modelle optimiert und erst später implementiert werden.

 

 

 

In Erangel, Sanhok und Vikendi gibt es viele dichte Wälder. Um die bestmögliche Performance zu erreichen, werden Bäume desselben Modells mittels „Instancing“ gerendert. Dadurch wird die Rechenzeit fürs Zeichnen eines einzelnen Baumes verringert. Der unten gezeigte Wald kann von der GPU also gezeichnet werden, ohne dass sie auf weitere Zeichenaufrufe (ressourcenintensive Anfragen an die GPU zum Ausführen von Aufgaben) warten muss.

 



image.png.82ed39f4a1da0ee6bdf02e707ba75b88.png

Wird die Anzahl der Zeichenaufrufe verringert, indem so viele Bäume desselben Modells innerhalb des Sichtbereichs wie möglich instanziert werden, so sinkt der Rechenaufwand für das Zeichnen des Waldes. Das führt dann zu einer verbesserten Performance.

Was passiert aber nun, wenn man durch ein 8x-Zielfernrohr schaut?



image.png.91c358e84af1e600801d17c8b76ab3e4.png
Die Detailstufe („Level of Detail“ bzw. „LOD“) spielt eine große Rolle beim Erreichen der gewünschten Performance, da Objekte abhängig von ihrer Entfernung zum Spieler in unterschiedlicher Qualität gezeichnet werden. Bei normaler Sicht (ohne Zielfernrohr) werden nur die nächsten Bäume der ersten Instanz mit LOD 0 (höchste Detailstufe) gezeichnet. Nutzt man jedoch ein Zielfernrohr, werden alle Instanzen, einschließlich der anvisierten Bäume, mit LOD 0 gezeichnet. Dadurch erhöht sich die GPU-Zeit erheblich, was zu geringerer Performance führt.

 

Bei der Nutzung des Zielfernrohrs wird die Sichtweite erhöht, sodass ferne Bäume in größerer Detailstufe zu sehen sind. Im obigen Bild sieht man durch das Zielfernrohr nur 3 bis 7 Bäume, die GPU versucht jedoch jede Instanz zu zeichnen, die im Sichtspektrum liegt. Die Verwendung von Instanzen ist in diesem Fall also ein erheblicher Rückschlag, denn es werden unnötige Bäume gezeichnet. Würde man die Instanzen nicht nutzen, wären es nur 7 Bäume.


Die Detailstufe (LOD) wird proportional zur Größe auf dem Bildschirm bestimmt. Und die Distanz des Objekts zum Spieler legt fest, ob das Objekt überhaupt gezeichnet wird – dies nennt man „Culling“.

Mit einigen bevorstehenden Optimierungen des GPU Instance Culling möchten wir die Performance verbessern. Und zwar sowohl dadurch, dass wir bei Objekten, die nicht auf dem Bildschirm zu sehen sind, keine hohe Detailstufe rendern, als auch durch die Entwicklung eines raffinierteren Vorgangs zur Bestimmung von Objekten, die beim Instanzieren berechnet werden, und deren Reihenfolge dabei. Da die GPU alle Objekt-LODs kennt, werden nach der Untersuchung aller Instanzen nur die niedrigeren LOD-Modelle zum Instanzieren ausgewählt. Anschließend wird der Rendering-Vorgang von vorne nach hinten durchgeführt. Diesen Vorgang des Auswählens und Abarbeitens nennen wir „GPU Instance Culling“.

Die folgende Grafik vergleicht die GPU-Zeiten bei ein- und ausgeschaltetem GPU Instance Culling und einer 4K-Auflösung.

image.png.49fface154d944f34baa52d59b8e993a.png
*Gemessene GPU-Zeit bei Verwendung eines 8x-Zielfernrohrs?
*Die oben gezeigte GPU-Zeit bezieht sich auf die Berechnung mit einer Xbox One X.

Das Ergebnis zeigt mehr Stabilität und eine um circa 30 % verbesserte GPU-Zeit bei eingeschaltetem GPU Instance Culling. Ohne das GPU Instance Culling sind die GPU-Zeiten sichtlich länger und schwanken auch stark.

 

Wir hoffen, dass Euch der dieswöchige Beitrag gefallen hat. Eine weitere Ausgabe sollte dann in zwei Wochen folgen!

Vielen Dank!

PUBG

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...