- access the colors and textures used to draw the model or mesh
- subdividing a model into smaller groups of triangles
- run once for each vertex given to the graphics processor
- transform each vertex's 3D position in virtual space to the 2D coordinate
- create new graphics primitives, such as points, lines and triangles.
- geometry shaders are executed after vertex shaders
- create dynamic shapes using vertex shaders
- create stunning visual effects using fragment shaders