Uno shader di frammenti viene eseguito per frammento ed emette pixel. Sono molto simili, ma non uguali.
Un frammento è una raccolta di valori prodotti dal rasterizzatore. Ogni frammento rappresenta un segmento di dimensioni campione di un Primitivo rasterizzato. La dimensione coperta da un frammento è correlata all'area dei pixel, ma la rasterizzazione può produrre più frammenti dallo stesso triangolo per pixel, a seconda dei vari parametri di multicampionamento e dello stato OpenGL. Ci sarà almeno un frammento prodotto per ogni area di pixel coperta dal primitivo che viene rasterizzato. Source
Quindi, se si disabilita completamente il campionamento/antialiasing, ciascun frammento dovrebbe mappare su un pixel. Ma se lo abiliti, più frammenti verranno interpolati per formare un singolo pixel.
La differenziazione può essere visto anche nella resa Condotte di OpenGL qui: https://openglinsights.com/pipeline.html
Se siete alla ricerca di definizioni, suppongo hai guardato il wiki? Ad esempio [questo] (https://www.opengl.org/wiki/Fragment) e [questo] (https://www.opengl.org/wiki/Per-Sample_Processing) pagina? – vesan
Sì, l'ho fatto, anche se ancora non capisco. Ad esempio, "Ogni frammento rappresenta un segmento di dimensioni campione di un Primitivo rasterizzato". Cosa intendono per campione? – Jeffrey
significa che il frammento può avere dimensioni diverse da pixel, ad esempio se si esegue il campionamento multiplo per scopi anti-aliasing. Il frammento viene convertito in pixel nell'ultima fase di rendering. Lo vedo così: 'Fragment' è l'unità atomica dei tuoi buffer di destinazione di rendering e' Pixel' è l'unità atomica del dispositivo di rendering (schermo). Anche il frammento ha più informazioni e poi pixel come: coordinata Z, tutti i colori e valori del buffer target, ... Questo è almeno il modo in cui lo vedo. – Spektre