News Auto Shader Compilation (Beta): Nvidia lässt Shader jetzt auf Wunsch im Hintergrund erstellen

Wäre ja n Ding wenn Spiele einfach bei der Installation schon kompilieren würden...
 
Und nach einem Treiberupdate installierst du das Spiel auch noch mal neu?
 
  • Gefällt mir
Reaktionen: |Maulwurf|
Nicht, dass ich mich beschweren würde, aber in meinen Augen ein Pflaster für ein archaisches System: Eigentlich ist es doch absurd, dass für jeden Furz einfach mal alles neu compiled werden muss, ob nun betroffen oder nicht.

Bin zugegeben nicht tief genug in der Materie, aber fühlt sich an wie ein historisch gewachsener Holzhammer, dessen (übertriebenes) Äquivalent das "Windows hatte ein Update, compile mal alle deine Anwendungen neu" wäre.
 
  • Gefällt mir
Reaktionen: N0Thing
DevPandi schrieb:
Ähm ... nein! Denn im Cache liegen nicht die "Source"-Dateien, sondern die "Binaries". Das, was Nvidia hier umsetzt, ist an der Stelle auch nicht so trivial, wie es im ersten Moment erscheint, sondern schon deutlich komplexer.

Die Shader liegen je nach dem, wie das Spiel/Engine die Shader verwaltet, in Archiven, Ordnerstrukturen und Co. die muss der Treiber durchgehen und nach den entsprechenden Source-Dateien suchen und dann auch bereit stellen. Dazu kommt, dass ggf. auch mal Shader zwar in den Dateien liegne, die jedoch nicht genutzt werden usw.
Ich denke, dass es doch wirklich trivial ist. Deine Methode mit Archiven und Orderstrukturen durchsuchen wird bei einigen Spiele nicht helfen. Es gibt so einige Spiele, die als unmodbar gelten, weil sie in proprietären Archiven verpackt sind. Da wären die Shader auch versiegelt.

Ich könnte mit vorstellen, dass ein 2. Cache aufgebaut wird, aber diesmal mit den Source-Dateien.

Das würde auch gut zum Text im Blog-Eintrag passen:
Please note, after downloading a game for the first time, you must still generate shaders in-game.
Wenn der Treiber die Archiven und Orderstrukturen durchsuchen würde (als Beispiel), dann müsste man die Shader nicht beim ersten Mal auf dem gewöhnlichen Ingame-Weg kompilieren.



Das ganze bedeutet dann aber auch:
Gegen die Stutter, wo Shader für einen bestimmten grafischen Effekt oder Objekt-Oberfläche just-in-time kompiliert werden, wird diese neue Funktion nicht helfen. Auch hier muss der Shader erstmal regulär ingame kompiliert werden, bevor der Treiber die Source-Datei(en) cachen kann.
 
Zuletzt bearbeitet:
SyntaX schrieb:
Der nächste Schritt wird sein, da man fertige Shader direkt laden kann.
Das wird ein großer Schritt gegen das Shader Ruckeln beim ersten Durchlauf sein.
Ich verstehe sowieso nicht so richtig warum es das nicht schon längst gibt.

Ich kenne das von Emulatoren auch so, dass es extra shader files downloads gibt, die man dann im entsprechenden Ordner einfügt damit der Emulator nicht bei jedem neuen Effekt ruckelt.

Oder funktioniert das nur, weil hier immer die gleiche Hardware emuliert wird und die Shader für jede Hardware Kombination individuell erstellt werden müssen?
 
Taxxor schrieb:
Oder funktioniert das nur, weil hier immer die gleiche Hardware emuliert wird und die Shader für jede Hardware Kombination individuell erstellt werden müssen?
Ja, genau. Und die Shader sind noch dazu Treiber-Abhängig. Da jede Treiberversion auch Optimierungen und Fixes im Compiler mitbringen.
 
  • Gefällt mir
