Nvidia-functie versnelt eerste start games na updates gpu-driver

Nvidia heeft de bètafunctie Auto Shader Compilation uitgebracht. Hierbij worden shaders na een update van de gpu-driver vooraf gehercompileerd, in plaats van tijdens het laden van de game. Dat moet de opstarttijd van games de eerste keer na de driverupdate flink verkorten.

De Auto Shader Compilation-functie vereist GeForce Game Ready Driver 595.97 WHQL of hoger en staat vooralsnog standaard uit. Als gebruikers de functie in de Nvidia-app activeren, worden gameshaders na een gpu-driverupdate standaard gecompileerd als het systeem inactief is. Daardoor moeten games de eerstvolgende keer sneller opstarten. Normaal gesproken gebeurt de shadercompilatie tijdens het laden van de game. Dat kan minuten in beslag nemen. Gebruikers kunnen ook kiezen om de shaders meteen te compileren via de Compile Now-optie.

Ook met deze functie ingeschakeld moeten de shaders wél nog worden gecompileerd op het moment dat spelers een game voor de eerste keer opstarten. Daarmee wijkt deze functie af van de Advanced Shader Delivery-technologie, die Microsoft vorig jaar introduceerde. Die moet juist het compileren van shaders bij de aanvankelijke opstart voorkomen door shaders al bij de installatie te compileren. Om dit mogelijk te maken moeten vrijwel alle betrokken partijen in het proces van gameontwikkeling en -distributie deze technologie ondersteunen.

Nvidia Auto Shader Compilation

Door Kevin Krikhaar

Redacteur

01-04-2026 • 13:36

33

Reacties (33)

Sorteer op:

Weergave:

Was Intel niet ook bezig om server side al shaders te compilen? Zodat je die gewoon kon downloaden en meteen kon beginnen? Dit klinkt nu alsof nvidia ff snel iets concurrerends er uit gegooid heeft.

Ah hierzo https://game.intel.com/stories/intel-precompiled-shaders-faster-loading-smoother-gaming/
Intel doet iets slims, nvidia volgt. Ik zie niet wat er negatief aan is.
Dat haalt het hele nut van die gecompileerde shaders omlaag? Het hele punt van het compileren van die shaders is om het zo optimaal mogelijk op jouw hardware te laten draaien.
Het aantal variaties is beperkt in de praktijk. Een paar generaties CPU maal een paar GPU architecturen, de 100 variaties haal je niet.
Er zijn nu meer variaties dan ooit tevoren. Waar je 20 jaar geleden een handje vol AMD en Intel CPU's in omloop had, op zijn best 2 of 3 GPU generaties.

Zie je nu nog 7de en 8ste generatie Intel CPU's naast Ryzen 1's. Het GPU landschap is helemaal een bende nu er nog genoeg GPU's in omloop zijn die niet eens updates meer ontvangen.

Precompiled shaders betekend eigenlijk dat we gewoon weer een stap terug zetten, want die bestonden al op de OG Xbox.
Klopt, maar die kun je negeren. Die gebruikers kunnen dan alsnog zelf hun shaders compileren. Langzaam? Ja, maar dat is een gegeven op zo'n platform.

De XBox had destijds natuurlijk 1 CPU en 1 GPU architectuur dus daar kon je het gewoon shippen. Nu moet je de goede variant downloaden, met fallback naar zelf compileren.
Heb om heel eerlijk te zijn veel liever dat ik ze zelf lokaal kan compilen dan dat ik ze van een server moet downloaden. Denk dat dat ook beter werkt op verschillende hardware of als je bijv. Linux draait i.p.v. Windows.
Intel speelt zelf door het spel, zodat ze precies weten welke shaders er allemaal nodig zijn. En die worden dan automatisch gedownload (tenminste dat is het plan, geen idee of dat al allemaal werkt). Die heb je dus al voordat je de shaders zelf tegenkomt, en dat voorkomt shader compilation stutters.

Bij Nvidia kijken ze alleen welke shaders er voor de vorige driver versie al gecompileerd waren, en compileert die automatisch voor de nieuwe driver. Dat zijn dus shaders die je in de compilation stap zie, als je een spel start. Of shaders die je tijdens het spelen tegenkomt, en dan compilation stutter kunnen veroorzaken.

