OpenGL extensions allow graphics card vendors to provide access to new features without waiting for updates to the OpenGL specification. Extensions add new functions, tokens, and capabilities. Functions are prefixed with "gl" while tokens use all capital letters prefixed by "GL_". Extensions are supported through platform-specific header files. Functions in extensions must be dynamically queried at runtime. Vertex and fragment shaders replace fixed-function OpenGL by implementing vertex transformations, lighting, texturing, and pixel operations through the OpenGL Shading Language (GLSL). Shaders are compiled and linked into programs for use. Uniforms and attributes are used to pass data between GLSL shaders and OpenGL.