A vertex shader program meghatározza, milyen műveleteket kell végrehajtani az egyes vertexeken.
Bemenete lehet attribute, uniform vagy sampler típusú változó, kimenete pedig varying típusú változó. Az attribute típusú változó pontonkénti adatok (pl. vertextömbök) tárolását támogatja, a uniform típusúba a vertex shader által használt konstans kerül. A sampler egy speciális típus, mely textúrákat reprezentál.
A vertex shader outputja ezeknek a bemenő változóknak a segítségével áll elő, és ezt a minden fragmensre lineáris interpolációval számolt outputot kapja majd a fragment shader bemenetként. A vertex shadert vertex-alapú műveletekhez használjuk, amilyen például a geometriai transzformálás mátrix segítségével, a vertexenkénti színszámítás, a textúra-koordináták generálása, transzformálása. Mind a vertex, mind a fragment shader GLSL (OpenGL Shading Language) nyelven íródik.
A fragment shader az egyes fragmensek rajzolását határozza meg, inputja a vertex shader outputja.