Shader – krótki program komputerowy, często napisany w specjalnym języku programowania (shader language), który w grafice trójwymiarowej opisuje właściwości pikseli oraz wierzchołków. Technologia ta zastąpiła stosowaną wcześniej w kartach graficznych jednostkę T&L.
Cieniowanie pozwala na znacznie bardziej skomplikowane modelowanie oświetlenia i materiału na obiekcie niż standardowe modele oświetlenia i teksturowanie. Jest jednak dużo bardziej wymagające obliczeniowo i dlatego dopiero od wprowadzenia bibliotek API DirectX 8 (rok 2000) sprzętowa obsługa cieniowania pojawiła się wśród możliwości kart graficznych komputerów osobistych. Wcześniej cieniowanie stosowane było tylko w niektórych fotorealistycznych rendererach (np. Renderman), gdzie grafika nie jest jednak generowana w czasie rzeczywistym.
W stosunku do standardowych modeli oświetlenia, stosowanych do generowania grafiki w czasie rzeczywistym, cieniowanie umożliwia uwzględnienie między innymi: