# Glossary

## A

- Aliasing: an effect that reduces the quality of images that are under-sampled.
- Alpha premultiplication: the process of multiplying the red, green, and blue channels by the alpha value when image data is supplied to a texture.
- Ambient lighting: lighting that is applied equally to all surfaces regardless of normal.
- Anti-aliasing: a process for reducing aliasing.
- Approximate OIT: OIT that computes an approximation of the correct final color.
- Attribute: a type of variable that is used to pass vertex-specific data to vertex shaders. They read data from buffers.

## B

- Binding point: a pointer with a specific purpose.
- Bitmap image: an image that is stored as an array of fragments.
- Blend function: the function that is used to determine how the result of a blending operation is calculated.
- Blending: the process of computing a fragment's new color based on an incoming (source) value and the existing (destination) value.
- Buffer: an array of binary data.

## C

- Camera matrix: a matrix that represents the transformation of a camera.
- Clip space: a coordinate system that represents the canvas in the range $[-1, 1]$ on each axis. The negative boundaries for each direction are left, down, and near, respectively.
- Clipped: refers to a fragment that has been discarded due to being located outside of clip space.
- Color buffer: a region of a framebuffer that holds color data.
- Color space: a coordinate system that organizes each of the red, green, blue, and alpha values of colors in the range $[0, 1]$.
- Context: the collection of variables that define how OpenGL should operate.
- Cubemap: a type of texture that consists of six faces.

## D

- Depth buffer: a buffer that stores the depth of fragments.
- Depth peeling: a simple method of exact OIT in which an implicit sort is used to extract multiple depth layers.
- Depth test: the test that compares the depth of an incoming fragment to the depth of the existing fragment.
- Diffuse lighting: lighting that comes uniformly from one direction.
- Directional lighting: diffuse lighting.
- Distance fog: fog that obscures the far end of the camera's view frustum.
- Dot limit: the cosine of a limit.
- Draw buffer: the color buffer that contains the fragments that are rendered to the canvas.
- Dual depth peeling: a faster version of depth peeling that renders twice as many layers of transparent fragments with the same number of passes.

## E

- Element buffer object: a buffer that contains index data; an EBO.
- Environment map: a cubemap that represents the environment of a scene. Commonly used to approximate reflections.
- Exact OIT: OIT that accurately computes the final color.

## F

- Fragment: a discrete visual unit. If the resolution of the canvas matches its physical size, each fragment is equivalent to a pixel.
- Fragment interpolation: the process of interpolating the value that is stored in a varying between fragments.
- Fragment shader: a shader that computes fragment colors.
- Frame: short for "framebuffer;" typically used to refer to the data in a framebuffer at a specific instant, as in "frames per second."
- Framebuffer: a portion of contiguous memory; an FBO.
- Frame rate: the rate at which the default framebuffer is written to.

## G

- Geometry shader: a type of shader that modifies a set of vertices. It does not exist in WebGL.
- GLSL: the OpenGL Shading Language; a strictly-typed language.

## H

- Half vector: a vector that sits halfway between two other vectors.

## I

- Indexed drawing: drawing data as specified by a VAO by using the indices in the attached EBO.
- Initialization step: a step that is executed once at the beginning of a program.

## L

- Limit: the angle from the direction of a cone to its sides.
- Location: a pointer to a variable in a shader program.

## M

- Mach bands: an optical illusion in which the contrast between the edges of slightly differing shades of gray is exaggerated.
- Mip: a smaller version of a texture that is used to sample that texture at different sizes.
- Mipmap: a collection of mips.
- Multisampling: a form of anti-aliasing.

## N

- Normal: a unit vector that represents the direction that a surface is facing.
- Normal matrix: the inverse transpose of the rotation portion of a transformation matrix. Multiplying normals by a normal matrix has a similar effect to multiplying positions by a transformation matrix, except that it allows the normals to remain correct even when the corresponding vertices are scaled.
- Normalized device coordinates: clip space coordinates.

## O

- OpenGL: the specification for an API that can be used to render 3D scenes.
- Order-independent transparency: a class of techniques for rendering transparency which do not require rendering geometry in sorted order; OIT.
- Orthographic projection: a projection that uses parallel lines to project its shape.

## P