Dat is dus een heel ander idee. Eigenlijk wil je beide. Zoveel mogelijk downloaden voordat je de shaders ooit tegenkomt, en als er nog een paar missen die je dan tijdens het spelen compileert, die automatisch opnieuw compileren na een driver update.

[Reactie gewijzigd door cnieuweboer op 1 april 2026 15:06]

Heb je een betere compiler dan Intel? De Intel functionaliteit wordt sowieso alleen maar binnen Steam op Windows aangeboden.
Nee maar daar heb je het probleem dus al, je moet aan bepaalde redelijk strikte eisen voldoen om er gebruik van te maken. Je kunt ook gewoon in de background dit draaien en dan merk je er ook helemaal niks van...
Dus het versnelt eerste start omdat je nu al die tijd kwijt bent na een driver update...
Nee... Tenzij jij je driver update en dan onmiddellijk de game in duikt. Maar als je je driver update en dan eerst nog even Tweakers checkt of zo dan doet hij het al in de achtergrond en als je dan uiteindelijk de game start hoef je dan niet meer te wachten.
Daarvoor staat mijn PC aan, games draaien. Inactief is in mijn geval gewoon uit.
Naja, dan verandert er niets voor je. Blijft het op z'n slechts zoals het al was.
Behalve als je een goede internet verbinding hebt, dan download hij mogelijk sneller dan je lokaal kan compileren
Het zal toch ooit moeten gebeuren. Er waren nu veel klachten dat games na driver wijzigingen lang duurden om op te starten. Dat lossen ze dus zo op.

Het lijkt me ook sterk dat jouw pc 100% van de tijd een game open heeft staan. Wat bij mij meestal gebeurt is ah, driver update starten, even koffie halen en dan is de boel wel klaar ondertussen. Die tijd werd tot nu niet gebruikt maar gebruiken ze nu dus nuttig zeg maar. Ik zie er persoonlijk wel het voordeel van in.

Zover ik lees gebeurt het zo te zien ook op de achtergrond. 5% in steam kijken welke game je gaat spelen kan al genoeg tijd zijn om ff wat shaders te recompilen.

[Reactie gewijzigd door Powerblast op 1 april 2026 14:29]

Ik vind het zorgwekkend dat iedereen bezig is met pleisters plakken op dit probleem. Dat betekent dat er waarschijnlijk geen echte oplossing in ontwikkeling is.

AAA games hebben nu lange laadschermen voor shader compilatie, maar bij indie games is het veel erger. Die ontwikkelaars hebben geen tijd of kennis om zich hiermee bezig te houden, dus lekker stotteren de eerste keer dat je de game opstart.

Het is veel te makkelijk om tienduizenden shader variaties te maken.
Ja dit gevoel heb ik ook, er is echt een totaal andere insteek nodig in DirectX/Vulkan/Metal om dit probleem echt aan te pakken, heel het idee van van te voren alle render state vast te leggen in Pipeline State Objects (PSO) via stricte API's die te veel high-level abstracties dicteren zou op de schop moeten. Er zijn wel wat kleine verbeteringen en extensies bijgekomen de laatste jaren voor bindless en flexibelere mechanismes om data naar shaders te krijgen zonder rebinds en 1001 bind group layouts en weet ik niet wat nodig te hebben, maar het zou allemaal nog een stapje verder richting low-level kunnen en moeten.

Sebastian Aaltonen (render engineer en game dev) heeft hier een super uitgebreide analyse over geschreven [1], zijn insteek is dat we GPU's inmiddels niet meer moeten zien als iets wat je altijd via de abstractie lagen van een graphics API zou moeten programmeren, maar gewoon als een programmeerbare computer met een afwijkende architectuur. Wat moderne GPU's tegenwoordig ook gewoon zijn. Ondanks alle programmeerbaarheid van DX12 en Vulkan zijn die API's nog steeds veel te veel geinspireerd op het idee dat de API alle hardware details moet verbergen, en dat heeft onder andere geleid tot een aanpak waarbij engines voor elke permutatie van een shader een unieke PSO nodig is, waardoor we nu met shader caches van 100GB zitten.

