Nieuwe technologie Microsoft maakt in-game compileren van shaders overbodig

Microsoft maakt de sdk AgilitySDK 1.618 voor Advanced Shader Delivery beschikbaar voor ontwikkelaars. Deze DirectX 12-technologie maakt het in-game compileren van shaders overbodig door de shaders reeds gecompileerd af te leveren tijdens de installatie van een game.

De nieuwe technologie is vanaf 16 oktober eerst alleen beschikbaar voor bepaalde games voor de ROG Xbox Ally-handhelds die via de Xbox-app gedownload zijn, zo liet Microsoft eerder al weten. Met de release van versie 1.618 is de technologie via DirectX-api's echter ook beschikbaar voor derden, al duurt het waarschijnlijk nog lang voordat gamers hier iets van gaan merken.

Microsoft is voor Advanced Shader Delivery afhankelijk van vrijwel alle betrokkenen in het proces van gameontwikkeling en -distributie. Gameontwikkelaars en enginemakers moeten bijvoorbeeld tijdens het ontwikkelproces een 'state object database' opstellen op basis van een gestandaardiseerd format. Dit is nodig om de shaders vooraf te kunnen compileren zonder het voor alle mogelijke hardware te hoeven herhalen. Daarnaast werkte Microsoft samen met Intel, Nvidia, AMD en Qualcomm; deze bedrijven moeten de offline gecompileerde shaders via een plug-in voor hun respectievelijke hardware aanleveren om dat proces makkelijker te maken.

Advanced Shader Delivery
SODB staat voor state object database. PSDB staat voor precompiled shader database. Bron: Microsoft

Uiteindelijk moeten de tools door leveranciers van installers worden geïmplementeerd in het installatieproces. Uitgevers met een eigen launcher of derden zoals Steam kunnen de api gebruiken om de benodigde vooraf gecompileerde shaders aan te leveren tijdens de installatie van een ondersteunde game.

Tech tegen hapering door in-game shaders compileren

Het idee achter de technologie is dat platforms toegang hebben tot een grote database van reeds gecompileerde shaders. Bij de installatie van een game worden de juiste shaders voor de gebruikte hardware aangeleverd, waardoor het systeem deze niet meer hoeft te compileren tijdens het draaien van de game. Het compileren van shaders is een cpu-taak die veel rekenkracht kost. Dit kan voor langere laadtijden, wachtschermen en in-game haperingen zorgen. Met de technologie wist Microsoft naar eigen zeggen de opstarttijd van Avowed met tot 85 procent te verlagen.

Shaders zijn gpu-programma's die bepalen hoe de gpu visuele aspecten van een game moet renderen. Er zijn shaders voor verschillende stappen in de renderpipeline. Een shader wordt gecompileerd om voor een specifieke game op de relevante hardware uitgevoerd te kunnen worden. De database van Microsoft moet dan ook talloze hardwareconfiguraties ondersteunen.

De technologie van Microsoft is overigens in principe niet nieuw. Consolegames maken al gebruik van vooraf gecompileerde shaders. Dat is op specifieke consoles vrij eenvoudig te realiseren, want de relevante hardware van bijvoorbeeld iedere Xbox Series X, PlayStation 5 Pro of Nintendo Switch 2 is identiek. Voor pc-games loopt de hardware enorm uiteen. De technologie van Microsoft moet vooraf gecompileerde shaders mogelijk maken voor uiteenlopende pc's.

hoe werkt een videokaart gpu hero

Door Yannick Spinner

Redacteur

26-09-2025 • 16:23

73

Reacties (73)

Sorteer op:

Weergave:

Ik weet niet of dit nu iets van 'recent' is, maar kom steeds meer games tegen waar je bij opstarten (zeker eerste keer) weer x tijd zit te wachten 'compiling shaders', dat ik denk... kunnen ze dat niet gewoon compiled aanleveren? Nouja, daar is dit dus voor :P
Ik ken er ook niet alles van maar bijvoorbeeld shaders voor Vulkan (backend die tegenwoordig zeker bij triple A games wordt gebruikt) moeten gecompiled worden afhankelijk van de mogelijkheden die je device hebben. Deze compiled versie (SPIR-V) wordt vervolgens door de game zelf gebruikt tijdens het draaien.

Meeste games doen dit dus één keer per installatie en cachen het vervolgens ergens denk ik op schijf. Tot je nieuwe drivers/nieuwe device of iets dergelijks installeert. Dan moet het opnieuw.

