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.

Wikipedia

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.

Wikipedia

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.