1Rasterization
The process of superimposing a grid over a vector image and determining the colour depth for each pixel.
In short, turning 3D to pixels.
2Primitives
Different ways to connect vertices in rasterization, usually to form multiple triangles
3Fragment
A sampled position on a surface, containing the data required to shade it.
A pixel may contain multiple fragments.
4Bitmaps
Blocks of memory that hold sprites pixel by pixel, as bits of graphical data.
Good for 2D, doesn't scale well though.
5Vector-based Rendering
A method made up of mathematical functions that define lines, points, and curves between two points, which are taken into account when rendering the final image.
Scales better.
6Ray Tracing
An advanced rendering method that is used to create incredibly realistic lighting effects for things like video games and movies.
Simulates light rays, shot from either a light source or from the camera.
Used for photorealism, very resource intensive and slow.
7Rasterization Pipeline
Vertex Operations: (Input of Vertex Attributes, Position, Colour, Texture Coordinate, Normal, etc.)
-Vertex Specification
-Vertex Transformation
-Vertex Clipping
-Perspective Divide
-Viewport Transform
-Primitive Assembly
\/
Fragment Operations
-Rasterization
-Sample Processing
--Depth Test
--Alpha Blending
-Write To Framebuffer
(Outputs Fragment Colour & Depth)
8Vertex Specification
Determines the vertex setup for the rest of the pipeline by defining the memory contents (the data being displayed) and layout
9Vertex Transformation
Takes the vertices, currently local to the shape, and transforms them to be local to the camera view
Takes advantage of vertex reuse (a single set of vertices are made and copied for all assets)
10Vertex Clipping
Any shapes outside of the camera are either culled (removed entirely) from the pipeline, or clipped (partially removed)
11Perspective Divide
Vertices are transformed again to add the effects of the perspective to the vertices
12Viewport Transformation
Vertices are transformed again so their positions equate to exact positions on screen
13Primitive Assembly
Individual vertices are grouped according to the primitive type, allowing for appropriate rasterization
14Sample Processing
Rasterization produces samples (fragments). Each sample includes the data that needs to be written to different buffers.
This step prepares that data for writing to buffers.
15Coordinate Handedness
The way the Z coordinate points
Left Handedness: pointing away
Right Handedness: pointing towards
16Frame Buffers
Buffers that store the results of fragment processing before they're displayed on the screen.
Tend to have two frame buffers to stop unfinished frames being displayed (Double Buffering)
17Rendering API
Used to interact with the GPU in a simple way. These add extra wrapping to Vertex Transformation and Sample Processing, using shaders as well for these bits.
E.g., DirectX, OpenGL, Vulkan
18Command Buffers
A queue of API calls to the GPU (FIFO) which the GPU tries to get through ASAP. Allows for the GPU to work asynchronously.