BLOG

Hvad er shaders, og hvorfor skal spil forhåndsindlæse dem?

Sidst opdateret:

  Denne side blev automatisk oversat af DeepL. Switch to English

Shaders er små programmer, der kører på din GPU som en del af renderingprocessen. De håndterer alt fra at transformere geometrien i 3D-modeller til at anvende teksturer, belysning, skygger og efterbehandlingseffekter. De er grundlæggende for moderne gaming og en del af årsagen til, at disse spil ser så imponerende ud.

Det har dog ikke altid været sådan. De tidlige grafikkort var baseret på hardware med faste funktioner, med separate enheder dedikeret til opgaver som teksturering og belysning. Selvom disse enheder var kraftfulde for deres tid, var de også ufleksible. Da spil blev mere komplekse og visuelt ambitiøse, begrænsede den faste hardware både visuelle effekter og kreativ frihed. Programmerbare shaders fjernede disse begrænsninger.

battlefield 6 game modes explained rush conquest escalation

Pixel Shaders

De første shaders, der blev brugt i vid udstrækning, var pixel shaders. Disse bestemmer den endelige farve for hver pixel på skærmen og kan håndtere lysberegninger, skygger, teksturer, gennemsigtighed og efterbehandlings effekter såsom sløring eller cel shading. Vertex shaders fulgte kort efter, hvilket gjorde det muligt for udviklere at manipulere vertex data såsom position, farve og teksturkoordinater, før geometrien blev gengivet.

Senere kom geometri-shaders, som kan generere og ændre geometri på farten inden for grafikpipeline. Selvom de ikke bruges meget i dag på grund af ydeevneomkostninger, muliggjorde de effekter såsom proceduregeometri samt partikeleffekter. Tessellation-shaders byggede videre på denne idé ved dynamisk at øge geometriske detaljer, hvilket fik overflader til at fremstå glattere uden at gemme flere modeldata.

Borderlands 4 Screenshot 10

Mesh-shaders

For nylig har moderne API'er introduceret task- og mesh-shaders. Disse erstatter dele af de traditionelle vertex-, geometri- og tessellationsfaser med et mere fleksibelt system, der giver udviklere større kontrol over, hvordan geometri genereres og behandles.

Ray tracing-shaders er den nyeste tilføjelse. Disse bruges til effekter såsom refleksioner, skygger og global belysning ved at spore lysstrålenes vej gennem en scene. De understøttes af DirectX Raytracing og Vulkan, og de kræver relativt moderne grafikkort for at køre med en ydeevne, der er god nok til at spille.

Cyberpunk 2077 Neon

Hvad betyder det at forhåndsindlæse shaders?

Hvis det er det, shaders er, hvorfor kan det så tage så lang tid at forhåndsindlæse dem, og hvad betyder forhåndsindlæsning egentlig?

Udtrykket er lidt misvisende. I praksis betyder forhåndsindlæsning af shaders, at shaders kompileres og caches i stedet for blot at blive indlæst. Spiludviklere kan enten kompilere shaders på farten, mens du spiller, eller kompilere dem på forhånd, inden spillet begynder.

Kompilering af shaders under gameplay kan fungere i simple tilfælde, men det fører ofte til forsinkelser og hakken, når der opstår nye effekter eller områder. Hvis mange shaders skal kompileres på én gang, kan frame-tiderne stige kraftigt, hvilket er grunden til, at denne tilgang er så mærkbar i open world-spil. Overdreven kompilering på farten er ofte et tegn på dårlig PC-optimering.

Screenshot of Apex Legends Preloading Shaders

Fordele ved forhåndsindlæsning

Forudindlæsning af shaders undgår dette problem ved at kompilere dem på forhånd og gemme resultaterne i en cache. Når de er kompileret, kan shaders genbruges øjeblikkeligt under spillet, hvilket resulterer i en mere jævn ydeevne. Ulempen er, at du skal vente på, at shader-kompileringen er færdig, første gang du kører spillet.

Denne ventetid kan vende tilbage efter en større spilopdatering eller opdateringer af grafikkortdriveren, da shader-binærfiler er tæt knyttet til både spilversionen og GPU-driveren. Da grafikkortdrivere opdateres ofte, bliver recompilering af shaders en velkendt frustration for pc-spillere.

Hvorfor kan udviklere ikke bare levere forudkompilerede shaders? På vores elskede pc'er er hardware- og driverlandskabet simpelthen for varieret. Shader-kompilering afhænger af GPU-arkitekturen, driverversion og grafik-API, så en kompileret shader, der fungerer på et system, fungerer ikke på et andet. Konsoller undgår dette problem, fordi de er faste platforme, men pc'er er ikke.

Så næste gang du stirrer på en skærm, der indlæser shader, skal du huske, at den er der for at reducere hakken og forbedre ydeevnen, når du rent faktisk spiller. Det er en kraft til det gode.

Screenshot from CoD MW3

JOIN OUR OFFICIAL CORSAIR COMMUNITIES

Join our official CORSAIR Communities! Whether you're new or old to PC Building, have questions about our products, or want to chat the latest PC, tech, and gaming trends, our community is the place for you.