Shaders är små program som körs på din GPU som en del av renderingsprocessen. De hanterar allt från att transformera geometrin i 3D-modeller till att applicera texturer, belysning, skuggor och efterbearbetningseffekter. De är grundläggande för moderna spel och en del av anledningen till att dessa spel ser så imponerande ut.
Det har dock inte alltid varit så. Tidiga grafikkort var beroende av hårdvara med fasta funktioner, med separata enheter avsedda för uppgifter som texturering och belysning. Dessa enheter var kraftfulla för sin tid, men de var också rigida. När spelen blev mer komplexa och visuellt ambitiösa begränsade den fasta hårdvaran både visuella effekter och kreativ frihet. Programmerbara shaders tog bort dessa begränsningar.
De första shaders som användes i stor utsträckning var pixel shaders. Dessa bestämmer den slutliga färgen på varje pixel på skärmen och kan hantera belysningsberäkningar, skuggor, texturer, transparens och efterbearbetningseffekter som oskärpa eller cel shading. Vertex shaders följde snart efter, vilket gjorde det möjligt för utvecklare att manipulera vertexdata som position, färg och texturkoordinater innan geometrin renderades.
Senare kom geometriska shaders, som kan generera och modifiera geometri direkt i grafikpipeline. Även om de inte används i någon större utsträckning idag på grund av prestandakostnader, möjliggjorde de effekter som procedurgeometri och partikeleffekter. Tesselleringsshaders byggde vidare på denna idé genom att dynamiskt öka geometriska detaljer, vilket gjorde ytorna mjukare utan att lagra mer modelldata.
På senare tid har moderna API:er introducerat uppgifts- och mesh-shaders. Dessa ersätter delar av de traditionella vertex-, geometri- och tesselleringsstegen med ett mer flexibelt system som ger utvecklare större kontroll över hur geometri genereras och bearbetas.
Ray tracing-shaders är det senaste tillskottet. Dessa används för effekter som reflektioner, skuggor och global belysning genom att spåra ljusstrålarnas väg genom en scen. De stöds av DirectX Raytracing och Vulkan, och kräver relativt moderna grafikkort för att fungera med spelbar prestanda.
Om det är vad shaders är, varför kan det ta så lång tid att förladda dem, och vad innebär egentligen förladdning?
Termen är något missvisande. I praktiken innebär förladdning av shaders att man kompilerar och cachar shaders istället för att bara ladda dem. Spelutvecklare kan antingen kompilera shaders direkt medan du spelar, eller kompilera dem i förväg innan spelet börjar.
Att kompilera shaders under spelets gång kan fungera i enkla fall, men det leder ofta till fördröjningar och hackande bild när nya effekter eller områden dyker upp. Om många shaders behöver kompileras samtidigt kan bildfrekvensen sjunka kraftigt, vilket är anledningen till att denna metod är så märkbar i spel med öppen värld. Överdriven kompilering i realtid är ofta ett tecken på dålig PC-optimering.
Förladdning av shaders undviker detta problem genom att kompilera dem i förväg och lagra resultaten i en cache. När shaders väl har kompilerats kan de återanvändas direkt under spelets gång, vilket ger en smidigare prestanda. Nackdelen är att du måste vänta på att shaders kompileras första gången du startar spelet.
Den väntan kan återkomma efter en större speluppdatering eller uppdateringar av grafikdrivrutiner, eftersom shader-binärfiler är nära kopplade till både spelversionen och GPU-drivrutinen. Eftersom grafikdrivrutiner uppdateras ofta blir omkompilering av shaders en vanlig källa till frustration för PC-spelare.
Varför kan utvecklare inte bara leverera förkompilerade shaders? På våra älskade datorer är hårdvaran och drivrutinerna helt enkelt för varierande. Shaderkompilering beror på GPU-arkitekturen, drivrutinsversionen och grafik-API:et, så en kompilerad shader som fungerar på ett system fungerar inte på ett annat. Konsoler undviker detta problem eftersom de är fasta plattformar, men datorer är det inte.
Så nästa gång du stirrar på en skärm som laddar förskuggning, kom ihåg att den finns där för att minska hackighet och förbättra prestandan när du väl spelar. Det är en kraft för det goda.
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.