Thema:
Re:Shader Stutter (edited x2) flat
Autor: membran
Datum:03.05.21 22:10
Antwort auf:Shader Stutter von Schlomo

>Ich spiele It Takes Two, ein UE4-Spiel, mit 120Hz VRR, und es läuft auf meiner RTX3080 eigentlich mit sehr hoher Framerate, aber immer wenn ein neues Gebiet betreten oder ein neues Asset ins Bild kommt, ruckelt es kurz, was die Szenenübergänge leider etwas ruiniert.
>
>Soweit ich weiß, nennt man so was Shader Stutter, aber kann man irgendetwas dagegen tun? Oder liegt es am Spiel und ist bei jedem so?


Glaube, dieses extreme Stottern bei der on-the-fly Shader Cache Berechnung ist eine Eigenart der UE4. Wenn man mal ein paar PC Let's Plays von It Takes Two guckt, die haben auch alle Ruckeln beim Szenenübergang in Cutscenes. Ich war mir zunächst nicht sicher, ob Shader Stutter oder Asset Loading durch langsame HDD der Übeltäter war.

Ich hatte das nämlich auch, sehr stark, bei It Takes Two mit meiner alten CPU (i5 3570k). Hatte wie gesagt erst gedacht, es läge an der HDD, aber ein Verschieben auf SSD brachte wenig. Wenn ich dieselbe Cutscene aus dem Spiel heraus ohne Beenden nochmals geladen hatte, war alles flüssig. Wenn ich das Spiel aber beendete und neu einlud, war's wieder dasselbe Problem. Und es waren auch nicht die Cutscenes - viele der Aktionen im Spiel zuckelten bei erstmaliger Auslösung kurz. Das erste Mal im Garten mit Cody eine Pflanze greifen, ruckel. Das erste Mal eine Flasche per Groundpound kaputtmachen - ruckel. Und eine neue Area betreten (Spiel hat ja keine Ladebildschirme, wo sonst afaik oft auch Shader vorberechnet werden) - kurzes Geruckel, danach wieder Strich 60.

Vielleicht war auch mein GraKa-Treiber oder so beschädigt, denn normalerweise gibt es ja einen Nvidia ShaderCache Folder (der bei mir auf der SSD liegt), aus dem einmal kompilierte Shader wieder gezogen werden sollen, ohne sie neuberechnen zu müssen (sie hatten da iirc auch vor einiger Zeit erst die maximale Speichermenge erhöht, das waren vorher nur 512MB oder so, bevor alte Shader gelöscht werden). Das haute bei mir offensichtlich aber nicht hin, wenn es das Ruckeln am Berechnen des Shader Cache lag, dann wurden entweder bereits berechnete Shader nicht von dort geladen oder sie wurden beim Beenden des Spiels gelöscht.

Einmal gesehen, ist es mir dann auch in anderen Spielen aufgefallen, selbst in verhältnismäßig moderat anspruchsvollen Dingern wie Magic The Gathering Arena, da hat immer im ersten Match nach Spielstart das erste Ausspielen einer Karte und die erste Angriffsanimation geruckelt, danach war alles flüssig. Das ist in Unity programmiert, also war es bei mir kein Problem mit UE4 allein. Und in Doom Eternal, id Tech 7, habe ich es dann auch testweise sehen können, wenn auch seltener, bei manchen Kill-Animationen oder erstmaligen Explosionen. Selbst in Left 4 Dead (Source Engine) hat's auf einmal ganz am Anfang kurz gezuckelt, wenn man der ersten Schuss abgibt oder eine Voice Line von der CPU kommt. Da hatte ich dann den Soundtreiber im Blick, weil es vielleicht nicht Shader waren, sondern Audio-Decodes - eine ruckelige neue Animation geht ja auch immer mit einem Sound-FX einher (hatte hier eine extra Soundkarte zwecks 5.1. verbaut, die ich aber nicht mehr nutze und hatte da die dann deaktiviert, deren Treiber deinstalliert, insgesamt mal die Soundqualität in Windows und im Spiel runtergedreht, die Windows-Sound-Enhancements in den Device Settings deaktiviert & die alten Asio4All Treiber deinstalliert, die ich vor Jahren mal installiert hatte, um die Latenz zu drücken, wenn ich eine E-Gitarre an den PC anschließe) - brachte nix. Wobei ich mir gerade nicht sicher bin, ob ich die Asio4All wirklich deinstalliert hatte. Bei Left 4 Dead ist mir dann aufgefallen, dass die Anfangsruckler nur in der einen Kampagne auftraten, die ich testweise immer benutzt habe - einer der alten aus L4D1, bei den normalen L4D2-Kampagnen war alles fluffig. Zumindest das habe ich dann als ein spielinternes Problem abgehakt. (Edit: Gerade noch mal getestet und ich glaube, ich habe das Problem gefunden - das Spiel lief Borderless Windowed und hat sich wohl wegen des Alters nicht um G-Sync und 60hz Display geschert - es lief mit knapp 300fps in 4K, vermutlich kamen da die Ruckler her, wenn das System ohne Frameratebegrenzung ans Limit getrieben wird, ein 4K Framebuffer mit 300Hz und aktiviertem MSAA ist sicherlich nicht ohne, hehe. Geändert auf Fullscreen Exclusive, Strich 60, sieht gut aus.)

