In the field of computer graphics, a shader is a computer program that runs on the graphics processing unit and is used to do shading - the production of appropriate levels of light and darkness within an image - or, in the modern era, also to produce special effects or do postprocessing.

Shaders calculate rendering effects on graphics hardware with a high degree of flexibility. Shading languages are used to program the graphics processing unit (GPU) programmable rendering pipeline, which has mostly superseded the fixed-function pipeline that allowed only common geometry transformation and pixel-shading functions; with shaders, customized effects can be used. The position, hue, saturation, brightness, and contrast of all pixels, vertices, or textures used to construct a final image can be altered on the fly, using algorithms defined in the shader, and can be modified by external variables or textures introduced by the program calling the shader.

Shaders are used widely in cinema postprocessing, computer-generated imagery, and video games to produce a literally infinite range of effects. Beyond just simple lighting models - see List of common shading algorithms - more complex uses include altering the hue, saturation, brightness and/or contrast of an image, producing blur, bokeh, cel shading, posterization, bump mapping, distortion, chroma keying (so-called "bluescreen/ greenscreen" effects), edge detection and motion detection, psychedelic effects, and a wide range of others.

Read more about Shader:  History, Technology Overview, Types of Shaders, Parallel Processing, Programming Shaders