Je start een game die je een tijd niet hebt gespeeld en de eerste tien minuten zijn afschuwelijk. Elk nieuw wapen, elk nieuw effect, de eerste keer dat een bepaalde vijand verschijnt — een hapering. Daarna komt het tot rust, en de tweede avond loopt de game vloeiend. Niets wat jij hebt veranderd deed dat. De tijd deed het.
Of de andere versie: de game liep prima, je hebt de grafische driver bijgewerkt, en het hele eerste uur is weer onrustig.
Het is allebei hetzelfde mechanisme, en het is een van de weinige oorzaken van gestotter die werkelijk normaal is, in de zin dat een gezonde machine met correcte software het produceert.
Waarom het werk op jouw machine moet gebeuren
Een shader is een klein programma dat op de GPU draait. De ontwikkelaar van de game schrijft hem in een hoog-niveautaal en compileert hem, maar maar half — naar een tussenvorm die beschrijft wát het programma doet, niet hoe een bepaalde grafische chip dat zou moeten doen.
De machinecode die je GPU werkelijk uitvoert is niet vooraf te maken, want hij hangt af van twee dingen die de ontwikkelaar niet heeft: jouw precieze GPU-architectuur en jouw precieze driverversie. De eigen compiler van de driver zet de tussenvorm om in instructies voor het silicium in jouw machine, en dat compileren gebeurt op je CPU, op het moment dat de game de shader nodig heeft.
De eerste keer dat een scène een bepaalde combinatie van shader, renderstatus en vertexindeling nodig heeft, moet er dus iets gecompileerd worden. Vraagt de game erom midden in een frame en wacht hij erop, dan is dat frame te laat. Dat late frame is de hapering die je voelde.
Het resultaat wordt naar een shadercache op schijf geschreven. De tweede keer dat hetzelfde verschijnt, wordt de gecompileerde code uit de cache gelezen in plaats van opnieuw gebouwd, en precies daarom wordt de game beter naarmate je speelt en is de tweede sessie prima.
Wat je terug naar het begin stuurt
De cache is alleen geldig voor de driver en de hardware die hem hebben gebouwd. Alles op deze lijst maakt hem geheel of gedeeltelijk ongeldig, en het eerste uur spelen is weer onrustig:
- Een update van de grafische driver. Nieuwe compiler, nieuwe uitvoer; de oude vermeldingen zijn niet te vertrouwen, dus die gaan weg.
- Een update van de game. Veranderde shaders zijn nieuwe shaders.
- Een andere videokaart, inclusief wisselen op welke kaart een game draait.
- Een opschoonprogramma dat hem wist. De eigen schijfopruiming van Windows noemt de DirectX-shadercache tussen de categorieën tijdelijke bestanden die hij kan weghalen, en opschoners van derden nemen hem standaard mee. Opslaginzicht is de Windows-instelling die die opruiming volgens een schema uitvoert, dus het is het waard om te controleren welke categorieën je hem hebt toegestaan te wissen.
- De cache die zijn groottelimiet bereikt en oudere vermeldingen weggooit om ruimte te maken.
Geen van deze dingen is een fout. Het zijn de kosten van een cache die correct is in plaats van verouderd.
Hoe je weet dat dit is wat je hebt
Shadercompilatie heeft een herkenbare vingerafdruk, en hij lijkt op niets anders op de stotterlijst:
- Het zakt weg. Dit is het kenmerkende teken. Is je gestotter in het derde uur hetzelfde als in de derde minuut, dan is dit het niet.
- Het hangt aan nieuwigheid. De eerste aanblik van een wapen, een gebied, een weereffect, een bepaalde vijand. Dezelfde gang een tweede keer doorlopen is schoon.
- Het trekt zich niets aan van temperatuur en speelduur. Warmteproblemen worden erger naarmate je langer speelt; dit wordt beter.
- Het komt terug op een moment dat je kunt benoemen — na een driverupdate, na een patch, na een opschoning — en niet willekeurig.
- De GPU is niet het drukke deel. Het compileren is werk voor de CPU. Een GPU die tijdens deze haperingen ver onder volledige bezetting zit hoort hier bij het beeld, en is geen bewijs van het aparte probleem dat in Plotselinge FPS-drops in games wordt beschreven.
Beschrijven die vijf jouw verschijnsel niet, ga dan terug naar de algemene lijst in Waarom games stotteren op Windows 11 — de oorzaken daar zakken niet vanzelf weg.
Wat je eraan doet
Vooral: laat het gebeuren. Maar aan de randen zijn er echte keuzes.
Wis de shadercache niet als oplossing. Dit is het ene advies op deze pagina dat het waard is twee keer te lezen. De cache leegmaken wordt voortdurend voorgeschreven als middel tegen gestotter, en wat het werkelijk doet is garanderen dat je de volledige compilatiekosten opnieuw vanaf nul betaalt. Het is een legitieme stap bij het opsporen van beeldfouten na een driverwissel. Het is het tegenovergestelde van een prestatie-oplossing.
Gebruik de eigen precompilatiestap van de game als hij die aanbiedt, en sla hem niet over. Een game die twee minuten op een scherm "shaders compileren" staat voordat het menu komt, doet precies dit werk vooraf, waar het je niets kost behalve wachten.
Laat de machine na een driverupdate nog even aanstaan. Sommige drivers bouwen DirectX 12-shaders opnieuw op terwijl het systeem niets doet, juist zodat de runtime het later minder hoeft te doen. Dat helpt alleen als de machine die rusttijd krijgt.
Houd de game en zijn cache op een SSD, en buiten een gesynchroniseerde map. Een cloudclient kijkt naar elke schrijfactie, en een game schrijft zijn shadercache voortdurend — elke vermelding wordt werk voor een filterstuurprogramma plus een upload over dezelfde verbinding die je partij gebruikt.
Meet niet binnen dat venster. Een opname die in de eerste minuten na een driverupdate wordt gemaakt meet de compiler, niet de driver. De benchmark lezen behandelt de vergelijkingsregels; zo breek je de eerste ervan makkelijk per ongeluk.
Wat de scan erover zegt
De stotterscan controleert of er onlangs een shadercache is geleegd, en vindt hij er een, dan zegt hij wat deze pagina zegt: de game compileert de gewiste cache opnieuw terwijl je speelt, gestotter vroeg in de sessie is normaal en zakt vanzelf weg, en je moet niet benchmarken voordat dat venster voorbij is.
Het wordt bewust niet gepresenteerd als een fout die gerepareerd moet worden. Er valt niets te repareren — er zijn eenmalige kosten te betalen, en het eerlijkste wat een programma kan doen is je vertellen dat je er middenin zit, zodat je niet de hele avond een instelling de schuld geeft.
Waar het ophoudt normaal te zijn
Compilatiegestotter dat nooit wegzakt is een ander probleem: de cache wordt niet bewaard. Controleer of de schijf niet vol is, of de cache niet tussen sessies door een geplande opruiming wordt gewist, en of de gamemap niet ergens staat waar een cloudclient of een groottelimiet hem steeds leeghaalt.
En is de run over de hele lengte ongelijkmatig in plaats van vooral aan het begin, dan kijk je in plaats daarvan naar Hoge gemiddelde FPS maar slechte 1% lows, en dat is een probleem van voorvallen en niet van opwarmen.
Gerelateerd
- Waarom games stotteren op Windows 11
- Plotselinge FPS-drops in games
- Hoge gemiddelde FPS maar slechte 1% lows
- De benchmark lezen
Speel je CS2? Welke startopties nog iets doen en waar de frames in het videomenu werkelijk zitten: Lage FPS en gestotter in CS2: een gemeten checklist
Heeft deze pagina geholpen?
Wat ontbrak, of wat werkte er niet? We lezen elk van deze berichten.
Heeft deze pagina het niet opgelost, schrijf ons dan — noem het artikel dat je hebt gelezen, dan verbeteren we het.