# Glossary

## A

- Aliasing: an effect that reduces the quality of images that are under-sampled.
- Ambient lighting: lighting that is applied equally to all surfaces regardless of normal.
- Antialiasing: a process for reducing aliasing.
- Array buffer: a binding point that is used to specify a buffer that contains vertex attributes.
- Attribute: a type of variable that is used to pass vertex-specific data to vertex shaders.

## B

- Binding point: a pointer with a specific purpose.
- Bitmap image: an image stored as an array of fragments.
- Buffer: an array of binary data.

## C

- Camera matrix: a matrix that represents the transformation of the camera.
- Clip space: a coordinate system that represents the rendering context in the range $[-1,1]$.
- Clipped: not rasterized due to being outside of clip space.
- Color buffer: a region of a framebuffer that holds color data.
- Color space: a coordinate system that organizes the values of colors in the range $[0,1]$.
- Cubemap: a type of texture that consists of six faces.

## D

- Depth buffer: a buffer that stores the depth of fragments.
- Depth testing: the process by which fragments are only rasterized if they pass a test based on the depth buffer.
- Diffuse lighting: directional lighting.
- Directional lighting: lighting that comes uniformly from one direction.
- Dot limit: the cosine of a limit.
- Drawing buffer: the color buffer that contains the fragments that are rasterized to the rendering context.

## E

- Element array buffer: a binding point that is used to specify indices on a VAO.
- Environment map: a cubemap that represents the environment of a scene.

## F

- Fragment: a pixel.
- Fragment shader: a shader that computes fragment colors.
- Frame: an image in a sequence.
- Framebuffer: a portion of contiguous memory.
- Frame rate: the rate at which frames are rasterized.

## G

- GLSL: the OpenGL ES Shading Language; a strictly-typed language that runs on the GPU.
- GLSL ES 3.00: the third version of GLSL; the version of GLSL that WebGL2 shaders use.

## H

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

## I

- 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

- Mip: a smaller version of a texture that is used to rasterize the texture at different sizes.
- Mipmap: a collection of mips.
- Multisampling: a form of antialiasing.

## 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.

## O

- OpenGL: the rasterization engine that WebGL is based on.
- OpenGL ES 3.0: the third version of OpenGL; the version of OpenGL that WebGL2 is based on.
- 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.
- Perspective projection: a projection that scales its shape based on its distance from the camera.
- Pixel: a discrete unit used to represent visual information.
- Point lighting: lighting that extends in every direction from a point.
- Polygon culling: the process by which only front-facing polygons are rasterized.
- Primitive: points, lines, and triangles; shapes that are understood by computers.
- Projection: a linear transformation from a vector space to itself.
- Projection mapping: the process of projecting an image.
- Projection matrix: a transformation matrix that applies a projection.

## R

- Rasterization: the process of drawing one or more primitives with pixels.
- Rasterization engine: an engine that rasterizes primitives.
- Rasterization step: a step that is executed once on each frame.
- Renderbuffer: an object that contains an image.

## S

- Sampler: a uniform that is used to sample a texture.
- Scene graph: a general data structure that arranges the local representation of a graphical scene.
- Screen space: a coordinate system that represents the rendering context in the ranges $[0,x]$ and $[0,y]$ for horizontal and vertical coordinates, respectively, where $x$ is the width of the rendering context in pixels and $y$ is the height of the rendering context in pixels.
- Shader: a function that runs on the GPU.
- Shader program: a pair of one vertex shader and one fragment shader that are linked together and used to rasterize 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 in a cone.
- Swizzling: the process of accessing the components of a vector using a specific shorthand syntax.

## T

- Texel: a texture element.
- Texture: an array of data that can be randomly accessed.
- Texture complete: the property of a texture that allows it to be rasterized.
- 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]$ from left to right, first pixel to last pixel.
- 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 for each vertex.

## 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 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 the camera matrix.
- View projection matrix: a product of a projection matrix and a view matrix.
- Viewport: an affine transformation of the horizontal and vertical axes from clip space to screen space.

## W

- WebGL: a rasterization engine that is designed to work in the browser.
- WebGL2: the second version of WebGL.
- WebGL API: the interface that allows JavaScript to interact with WebGL.
- World matrix: a transformation matrix that represents the transformation of a node in a scene graph relative to the origin.
- World view projection matrix: a matrix that transforms vertices to appear from the point of view of a camera.