De echte 3D guru's mogen me gerust corrigeren :).
Dit klopt helemaal.

Wat ook meespeelt is dat if-statements in shaders inefficiënt zijn, dus een optimalisatie die wordt toegepast om conditionele shaders te maken is voor elke conditie een aparte shader te compileren en deze efiiciëntere shaders te gebruiken wanneer het van toepassing is. Dit zorgt ervoor dat shader compilatie langer duurt en de shader cache meer ruimte inneemt.

[Reactie gewijzigd door ghangster op 26 september 2025 17:33]

Ow dat wist ik niet, verklaart wel waarom er soms zoveel shaders in een game zitten. Is dit vergelijkbaar met waarom de CPU if's ook niet fijn vind en het dus de branche predictor in de war stuurt? Of zit er meer achter op de GPU?
Ten eerste, een GPU heeft lang niet zo'n sophisticated branch predictor als dat een CPU heeft. GPU's zijn ontworpen rondom een groot aantal relatief simpele compute units.

Ten tweede, een shader programma draait niet één keer, maar in een hele groep aan parallelle instanties. Dat gaat het meest efficiënt als alle instanties binnen een compute unit (een wave) exact hetzelfde programma uitvoeren, en daarbij dezelfde branches volgen. Anders krijg je dat de instanties op elkaar moeten gaan wachten en verschillende data uit geheugen gaan halen. Het is dus handig als je van tevoren al kunt bepalen welke exacte variant van een programma je uit gaat voeren, voordat je de instructie naar de GPU stuurt.
Ik ken er ook niet alles van maar bijvoorbeeld shaders voor Vulkan (backend die tegenwoordig zeker bij triple A games wordt gebruikt) moeten gecompiled worden
Correct. Van een shading taal naar de compileerde vorm, vaak SPIR-V in het geval van vulkan.
afhankelijk van de mogelijkheden die je device hebben.
het is afhankelijk van de driver, het is mogelijk om twee drivers te hebben voor de zelfde grafische kaart met andere "mogelijkheden"

En met mogelijkheden neem ik aan de features en extensies die je GPU driver aanbied, voorbeeld lijst: https://vulkan.gpuinfo.org/listextensions.php

het is mogelijk om andere shaders te compileren als je specifieke extensies en features niet hebt, maar het is niet vereist, een applicatie kan gewoon een foutmelding geven dat je de extensies/features niet ondersteund.
Deze compiled versie (SPIR-V) wordt vervolgens door de game zelf gebruikt tijdens het draaien.
Correct. Maar SPIR-V is een intermediaire instructie set. SPIR-V wordt vervolgens door de driver gecompileerd naar iets dat de grafische kaart kan uitvoeren.
Meeste games doen dit dus één keer per installatie en cachen het vervolgens ergens denk ik op schijf.
Het is mogelijk dat de games dit zelf cachen (expliciet), maar vaak wordt het door de driver (impliciet) gedaan en niet door het spel.


https://www.khronos.org/blog/bringing-explicit-pipeline-caching-control-to-vulkan
https://registry.khronos.org/vulkan/specs/latest/man/html/VK_KHR_pipeline_binary.html

[Reactie gewijzigd door KVM op 27 september 2025 07:31]

Ik weet niet of dit nu iets van 'recent' is, maar kom steeds meer games tegen waar je bij opstarten (zeker eerste keer) weer x tijd zit te wachten 'compiling shaders'
En da's alleen maar goed om te zien, want voorheen (UE4 tijdperk) was dit nauwelijks onder de aandacht bij developers. Geen shader precompilation step betekent meestal dat je te maken krijgt met shader compilation stutters tijdens het spelen. Of een deel van de shaders moeten tijdens loading zones en/of het spelen van cutscenes compilen, maar die aanpak wordt nauwelijks gehanteerd.

Maar nog veel belangrijker: zelfs met zo'n shader precompilation step worden shaders vrijwel altijd gemist door developers, waardoor je alsnog te maken krijgt met haperingen, zoals in Silent Hill F en Borderlands 4. Er zijn maar weinig studio's die echt een stutter-free ervaring kunnen aanleveren, al helemaal als ze UE4/UE5 gebruiken.

Hulde dat Microsoft hier het voortouw in neemt nu. Hopelijk is het een goede oplossing.
Voortouw ? Mja. Steamdeck heeft zo`n soortgelijke systeem al op dag 1, en dat was anno 2022.
MS loopt zoals gewoonlijk weer eens achter.
Appels met peren. Dit is een uniforme oplossing voor alle hardware combinaties, dus daar gaat heel wat meer tijd en moeite in zitten dan als je het slechts voor één hardware profiel (Steam Deck) hoeft te doen.
Niet echt apples met peren, mits je meeneemt dat lithiumangel het verkeerd zegt. Dit gebeurd namelijk niet enkel op de Steam Deck, maar op elke Linux distro ongeacht hardware. Alle spellen die je via Steam installeert en opstart doen dit (dus non-Steam games niet).

Ook is het handmatig te skippen als je "gewoon" snel wil opstarten. Wat heel fijn is voor oudere spellen waar je het qua performance niet echt nodig hebt.
Gewoon gelijk microsoft heeft weinig gedaan aan directx al voor jaren is geen leuke onderdeel als AI dus volgens mij heeft microsoft gewoon niemand er voor over gehad.
Uh, ja... en de Steam Deck is een apparaat. Die specifieke oplossing van Valve gaat de honderden miljoenen Windows gamers wereldwijd niet helpen, ben ik bang.
Steam doet het bij mij ook op Ubuntu. Geen idee of het ook op Windows gebeurt, maar als ze die shader cache toch al hebben, zie ik niet waarom Steam het niet doet.

Toch leuk dat Microsoft de feature van Steam heeft overgenomen, dat gaat een hoop mensen een hoop tijd schelen.
Nee hoor, op Linux gebeurt dit met elke PC die Steam draait. Dat Microsoft hier zogenaamd het voortouw neemt is dus onzin.
"zelfs met zo'n shader precompilation step worden shaders vrijwel altijd gemist door developers"

Dit begrijp ik niet goed. Bedoel je dat ze ergens een shader over het hoofd zien?
Ik zou er toch van uit gaan dat als je een game ontwikkelt, je gewoon een lijstje "trekt" met overzicht van alle shaders?
Jep! Precies dat. Een shader precompilation step die alle shaders meeneemt bestaat gewoonweg niet. Er zullen altijd permutaties over het hoofd worden gezien. Dat verschilt uiteraard van developer tot developer, maar in de nieuwe spellen zoals Borderlands 4 en Silent Hill F (deze hebben allebei een shader precompilation step) krijg je te maken met shader compilation stutters in het begin van het spel, bij de meest basale handelingen. Het gebruiken van een wapen voor de eerste keer, het zien van een vijand voor de eerste keer, etc. Dat zijn allemaal stutters van 50-200ms. Niet zo handig, als je je bedenkt dat je frametimes moet hebben van max 16.6ms voor een stabiele 60fps (om maar een voorbeeld te noemen). Digital Foundry heeft o.a. video's gemaakt over de huidige staat van deze twee spellen.

Hoe zoiets kan gebeuren? Ik zou het oprecht niet weten. Je zou inderdaad denken dat een developer dit direct merkt. Wordt er telkens getest met een ''warme'' shader cache waardoor stutters niet worden gezien? Wordt er aan alle shaders geknutseld tot vlak voor launch? :?

[Reactie gewijzigd door Daraxo op 30 september 2025 19:55]

Wat ik me dan afvraag alleen: Moet hij elke keer opnieuw gecompiled worden. Kan hij dat niet één keer doen zolang er geen hardware veranderd is?
Op dit moment gebeurt dit elke keer wanneer je een GPU driver update installeert.
Jedi: Fallen Order en Jedi: Survivor. Compileren altijd shaders bij opstart.

Misschien omdat het PC versies zijn van console games waarbij optimalisatie voor PC prioriteit #877 was?
Bij de spellen waarbij dat het geval is, is dat wat mij betreft echt een non-issue waarbij de oplossing simpelweg te complex is. Die paar keer dat je een spel speelt en er nieuwe GPU drivers zijn is wel te overzien. Maar wat @E!Ma0RB7 schreef, ik ben inderdaad ook spellen tegengekomen waarbij elke keer opnieuw shaders gecompileerd worden (iig Jedi Fallen Order, en misschien nog een andere).
Inderdaad. Borderlands 4, elke keer bij opstarten. The last of us had ook nog een issue met compileren van shaders in het begin. En zo zijn er nog wel een paar titels te noemen.
Ik kan me nog herinneren dat Battlefield 2 na elke wijziging van je graphics settings shaders opnieuw moest compileren. En dat is een spel uit 2005, dus dit is wel van alle tijden denk ik.
Dit komt omdat de instructieset van de GPU niet gestandaleseerd is zoals bij de CPUs. GPU-makers kunnen nieuwe instruties introduceren (en ook instruties verwijderen) in nieuwe generatie GPUs en de GPUs van verschillende vendors hebben ook een ander instructieset. Je kan daarom niet alle shaders van tevoren compileren, dit kan wel bij consoles omdat de GPU daar niet veranderd. Zoals andere al hebben gezegd wordt daarom de shader gecompileerd naar een tussenrepresentatie en deze tussenrepresentatie wordt dan later door de driver gecompileerd voor de GPU die in je computer zit. Dit heeft echter een nadeel, de compiler in de driver kan bugs bevatten en wordt nu en dan geupdate. Daarom moet je soms na het updaten van je driver opnieuw shaders compileren. Ook kunnen spellen bij een update hun shaders veranderen, dan moeten de shaders ook weer gecompileerd worden.

Om te voorkomen dat shaders opnieuwe gecompileerd worden bij elke start van een spel heeft je driver een cache. Spellen weten trouwens niet of hun shader wel of niet in de cache zit. Daarom laten de meeste spellen elke keer bij het opstarten de shaders compileren. Wel gaat het sneller omdat de driver gewoon de shder uit de cache haalt, soms merk je het niet eens maar soms zie je nog steeds 'compiling shaders' staan maar gaat het veel sneller naar de eerste keer.
Hangt ook wel af van de game. Bij MMO's heb je vaak te maken met updates/patches, ik denk ook niet dat dit daarbij gaat helpen.

Bij Steam is er trouwens wel een optie om shaders compilen op de achtergrond te doen. Zelf heb ik die uitstaan vanwege geen supersnelle PC.
Shaders zitten vast aan je GPU drivers, meeleveren kan dus niet als niet iedereen dezelfde driver heeft geinstalleerd.
Ik waan mij weer terug in C64 tijd met die vermaledijde "shader compilation". Laden van een game m.b.v. een cassettebandje duurde toen "eeuwen" op de C64! Tussendoor gingen we een potje voetballen... Nu duurt die shader compilation stap "eeuwen". Ik ga tussendoor maar weer een potje voetballen, denk ik. :+

Ik vind dit echt een achteruitgang van het moderne gamen. Maar ja, het moet, want anders lopen die moderne games helemaal voor geen meter meer. Goed te horen dat er aan oplossingen wordt gewerkt voor deze achteruitgang.

[Reactie gewijzigd door Jittikmieger op 26 september 2025 21:35]

Is dit niet gewoon de shaders compilen voor je specifieke hardware tijdens de installatie?
Dus de installatie duurt gewoon langer, maar normaliter moet er tijdens het spelen niet meer gewacht worden, want in bepaalde spelletjes is dit niet over te slaan (maar krijg je wel te zien dat men er nog mee bezig is)?
Dus eigenlijk geen tijdwinst of nieuwe techniek maar gewoon een verschuiving ervan?

Edit: blijkbaar worden ze gedownload, maar dit lijkt me ook vrij nutteloos. Men zou beter werk maken van installaties die zien dat je gewoon nog full HD hebt en geen drol met die 4k texturen van 50GB bent, noch om te downloaden of te installeren.

[Reactie gewijzigd door Wim Cossement op 28 september 2025 10:47]

...Is dit vaak een probleem? Zo ver ik weet wordt dit aan het begin gedaan als je het spel opstart, dus het enige wat hiermee veranderd is dat je 30 seconden wint.

Ik zeg geen nee tegen verbeteringen, maar ik vraag me af of het de moeite waard is.
Niet helemaal waar. Sommige games/engines kiezen ervoor om schaders bij het opstarten van de game te genereren. Maar dat is geen gegeven. Als je dit niet implementeert dan zal de schader de eerste keer dat het nodig is, compileren en dat kan dus midden in een game zijn waar je een scène voor het eerst bezoekt of afspeelt.

Die coole unieke epic skin die je hebt vrijgespeeld is een voorbeeld. Pixel-schader die nodig is. Als je dat van te voren niet genereert en opslaat, dan maakt en laad de driver die pas in wanneer voor het (eerst) nodig.
Sommige games lijken er een handje van te hebben om het vaker te doen. Enshrouded is er bijvoorbeeld één die bij bijna elke update opnieuw gaat compileren. Nu valt dat op mijn game PC nog wel mee hoelang het duurt, maar op de PC van m'n vrouw kan het zo een 10+ minuten duren met een 8600G.

En bij multiplayer games is het vaak nog geen 30 seconden, maar singleplayer games willen nog wel eens veel langer de tijd nemen, een ander die ik zo weet is The Last of Us.
In principe is dat alleen het geval bij een eerste boot van de game inderdaad. Maar zodra er nieuwe hardware is, of wanneer er een vernieuwde driver- of gameversie geïnstalleerd is, kan het dat de shaders opnieuw gecompileerd moeten worden
In principe is dat alleen het geval bij een eerste boot van de game inderdaad. Maar zodra er nieuwe hardware is, of wanneer er een vernieuwde driver- of gameversie geïnstalleerd is, kan het dat de shaders opnieuw gecompileerd moeten worden
Maar dan nog... bij nieuwe hardware moet je met dit systeem een nieuwe set pre-compiled shaders downloaden, in plaats van een nieuwe set shaders compilen. Maakt dat echt wezenlijk verschil?

Vandaag de dag krijgen laptops (die niet altijd een Internet-verbinding hebben) geen nieuwe hardware en hebben desktops (die soms nieuwe hardware krijgen) altijd een Internet-verbinding, dus het is niet echt een nadeel... maar ook nauwelijks een voordeel. Wat is nou echt het voordeel van voor elk nieuw spel eenmalig (plus eens in de paar jaar, nieuwe grafische kaart, een keertje extra), een paar seconde downloaden in plaats van een paar seconde compilen?

Ongeveer hetzelfde geldt voor een nieuwe versie van een driver of een game. In die situatie weet je zeker dat je een verbinding hebt (je hebt immers net nieuwe software gedownload) en het gebeurt wat vaker, maar het is nog steeds relatief zeldzaam.

Ik geloof best dát er een voordeel is (het artikel klinkt of Microsoft behoorlijk wat moeite heeft gedaan om dit op te zetten), maar uit het artikel kan ik niet opmaken wát het voordeel is.
Wat mogelijk over het hoofd gezien is, is dat er ook verschillende manieren van compilatie zijn. Je hebt de dynamische mode die snel compileert, maar tragere/zwaardere shaders oplevert. Je hebt de optimized mode, die zoals je raadt optimized shaders oplevert; dit duurt langer, maar genereert snellere/lichte shaders (meer FPS).

Ik zou perfect kunnen geloven dat dit ervoor kan zorgen dat die eerste variant nooit zal gebruikt worden als je ze gaat downloaden, waar een developer er misschien wel voor zou gekozen hebben als de game erg veel verschillende shaders had en het "te lang zou duren".
Naast wat anderen al zeggen, bij het installeren van een nieuwe graphics driver ben je je cache ook kwijt.
Shader pre-compilation is een tijdrovend process om te implementeren en testen, en ook erg vatbaar voor fouten. Er zijn bijv. zat games die uitkomen met pre-compilation, maar dan alsnog een hele hoop shader permutaties missen.

Dit systeem-breed aanpakken met een API/tool/whatever is uiteindelijk beter voor zowel de ontwikkelaars, als de eindgebruiker.
Ja dit is een probleem vooral bij de Unreal 5 engine. Deze engine wordt steeds meer gebruikt.

Silent Hill
Shader compilen is echt geen 30 seconden werk, nieteens als je de beste CPU hebt (9800X3D)
Veel moderne UE5 games hebben makkelijk zo`n 30K shaders die gedaan moeten worden.

