Nejlepší odpověď
Shadery jsou specializované programy používané grafickým hardwarem k vytváření obrázků. Obvykle se dělí na menší programy, které zpracovávají různé aspekty procesu vykreslování hardwaru.
Existuje několik různých variant, ale nejběžnější jsou pixel a vrchol shadery.
shader vrcholu je zodpovědný za použití jakýchkoli změn na vstupní geometrii. Obvykle to znamená promítat 3D geometrii na 2-D projekční rovinu výstupního obrazu, ale někdy můžete také přidat nějaký druh procedurálního pohybu nebo deformace do geometrie.
shader pixelů trvá výstup shaderu vrcholů a generuje pixely, které se zobrazí v konečném obrázku. Většinou je to založeno na nějaké variantě vykreslovací rovnice , která porovnává směr obrysu pixelu se směry světelných zdrojů a vlastnostmi povrchu , ale může to být cokoli od funkce náhodného šumu po složitou simulaci nebo raytracing.
Část, která se nejvíce liší od běžného programování, je to, že shadery vrcholů i pixelů jsou extrémně paralelně. Každý shader vrcholů poběží na každém vrcholu ve vstupních datech současně; každý shader pixelů poběží na každém pixelu ve výsledném obrázku současně. To znamená, že je těžké udělat něco s jedním pixelem na základě stavu druhého – všechny pixely budou fungovat současně nezávisle na sobě. Efekty, které si musí být vědomi kontextu, musí často spouštět více shaderů pixelů jeden po druhém a ukládat výsledky do dočasných obrázků.
Tím získáte slušný, velmi základní přehled o tom, jak to funguje:
Odpovědět
„Pixel shader“ (což je špatný název pro „shader fragmentu“) je malý program, který běží mnohokrát paralelně na GPU a určuje barvu fragmentů. Zjednodušeně řečeno, fragmenty jsou koncepčně velmi podobné pixelům, a proto je zmatek názvu.
Když je geometrie zadána pro kreslení, vrcholy jsou transformovány „shaderem vrcholů“. Potrubí bude konstruovat primitiva, jako jsou trojúhelníky nebo čáry, a poté, co budou promítnuty na obrazovku a oříznuty, bude rasterizátor zpracovávat všechny dotčené pixely a interpolovat jakékoli hodnoty mezi vrcholy, jako jsou barvy, souřadnice textury nebo normály . Pro zpracování finální barvy se pro každý z fragmentů spustí shader fragmentu. Provádějí se další operace, jako je testování hloubky / alfa / šablony, a pak se fragmenty mohou zprůměrovat společně v případě vícenásobného vyhlazování, než se nakonec stanou skutečnými pixelovými barvami, které se mají zapsat nebo smíchat do vyrovnávací paměti obrazovky.
Obrázek převzat z zde .