Der langen Rede kurzer Sinn, ich habe dann noch einen ganzen Batzen weiterer Fixes probiert (GPU Treiber neu installiert, auf SSD verschoben, Shader Cache gelöscht, Windows Defender Exceptions für Shader Cache, Windows Swapfile erhöht, RAM durch Beenden aller nicht benötigten Programme maximiert, selbst am BIOS ein wenig gedreht) und nichts hat wirklich geholfen. Ich war dann auch ein wenig baff, weil mir das vorher so in der Form die Jahre vorher schlicht nicht aufgefallen war. Das Einzige, womit ich es mir dann erklären konnte, war, dass ich vor ein paar Monaten auf einen G-Sync kompatiblen TV gewechselt hatte und es vielleicht damit zusammenhängen könnte, aber das habe ich nicht mehr weiter verfolgt, weil eh ein PC-Upgrade anstand.

Ich habe dann nämlich endlich mein CPU Upgrade angestoßen (der i5 hatte bald 10 Jahre auf dem Buckel) und nach Wechsel von Mainboard, RAM und CPU scheint der Spuk nun erstmal (weitestgehend) vorbei. Das Upgrade war aber massiv, von 8 GB 1600MHz DDR3-RAM auf 32 GB 3600MHz DDR-4 und auf einen hyperthreaded 12 Core Zen 3 5900x. Ich hatte danach It Takes Two nochmal mit einem Kumpel in einem zweiten Durchgang online durchgespielt und diese Shader-Geruckel waren um locker 95% reduziert. Gaaaanz selten hat's bei einem Kamerawechsel nochmal gezuckelt, aber wenn, dann auch viel kürzer (vorher waren das teils ein- bis zweisekündige Freezes, nun eher eine handvoll Frames) und im Level selber war's auch durchgehend flüssig (hatte direkt den Beginn im Garten probiert, der erste Griff mit Cody an die Pflanze hat sonst immer merklich gehakt). Und in MTG Arena ist nun auch das Ausspielen und Angreifen der Karten von Beginn an flüssig.

Habe nicht einmal Windows 10 neu installieren müssen (sehr geil, wie robust da Win10 ist), nur die Intel Treiber runtergeschmissen und die AMD Chipsatztreiber drübergebügelt.

Ich weiß also nicht, woran's nun genau lag, an CPU Power, Mainboard, Treiberconfig etc. Ich hatte meinen Zock-Kollegen gefragt, ob er das auch hat und ihn gebeten, ein paar meiner Versuchsstellen nachzustellen und er meinte, er hätte das Ruckeln z.B. bei MTG Arena nicht oder es würde ihm schlicht nicht so auffallen wie mir. Er hat "nur" einen i5 6600k und eine GTX 1070, wieviel RAM weiß ich gerade nicht. Was er aber auch hat und, was ich denke, normal ist, dass Animationen oder Spiele kurz ruckeln, wenn intensiv geladen wird. Zum Beispiel, wenn in Rocket League ein neuer Spieler ins laufende Match beitritt.


< antworten >