- Peter panning: an effect resulting from adding a bias to fragment depth that causes shadows to appear slightly disjointed from their caster.
- Percentage-closer filtering: a technique for anti-aliasing shadows; PCF.
- Perspective projection: a projection that scales its shape based on its distance from the camera.
- Phong lighting model: a simplified lighting model with three components (ambient, diffuse, and specular).
- Pixel: a discrete unit that is used to represent visual information; a picture element.
- Point lighting: lighting that extends in every direction from a point.
- Polygon culling: the process of discarding polygons based on their orientation.
- Primitive: points, lines, and triangles; shapes that are understood by computers.
- Primitive assembly: the rendering stage during which vertices are put together to form a primitive.
- Projection: a linear transformation from a vector space to itself.
- Projection mapping: the process of projecting an image onto a surface.
- Projection matrix: a transformation matrix that applies a projection.

## R

- Rasterization: the process of computing the mapping from scene geometry (primitives) to fragments.
- Rasterization stage: the rendering stage during which a primitive is mapped to fragments.
- Render step: a step that is executed once on each frame.
- Renderbuffer: an object that contains an image and is optimized for use as a render target.

## S

- Sampler: a uniform that is used to sample a texture.
- Sampling: the process of retrieving a texel from a texture.
- Scene graph: a general data structure that arranges the local representation of a graphical scene; a collection of nodes in a tree structure, with each node having one parent and a non-negative number of children.
- Screen space: a coordinate system that represents the canvas in the ranges $[0, x]$ and $[0, y]$ for horizontal and vertical coordinates, respectively, where $x$ is the width of the canvas in fragments and $y$ is the height of the canvas in fragments. The negative boundaries for each direction are left and up, respectively.
- Shader: a function that runs on the GPU.
- Shader program: a vertex shader and a fragment shader that are linked together and used to render primitives.
- Shadow acne: a visual artifact resulting from the limited resolution of a shadow map.
- Shadow map: a texture that contains depth data from the point of view of a light source.
- Skybox: a cubemap that represents the background of a scene.
- Specular lighting: lighting that results from light reflecting off of a shiny surface.
- Spot lighting: lighting that extends from a point in a cone.
- Swizzling: the process of accessing the components of a vector using a specific shorthand syntax.

## T

- Texel: a discrete point of data in a texture; a texture element.
- Texture: an array of data that can be randomly accessed. Primarily used to store image data.
- Texture atlas: a texture that contains multiple images.
- Texture complete: the property of a texture that allows it to be rendered. In order for a texture to be texture complete, it must either have a complete mipmap or only sample its largest mip.
- Texture matrix: a modified view projection matrix that also converts from clip space to texture space.
- Texture space: a coordinate system that represents a texture in the range $[0, 1]$ on each axis. The negative boundaries for each direction are left and down, respectively.
- Texture unit: a value that represents a texture and is passed to a shader program in its stead.
- Tightly-packed: describes data in which the number of bytes from the start of one element to the next is the same as the byte size of the element.
- Transformation matrix: a matrix that represents transformations.

## U

- Uniform: a type of variable that is uniform across each vertex.
- Unpack alignment: a property that specifies the expected alignment of the rows in supplied texture data.

## V

- Varying: a type of variable that varies between each vertex.
- Vertex array object: a collection of information that tells attributes which buffers they should read data from and how they should do it; a VAO.
- Vertex buffer object: a buffer that contains vertex data; a VBO.
- Vertex shader: a shader that computes vertex positions.
- View direction matrix: a view matrix with the translation component removed.
- View direction projection matrix: a product of a projection matrix and a view direction matrix.
- View matrix: an inverse of a camera matrix; a matrix that represents the transformation that would move a scene into the view of a camera.
- View projection matrix: a product of a projection matrix and a view matrix; a matrix that can be used to apply perspective and move a scene into the view of a camera.
- Viewport: a rectangle that specifies the affine transformation of the horizontal and vertical axes from clip space to screen space.

## W

- WebGL: a specification for an API that can be used to render 3D scenes. Based on OpenGL, but designed to work in the browser.
- WebGL API: the API that allows developers to work with WebGL via JavaScript.
- World matrix: a transformation matrix that represents the transformation of a node in a scene graph relative to the origin.
- World view matrix: a product of a view matrix and a world matrix; a matrix that transforms vertices to appear from the point of view of a camera.
- World view projection matrix: a product of a view projection matrix and a world matrix; a matrix that transforms vertices to appear from the point of view of a camera and applies a projection.