Risposta migliore
Gli shader sono programmi specializzati utilizzati dallhardware grafico per produrre immagini. Di solito sono suddivisi in programmi più piccoli che gestiscono diversi aspetti del processo di rendering hardware.
Ci sono diverse varietà ma i più comuni sono pixel e vertex shader.
Gli shader vertex shader è responsabile dellapplicazione di eventuali modifiche alla geometria di input. Di solito questo significa proiettare la geometria 3-d sul piano di proiezione 2-d dellimmagine di output, ma a volte potresti anche aggiungere un qualche tipo di movimento procedurale o deformazione alla geometria qui.
Il pixel shader prende loutput del vertex shader e genera i pixel che verranno visualizzati nellimmagine finale. Il più delle volte questo si basa su alcune variazioni dell equazione di rendering , confrontando la direzione del pixel con le direzioni delle sorgenti luminose e le proprietà della superficie , ma potrebbe essere qualsiasi cosa, da una funzione di rumore casuale a una simulazione complessa o raytracing.
La parte più diversa dalla programmazione ordinaria è che sia i vertici che i pixel shader sono estremamente parallelizzato. Ogni vertex shader verrà eseguito su ogni vertice nei dati di input allo stesso tempo; ogni pixel shader verrà eseguito contemporaneamente su ogni pixel nellimmagine finale. Ciò significa che è difficile fare qualcosa su un pixel in base allo stato di un altro: tutti i pixel verranno eseguiti allo stesso tempo indipendentemente luno dallaltro. Gli effetti che devono essere consapevoli del contesto spesso devono eseguire più pixel shader uno dopo laltro, memorizzando i risultati in immagini temporanee.
Questo ti offre una panoramica decente e molto semplice di come funziona:
Risposta
Un “pixel shader” (che è un brutto nome per un “fragment shader”) è un piccolo programma che viene eseguito in parallelo molte volte sulla GPU per determinare il colore dei frammenti. In termini di base i frammenti sono concettualmente molto simili ai pixel, da cui il nome confusione.
Quando la geometria viene inviata per il disegno, i vertici vengono trasformati dal “vertex shader”. La pipeline costruirà primitive come triangoli o linee, e dopo che sono state proiettate sullo schermo e ritagliate, il rasterizzatore elaborerà tutti i pixel che vengono toccati e interpolerà qualsiasi valore tra i vertici come colori, coordinate della trama o normali . Lo shader dei frammenti viene eseguito per ciascuno dei frammenti per elaborare il colore finale. Vengono eseguite altre operazioni come il test di profondità / alfa / stencil e quindi i frammenti potrebbero essere mediati insieme nel caso di antialiasing multicampione, prima di diventare finalmente i colori dei pixel effettivi da scrivere o miscelare nel buffer dello schermo.
Immagine tratta da qui .