Reaktionen: autopilot und Taxxor
Hm, wäre aufwendig aber dann könnte Nvidia ja auf ihren Servern einfach für jede GPU und die gängigsten Spiele die Shader erstellen lassen und das mit jedem Treiber Update optional mit anbieten.
 
  • Gefällt mir
Reaktionen: autopilot und Grestorn
@Taxxor
Das wird ja auch so kommen.
 
aLanaMiau schrieb:
Super sinnlos, ich habe viele Spiele installiert die ich nur unregelmäßig spiele (manchmal vielleicht nur 1x im Jahr) - da will ich auf keinen Fall bei jeder Treiberinstallation automatisch Shader erstellen lassen.
Gerade dann.

Ich spiele (Zeitmangel) nur sehr selten und möchte dann nicht die wertvolle Zeit mit Shadern verbringen.
 
  • Gefällt mir
Reaktionen: aid0nex
Jetzt mal ernsthaft, das Feature ist genial!!
Es gibt so ein paar Games, die zocke ich nur mal hin und wieder. Zum Beispiel schaue ich alle paar Wochen mal in das neueste Call of Duty rein und zocke mal ein paar Runden. Ich würd's mir zwar nicht kaufen, aber ist ja eh im Game Pass drin. Und dann muss ich jedes verdammte mal erstmal aufstehen und 'nen Kaffee kochen (oder ein Bier holen) um die Zeit zu überbrücken bis die Shader gerendert sind weil es zwischendurch schon wieder ein Grafikkartentreiber Update gab das ich natürlich installiert habe...
Ergänzung ()

Phoenix3000 schrieb:
@aLanaMiau
Dann ist doch für dich alles perfekt. Du lässt das Feature aus und alle die es für sinnvoll halten, schalten es an. Es gibt doch keinen Zwang es zu nutzen.

Aber dann kann man doch gar nicht meckern. ;)
 
  • Gefällt mir
Reaktionen: Pisaro, the_IT_Guy und autopilot
Bin sicherlich nicht der einzige, der unzählige Spiele installiert, aber schon seit Wochen/Monaten nicht mehr gestartet hat.

Ich würde mir also wünschen, dass die Auto-Kompilierung das Alter der kompilierten Shader beachtet und bei optional einzustellendem Maximal-Alter für diese eben nicht die Auto-Kompilierung anwirft.

Sonst erzeugt das einen Wahnsinns-Overhead durch Games, die ich aktuell doch nicht starte, wo aber das bloße installiert haben bei jedem Treiber-Update erst mal ordentlich CPU-Zeit verballert ...
Ohne solch eine Eingrenzung würde ich das Feature niemals aktivieren wollen, da ich es für blödsinnig halte, die Shader ALLER Spiele jemals neu zu berechnen wenn nur ein kleiner Teil davon überhaupt aktiv genutzt wird.
 
  • Gefällt mir
Reaktionen: aLanaMiau
DevPandi schrieb:
Beim Compiling wird der Energieaufwand - an der Stelle - nur veralgert. Ob die Energie jetzt beim Spielen aufgewendet wird, beim Start des Spieles oder nach der Treiberinstallation? Ist egal. Es könnte sogar passieren, dass es bei der Installation/nach der Installation sogar energieeffizienter ist, weil kurzfristig mehr Ressourcen bereit stehen und unnötige Wartezyklen umgangen werden.

Ich kann deine Argumente nicht nachvollziehen. Es werden in Zukunft Shader für Spiele kompiliert werden, die von Anwender möglicherweise gar nicht mehr gespielt werden. Mehrere Treiberupdates führen außerdem dazu, dass Spiele vor einem möglichen Neustart mehrfach kompiliert werden
Es ist doch genau wie mit der automatischen Installation von Patches - ohne Eingriff des Users patcht Steam die gesamte Bibliothek kontinuierlich durch.
Sobald genügend Ressourcen zur Verfügung stehen werden sie halt sofort durch solche Maximalansätze aufgebraucht.
Und auf die Bugs in verschiedenster Form freue ich mich auch schon. Ob Windows, die Software in einem Golf8 oder die Qualität eines Grafikkartentreibers: hohe Komplexität bedeutet hohe Fehleranfälligkeit.
Oder kurz. Hier handelt es sich um klassisches Overengineering