Je denkt w.s. aan Shader Verification, dat is iets anders. En dat duurt doorgaans wel zo`n 10 seconden op een moderne systeem.

Shader compilen doe je ook nog eens telkens als :
1. De ontwikkelaar een update uitgebracht heeft waar meer shaders in verwerkt zitten.
2. Je een driver update doet van je GPU.
Lees/kijk Digital Foundry maar, zij zien dit bij bijna elke nieuwe release terug komen, voor Unreal 5 games. Borderlands 4 is een goed voorbeeld, waar bij elk nieuw voorwerp dat je ziet, er een shader hapering ontstaat. Silent Hill f zie je het ook terug komen. Echt een groot verschil wanneer je iets voor het eerst ziet en in een tweede playthrough nog een keer ziet.
Niet heel lang geleden had S.T.A.L.K.E.R. 2 hier nog last van, niet alleen lange opstarttijd maar ook gewoon helemaal niet opstarten van de game was een probleem. Wellicht is dit niet een goed voorbeeld omdat deze gamereeks bekend staat om zijn vele bugs. Het ligt dus mogelijk meer bij de ontwikkelaar van de game, maar lastig is het wel. Via patches werkt het nu wel maar het heeft in dit geval behoorlijk wat moeite gekost.

Zo te lezen heeft Borderlands 4 hier ook last van en naast S.T.A.L.K.E.R. 2 andere games die op UE5 werken.
30 seconden? Er zijn er hier ook nog met HW van een jaar of 8-9... Voor sommige spellen die best wel speelbaar zijn op full HD aan 60Hz mag je soms wel op 10-15 minuten rekenen.
Ik heb hier nul verstand van, maar wel (negatieve) ervaring als gebruiker en dus wil ik het snappen.

Het verbaas(t/de) me dat shaders steeds weer opnieuw gecompileerd moeten worden. Waarom w(e/o)rd(t) dit gedaan? Bij nieuwe drivers, gewijzigde settings of andere veranderde factoren kan ik me het opnieuw compileren wel voorstellen. Maar bij meerdere games gebeurt het inderdaad elke keer. Ook zonder duidelijke wijzigingen.

Waarom gebeurt dit?
Als er niets verandert, lijkt me dat de game de gecompileerde shaders moet kunnen cachen. Als dat niet gebeurt, lijkt me dat luiheid van de developers (of een of andere moeilijkheid in de engine of het framework dat ze gebruiken).
Over het algemeen cachen games hun shaders naar mijn weten. Steam downloadt ze voor me en ook van bijvoorbeeld emulators zijn shaders caches te downloaden.

Ik heb nog nooit een recompile gezien na het wijzigen van de in-game settings, alleen bij driver/game/firmware-updates. Ik zie ook niet in waarom dat zou gebeuren.

Als het elke keer gebeurt denk ik dat die games hun shaders niet cachen of dat ze die cachen op een plek waar ze niet naartoe mogen schrijven. Je zou voor de gein eens kunnen proberen zo'n game als administrator te draaien om te zien of hij zijn shaders dan wel kan cachen, als dat werkt zou herinstalleren naar een andere map dan Program Files al een stuk helpen.
Dank voor je antwoord en goede tip.

Ik dacht dat Delta Force bij wijzigingen in bepaalde settings shaders recompiled.

Notoire games die bij elke opstart shaders recompilen zijn Jedi: Fallen Order en Jedi: Survivor. Super irritant. Ik ga jouw admin rights ideetje eens proberen...
Op zich juich ik dit als systeem. Waar ik me wel zorgen over maak is dat ontwikkelaars dan shader pre-compile helemaal uit hun code halen. Als zo'n systeem dan een keer uit de lucht gaat, of je hardware wordt niet meer ondersteund dan is je spel daarna één stotterbende.
Het diagram laat zien dat er altijd teruggevallen moet kunnen worden op lokale shader compilatie.
Compiling shaders. Elke keer als ik Borderlands 4 opstart. Gek word ik er van!

Duurt niet heel lang, maar toch.
Ik zag dat bij The Last of Us. Als je het spel opstart stond er "building shaders" en dat duurt.
Leuk hoor, maar dit is enkel een oplossing voor "fixed" hardware zoals consoles and PC-handhelds zoals Steamdeck en die Rog Ally die MS probeert te pushen.

In het geval van PC videokaarten moet je voor elke aparte videokaart in combinatie met elke driver shaders pre-compileren en uploaden naar een server zodat eigenaren van precies dezelfde hw/driver-combinatie die compilatiestap kunnen overslaan. Oja, en dat moet ook nog bij elke nieuwe update van een game opnieuw gedaan worden. Da's volslagen gekkenwerk.
Dat was ook mijn eerste gedachte en het is vreemd dat ik zo ver naar beneden moet om er een reactie over te zien.

Ik kan me er, ook omdat verschillende games er op dit moment verschillend mee omgaan, geen goede voorstelling van maken of het 'beter' is die pre-compiled shaders steeds te moeten downloaden en installeren t.o.v. het 'gewoon' lokaal eenmalig compileren.

Een 2e gedachte was dat als die shaders alleen nog maar extern aangevoerd worden en dus niet meer lokaal gecompileerd worden, het 'illegaal' verspreiden van games minder interessant maakt, wat uiteraard voor alle betrokken partijen een pluspunt is.
De technologie van Microsoft is overigens in principe niet nieuw. Consolegames maken al gebruik van vooraf gecompileerde shaders. Dat is op specifieke consoles vrij eenvoudig te realiseren, want de relevante hardware van bijvoorbeeld iedere Xbox Series X, PlayStation 5 Pro of Nintendo Switch 2 is identiek. Voor pc-games loopt de hardware enorm uiteen. De technologie van Microsoft moet vooraf gecompileerde shaders mogelijk maken voor uiteenlopende pc's.
Het wordt net gebracht alsof Microsoft iets spectaculairs heeft af weten te leveren met precompiled shaders mogelijk te maken op een heterogene poel aan hardware configuraties. Maar feit is dat Steam dit met OpenGL shaders en meer recent Vulkan shaders al een decennium doet.

Dat DirectX 12 het nu ook kan is niet een prestatie.
Dat DirectX 12 het nu pas kan, is een wanprestatie.

[Reactie gewijzigd door R4gnax op 26 september 2025 23:08]

Het compileren van shaders is een cpu-taak die veel rekenkracht kost. Dit kan voor langere laadtijden, wachtschermen en in-game haperingen zorgen. Met de technologie wist Microsoft naar eigen zeggen de opstarttijd van Avowed met tot 85 procent te verlagen.
leuk dat de opstart tijd verlaagt is, maar zijn de shader stutters ook weg? die zijn toch voor de meeste games, meer storend
Als de game aan precompilatie doet zijn PSO stutters over het algemeen minimaal.
Maar of het probleem hiermee helemaal opgelost is- nee. Indie games gaan dit nog steeds niet doen, en ontwikkelaars zullen nog steeds variaties gaan missen.
Dat is inderdaad het belangrijkste... In principe zou een game die de shaders bij het opstarten compileert er geen last meer van moeten hebben, maar soms gaat dat om een of andere reden niet goed. Borderlands 4 bijvoorbeeld had ik ondanks dat hij bij het opstarten het al doet toch nog shader compilation stutters bij en ook Digital Foundry melde datzelfde probleem, maar na een windows reinstall had ik dat probleem ineens niet meer. In principe zou het niet uit moeten maken natuurlijk of de shaders bij het opstarten gecompileerd worden of als pakketje gedownload worden, zolang alles er maar is en er niet alsnog tijdens spelen ineens dingen gecompileerd moeten worden.

Wat betreft het opstarten en de tijd die het kost, dat hangt heel erg af van je hardware. Ik heb nu net geupgrade naar een 9800X3D en die vliegt er (in ieder geval bij Borderlands 4) echt zo hard doorheen dat het me totaal niet boeit. Op de Steam Deck heb ik echter wel eens irritant lang moeten zitten wachten (de CPU van de SD is relatief zwak). En in principe heeft de Steam Deck al shader pre-caching, wat ze ook kunnen doen omdat het net als een console fixed hardware is... maar soms lijkt een game dat niet te snappen of zo. Ik meen dat het Borderlands 3 was waar ik best wel lang zat te wachten.
Ik ben blij dat Microsoft wel de hitte voelt om door te innoveren. Voelt alsof de Steam Deck met hun Linux based systeem toch iets aangewakkerd heeft in de monopolie partij.
Ik denk dat consoles een veel grotere concurent voor gaming op Windows zijn.

Neemt niet weg dat ik me afvraag of Wine/Proton dit ook moet/kan/gaat ondersteunen.
Je draait het om; steam ondersteunt het al jaren en op Linux hebben ook mijn windows games ook een eenmalige "shader precompilation download" vooraf bij installatie.
Als ik het goed begrijp dan zorgt Advanced Shader Delivery ervoor dat de gecompliceerde shaders tijdens installatie van een server worden afgehaald. Dat is dus, afhankelijk van je internetverbinding en processor, efficiënter dan tijdens installatie eenmalig compileren. Ik heb ergens uit een reddit-post begrepen dat je die eenmalige compilatie bij Steam (automatisch )kan uploaden waardoor een volgende gebruiker met dezelfde configuratie ze weer kan downloaden?
Is dit hetzelfde als de vulkan shaders die gemaakt worden voor je een game in Bazzite/steamOS?


Om te kunnen reageren moet je ingelogd zijn