[1] https://www.sebastianaaltonen.com/blog/no-graphics-api
Ik vind dit niet echt een probleem. Als je op de achtergrond terwijl je gewoon aan het browsen bent ofzo je shaders kan pre-compilen is dat toch prima? Zo lang je er zelf de controle over hebt.
Dit is alleen een fix voor wanneer je je drivers update. Hij gaat de oude cache langs en compileert die opnieuw met de nieuwe driver.

Het probleem blijft dus bestaan wanneer je een nieuwe game speelt, of wanneer de game geüpdatet word. Intel heeft hier een oplossing voor, maar dat werkt alleen met een klein lijstje AAA games. Microsoft heeft een oplossing, maar dat werkt alleen voor games uit de Microsoft store, die nog steeds van tevoren een lijst met PSOs moeten maken.

Het blijft pleisters plakken. Een globale oplossing zou toch echt uit het ontwerp van graphics API's moeten komen.

[Reactie gewijzigd door Wolfos op 1 april 2026 14:49]

Of het helemaal mogelijk is om dit probleem op te lossen op graphics API niveau zou ik niet weten, maar ik ben het wel eens met dat Intel en Microsoft's oplossingen niet de goede richting op gaat nee.

Betere oplossing is gewoon geen games spelen die zo'n complexe graphics hebben dat ze al die shaders nodig hebben :+
Heeft weinig te maken met complexe graphics. Meer met de workflow.

De ergste shader stutter die ik ooit gezien heb was in de game Warhammer: Boltgun, welke grafisch wat wegheeft van Duke Nukem 3D.
Is het echt een groot probleem? Het zijn lang niet alle games die lang bezig zijn met compileren. De enige die ik me zo even voor de geest kan halen zijn Borderlands 3 en 4 die wat irritant lang kunnen duren. Meestal is het zo gedaan. Ok met een tragere cpu zal het wat langer duren natuurlijk (heb zelf een 9800X3D, voor shader compilatie met zijn 8 cores ook zeker niet de snelste maar nog steeds een snelle cpu natuurlijk). Bij indie games heb ik het nog nooit echt gehad dat het lang duurde.
Het hangt heel erg van de engine af volgens mij, ik heb het idee dat vooral engines waarin de shaders grotendeels via blueprints/node-graphs in elkaar worden geklikt bijna automatisch tot een explosie van shader variants leiden. Ik ben geen render engineer maar waarschijnlijk is het best mogelijk om shaders te schrijven die zo flexibel zijn dat je er geen aparte permutatie nodig hebt voor elke optionele parameter maar dat is gewoon veel meer werk en in veel gevallen vechten tegen de API.
Tot voor kort gebruikte Unity nog DirectX11. Nu zijn alle mainstream engines over naar 12. Dus ja, dit gaat erger worden.
Als gebruikers de functie in de Nvidia-app activeren, worden gameshaders na een gpu-driverupdate standaard gecompileerd als het systeem inactief is
Dit voelt een beetje shady.
Hoe weet Nvidia dat mijn systeem "inactief" is. Hoe weer Nvidia welke games ik heb draaien op mijn systeem? Wordt dus wat (hopelijk) locale administratie bijgehouden en processen geanalyseerd. Ik heb liever dat eenmalige shader compilatie gebeurd op het moment dat ik kies dat bijbehorende game-proces te starten.

Daarnaast zet dit de deur weer wat verder open om Nvidia OS-zaken te laten beheren.
[...]

Hoe weet Nvidia dat mijn systeem "inactief" is. Hoe weer Nvidia welke games ik heb draaien op mijn systeem? Wordt dus wat (hopelijk) locale administratie bijgehouden en processen geanalyseerd.
Gewoon door naar de shader cache te kijken. Dat hoeft niet eens per game. Na een driver update word de gehele oude cache opnieuw gecompileerd door de nieuwe driver.
Niks shady aan. Software kan gebruikersinactiviteit gewoon uitpeilen bij het OS. Gebeurt heel veel.
2x geprobeerd nu om deze driver te installeren, mijn hoofd monitor wordt niet meer ingeschakeld na het installeren.

Las dat het te maken kon hebben met riva tuner.
Kan ook aangezet worden in NVIDIA Inspector, heb je die bagger app ook niet nodig.
Kan het niet in de nvidia configuratiescherm?
Nee, die word niet meer geupdate met nieuwe features.

Om te kunnen reageren moet je ingelogd zijn