Vad är en pixelskuggare?


Bästa svaret

Shaders är specialprogram som används av grafikhårdvara för att producera bilder. De är vanligtvis indelade i mindre program som hanterar olika aspekter av hårdvaruåtergivningsprocessen.

Det finns flera olika varianter men de vanligaste är pixel och vertex shaders.

vertex shader är ansvarig för att tillämpa ändringar i ingångsgeometrin. Vanligtvis betyder det att projicera 3-d geometri på 2-d projiceringsplanet i den utgående bilden, men ibland kan du lägga till någon form av procedurrörelse eller deformation till geometrin här också.

Pixel shader tar utgången från vertex shader och genererar pixlarna som kommer att visas i den slutliga bilden. För det mesta är detta baserat på någon variation av återgivningsekvationen och jämför pixelns riktning med ljuskällans riktningar och ytans egenskaper. , men kan vara allt från en slumpmässig brusfunktion till en komplex simulering eller raytracing.

Den del av detta som skiljer sig mest från vanlig programmering är att både vertex och pixel shaders är extremt parallelliserad. Varje vertex-skuggning körs på varje vertex i inmatningsdata samtidigt; varje pixelskuggning körs på varje pixel i den slutliga bilden samtidigt. Det betyder att det är svårt att göra något mot en pixel baserat på tillståndet för en annan – alla pixlar körs samtidigt oberoende av varandra. Effekter som måste vara medvetna om kontexten måste ofta köra flera pixelskuggor efter varandra och lagra resultaten i tillfälliga bilder.

Detta ger dig en anständig, mycket grundläggande översikt över hur det fungerar:

Svar

En ”pixel shader” (som är ett dåligt namn för en ”fragment shader”) är ett litet program som körs parallellt många gånger på GPU: n för att bestämma färgen på fragment. I grundläggande termer liknar fragment begreppsmässigt mycket pixlar, därav namnet förvirring.

När geometri skickas för att rita, omvandlas topparna med ”vertex shader”. Rörledningen kommer att konstruera primitiver som trianglar eller linjer, och efter att de har projicerats på skärmen och klippts, kommer rasteriseraren att räkna ut alla pixlar som berörs och interpolera alla värden mellan hörn som färger, strukturkoordinater eller normaler . Fragmentskuggningen körs för vart och ett av fragmenten för att räkna ut den slutliga färgen. Andra operationer såsom djup- / alfa / stenciltestning utförs och sedan kan fragment eventuellt medelvärdesberäknas tillsammans i fallet med multisamp-antialiasing, innan de äntligen blir faktiska pixelfärger som ska skrivas eller blandas i skärmbufferten.

Bild tagen från här .

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *