Shader (dall’inglese to shade = ombreggiare, sfumare) indica un insieme di algoritmi usati soprattutto nella computer grafica 3D che conferiscono al materiale virtuale a cui sono abbinati delle caratteristiche o proprietà che ne descrivono o ne influenzano il modo di reagire alla luce e di rendere il passaggio da un punto completamente illuminato a uno in ombra.
Lo shader è in grado di simulare al video l’aspetto del materiale virtuale in modo tale da essere il più vicino possibile a quello reale. Tecnicamente, invece che inviare poligoni o immagini a una scheda video, un’applicazione può inviare specifici piccoli programmi, che descrivono come i poligoni e le immagini contigui debbano essere processati fino alla visualizzazione su schermo. I passaggi della pipeline grafica, e in alcuni casi l’intera pipeline, vengono rimpiazzati da questi programmi.
Per programmare la pipeline di rendering della GPU vengono utilizzati linguaggi di shading, che hanno in gran parte sostituito la pipeline a funzione fissa del passato che consentiva solo funzioni comuni di trasformazione della geometria e di shading dei pixel; Con gli shader è possibile utilizzare effetti personalizzati. La posizione e il colore (tonalità, saturazione, luminosità e contrasto) di tutti i pixel, vertici e/o texture utilizzati per costruire un’immagine renderizzata finale possono essere modificati utilizzando algoritmi definiti in uno shader e possono essere modificati da variabili esterne o texture introdotte dal programma che chiama lo shader.
Le shader si dividono in:
- Vertex shader, che manipolano le proprietà dei vertici senza crearne di nuovi.
- Geometry shader, che possono creare e modificare nuove geometrie (insieme divertici)
- Pixel shader (o fragment shader), che lavorano sulle proprietà dei singoli pixel rasterizzati e sulle texture.
L’utilizzo delle shader ha anche un ulteriore vantaggio; dato che ogni unità può far girare qualunque tipo di shader l’utilizzo della GPU è più uniforme, mentre nella pipeline a funzione fissa non vi è uniformità di utilizzo delle risorse.