https://de.wikipedia.org/wiki/Overengineering
Ergänzung ()

aid0nex schrieb:
gerendert sind weil es zwischendurch schon wieder ein Grafikkartentreiber Update gab das ich natürlich installiert habe...
Ergänzung ()
... das ist dann wohl das eigentliche Problem. ;-) Auf eine Treiberinstallation warten unterscheidet sich nicht sehr vom Warten auf eine Shadercompilierung...
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: aLanaMiau
Uhhh das ist mal was feines - sehr gut Nvidia. :smokin:
 
SmashD schrieb:
Bin sicherlich nicht der einzige, der unzählige Spiele installiert, aber schon seit Wochen/Monaten nicht mehr gestartet hat.

Ich würde mir also wünschen, dass die Auto-Kompilierung das Alter der kompilierten Shader beachtet und bei optional einzustellendem Maximal-Alter für diese eben nicht die Auto-Kompilierung anwirft.

Sonst erzeugt das einen Wahnsinns-Overhead durch Games, die ich aktuell doch nicht starte, wo aber das bloße installiert haben bei jedem Treiber-Update erst mal ordentlich CPU-Zeit verballert ...
Ohne solch eine Eingrenzung würde ich das Feature niemals aktivieren wollen, da ich es für blödsinnig halte, die Shader ALLER Spiele jemals neu zu berechnen wenn nur ein kleiner Teil davon überhaupt aktiv genutzt wird.
Das kannst Du eigentlich im Treiber selbst steuern durch die Shader-Cache Größe. Der sollte grundsätzlich die am längsten nicht genutzten Shader zuerst löschen.
Ergänzung ()

Tobias123 schrieb:
Ich kann deine Argumente nicht nachvollziehen. Es werden in Zukunft Shader für Spiele kompiliert werden, die von Anwender möglicherweise gar nicht mehr gespielt werden.

Cache-Größe begrenzen und das Problem ist gelöst.

Eine zukünftige Version des Treibers kann ggf. statt einer Größe auch ein Alter (der letzten Nutzung) als Option vorgeben. Das macht auch mehr Sinn.
 
  • Gefällt mir
Reaktionen: SmashD und autopilot
Tobias123 schrieb:
Oder kurz. Hier handelt es sich um klassisches Overengineering
Willkommen in 2026!

Das heißt, du nutzt nun keinen Computer, kein Smartphone, kein Auto und keinen Fahrstuhl mehr, weil sie technisch komplex und somit overengineered sind?
 
autopilot schrieb:
Willkommen in 2026!

Das heißt, du nutzt nun keinen Computer, kein Smartphone, kein Auto und keinen Fahrstuhl mehr, weil sie technisch komplex und somit overengineered sind
Jetzt muss man nur noch den verlinkten Wikipedia-Artikel zu der Definition von Overengineering verstanden haben. ;-)
 
Achso...
 
Grestorn schrieb:
Das kannst Du eigentlich im Treiber selbst steuern durch die Shader-Cache Größe. Der sollte grundsätzlich die am längsten nicht genutzten Shader zuerst löschen.
Ergänzung ()



Cache-Größe begrenzen und das Problem ist gelöst.

Eine zukünftige Version des Treibers kann ggf. statt einer Größe auch ein Alter (der letzten Nutzung) als Option vorgeben. Das macht auch mehr Sinn.
Im ersten Moment glaubt man, dass dies eine Lösung des Problems wäre, aber ich stelle mal in Frage, dass ...

Spiele installiert: a,b,c,d,e,f
Shader-Cache reicht für: a,b
Ich spiele aber momentan nur: f
Autokompilierung rattert ständig nur a und b durch bis ich dann mal f gestartet und doch wieder auf die Shaderkompilierung gewartet habe.

Aber keine Ahnung, man wird's sehen ;)
 
Zurück
Oben