a subroutine written in a shading language describing: vertex transformations, skinning, and possibly vertex lighting (in vertex shaders); shading calculations (in pixel shaders); control over tessellation(tessellation shaders); or general purpose computation.