10: The OpenGL Pipeline
20: Review
COMP5822M: High Performance Graphics
01: Projective Pipeline
How the projective pipeline actually works
Locking queues or equivalent
Passing information between stages
Loops for each major stage
The underlying design choices
What data needs to move between stages
And how it should be packaged
COMP5822M: High Performance Graphics
02: GPU Architecture
Details of the typical architecture
SIMD Parallelism
Standard Modern Pipeline
And the standard stages
With their uses
Malleability of stages
Compute shaders
COMP5822M: High Performance Graphics
03: Vulkan Design
Explicit pipeline without (much) state
Programmer handles everything
Batch processing, jobs, queues, buffers
Double buffering & swap chains
Memory allocation & pools
Object enumeration & allocation
Dispatch tables & function interception
COMP5822M: High Performance Graphics
04: Vulkan Resources
Memory allocation & binding
Types of buffers
Queues, commands, buffers & submission
Data barriers & fences
Image presentation
COMP5822M: High Performance Graphics
05: Intro to GLSL
Shaders & SPIR-V
Shader compilation, language & I/O
Standard Types
I/O & Descriptors
Uniform & Varying Storage
COMP5822M: High Performance Graphics
06: Vertex Buffers
Vertex buffer location: RAM/VRAM/shared
Packaging attributes
Transfer via staging buffer
Access via layout & location
COMP5822M: High Performance Graphics
07: Phong Shading Pipeline
Uniform buffers for constants
eg matrices, flags & textures
Vertex shader transforms & outputs normals
Rasteriser interpolates normals
Fragment shader computes Blinn-Phong
COMP5822M: High Performance Graphics
08: Synchronisation
Single-thread programming (setup code)
Programmer discipline (the Vulkan Way!)
Locking primitives (expensive)
Signalling primitives (stall)
Block/stream operations (all GPUs)
Semaphores & Fences
Example of a Ring Buffer
COMP5822M: High Performance Graphics
09: Compositing Tricks
Anti-aliasing
Supersampling (MSAA)
Screen-based (MLAA)
Motion Blur (TXAA)
Depth Buffer Motion Blur
Depth of Field
COMP5822M: High Performance Graphics
10. Texture Storage
Mipmapping:
Mipmap Generation & Storage
Trilinear Interpolation
Isotropic Overblurring
Anisotropic Filtering
Volumetric Textures / Cube Maps
Texture Compression
Normal Maps
COMP5822M: High Performance Graphics
11. Attribute Maps
Bump Maps
Surface Frames
Shading in Tangent Space
Height / Normal / Displacement Maps
Parallax / Relief Maps
Alpha Maps & Render Order
Procedural Textures & Perlin Noise
COMP5822M: High Performance Graphics
12. Fur Shading
Applies Volumetric Rendering
Shells parallel to surface
Fins perpendicular to silhouette
Both rely on tangent space (surface frame)
Both use alpha-blending to approximate VR
Textures constructed by growing hair textures
Based on stored pseudo-random seeds
COMP5822M: High Performance Graphics
13. Shadow Mapping
Hard & Soft Shadows
Projected Shadows
Shadow Volumes & Stencil Buffer
Shadow (Depth) Textures
Light Coordinate System LCS
Fragment Shader recomputes LCS
and uses as texture coords for test
Percentage Closer Filtering (PCF)
COMP5822M: High Performance Graphics
14. Local Illumination
Rendering Equation
Multipass Lighting
Screen-Space Techniques
Deferred Shading
Ambient Occlusion: SSAO
Indirect Illumination: SSDO
Precomputed AO/DO
COMP5822M: High Performance Graphics
15. Real Time Water
Caustics
Image-Space Scatter / Gather Caustic Map
Quad Photon Gathering
Beam Distortion
Nearby Neighbour Gathering
Hierarchical Caustic Maps
Height Field Caustics
COMP5822M: High Performance Graphics
16. Skin & Subsurface
Normal Blurring
Texture Space Diffusion
Depth Map Techniques
Texture Distortion & Stretch Map
Translucent Shadow Maps
Scattered Diffuse Colour
COMP5822M: High Performance Graphics
17. Deferred Rendering
Forward vs. Deferred Rendering
Deferring Pass & Deferred Pass
Transparency is hard to do
Forward Rendering is usually the fallback
Radiosity & Equilibrium
Progressive Radiosity
Real-Time Ray Tracing
COMP5822M: High Performance Graphics
18. Pipeline Optimisation
Profiling Tools
Locating Bottlenecks
Geometry Stage Testing
Raster Stage Testing
Performance Measurements
Asset Optimisation
Application Stage Optimisation
Rasteriser Optimisation
COMP5822M: High Performance Graphics