W 2001 wraz z powstaniem Pixel Shader i Vertex Shader zaimplementowanych w DirectX 8.0 zaczęto częściej wykorzystywać procesor graficzny do obliczeń niezwiązanych z grafiką. Programowalne jednostki cieniujące były wtedy jeszcze bardzo ograniczone (limit dla Vertex Shader 1.1 128 instrukcji; dla Pixel Shader 1.1-1.3 to 4 instrukcje na teksturach i 8 instrukcji arytmetycznych). Z czasem jednak posiadały coraz większe możliwości.
W 2004 powstał Shader Model 3.0, zaimplementowany w DirectX 9.0c, dający możliwość sterowania programem i zwiększony limit instrukcji do 512.
W 2006 powstał Shader Model 4.0 zaimplementowany w DirectX 10. Jednostki cieniowania pikseli (Pixel Shader) i wierzchołków (Vertex Shader) zastąpiono zunifikowanymi jednostkami cieniowania (zwanymi również procesorami strumieniowymi). Dzięki temu wzrosła wydajność, mogły być wykonywane obliczenia nie tylko typowe dla programów cieniujących oraz limit instrukcji wzrósł do 64 000.