Recommended Technical Features
We suggest referring to this document while working on both Project 6: Final Project Gear Up
and Project 7: Final Project
. See the instructions in each handout for more info on what we're looking for.
Realtime Features List
(XX pts): Deferred Lighting
Resources: OpenGL Tutorial, Three.js, Erkaman
(XX pts): HDR Rendering
High-dynamic range rendering, perhaps with bloom.Resources: Wikipedia, OpenGL Tutorial, Three.js, Schwarzschild Black Hole
(XX pts): Shadow Mapping
E.g. with the ability to toggle on / off.Resources: OpenGL Tutorial, LearnOpenGL, Three.js
Possible improvements: Percentage close filtering (PCF), Cascaded Shadow Mapping, Variance Shadow maps Tutorial video
(XX pts): Environment Maps
E.g. cube maps / skyboxes.(XX pts): Ambient Occlusion
Screen-space ambient occlusion (SSAO)Resources: John Chapman Graphics, OpenGL Tutorial, Three.js
(XX pts): Depth-of-field
Distributed ray tracing or screen-space effects.Resources: NVIDIA GPU Gems, Casual Effects, Wronski, Three.js
(XX pts): Bump/normal/displacement mapping
E.g. with the ability to toggle on / off.Resources: OGLDev Tutorial, Open GL Tutorial, Three.js, 3D Kingdoms, Another demo, Textbook p.647
(XX pts): Collision Detection
With bounding boxes / spheres, or at the polygon level.(XX pts): Bezier Curve Movement
Camera or object motion along a path defined by a piecewise Bezier curve. E.g. to render a ride on a roller coaster.Resources: Paper
(XX pts): Shadow Volumes
With the ability to toggle on / off.(XX pts): Fog / Atmospheric Scattering
(XX pts): Crowds / Flocks
E.g. Boids: bird-like flocking behavior; something that you might easily add to any realtime project to spice it up a little :) (Another interactive demo).(XX pts): Portal Rendering
Portals: lots of trickery involved—mesh and camera duplication, slicing, rotated clipping planes, just to name a few.(XX pts): Inverse Kinematics
(XX pts): Anti-Aliasing
(XX pts): Procedural Generation
For art, buildings/cities, environments, and/or geometry.(XX pts): L-Systems
Lindenmayer systems (for trees, plants, etc.).Resources: Wikipedia, Algorithmic botany, Morphocode
(XX pts): Basic Physics Simulation
(XX pts): Spring & Mass Systems
Resources: CMU Course Slides, UToronto Assignment, Matt's Webcorner
(XX pts): Particle Systems
Resources: Gamasutra, DirectToVideo, Three.js, '17 Final Project Example
(XX pts): Pixel Art Shading
Resources: Pixel Shader w/ Outlines: a simple, if slightly brittle shader (plus, interactive demo).
(XX pts): Non-Photorealistic / Stylized Rendering
Resources: Toon Shader Tutorial
(XX pts): Crepuscular rays
Resources: Wikipedia, GPU Gems Tutorial, Sanglard Implementation, Anticrepuscular Rays, Atmospheric Scattering
(XX pts): Piecewise Bezier Surfaces
Resources: UC Berkeley Assignment
(XX pts): Wave Function Collapse
WFC: generating random maps, etc, using a set of pieces and pre-defined constraints on how they fit together. This algorithm was invented by a Brown Visual Computing Ph.D. student!(XX pts): Geometry and Tesselation Shaders
(XX pts): Volumetric Rendering
Noise, Clouds, and (Cheap) Volumetric Rendering: Worley noise and some volumetric rendering tricks help make clouds look good.(XX pts): Interactive Snow
"Interactive" Snow: many of the coolest things you see in video games are actually just textures and shaders in disguise. This is another one of those things!(XX pts): Scrolling Displacement Maps
Water and Scrolling Displacement Maps: a pretty simple way to efficiently implement something like a lapping / flowing water texture.(XX pts): Pivot Caching
Wobbly Leaves and Pivot Caching: storing vertex attributes in textures, then using vertex shaders to make performant animations.(XX pts): Stencil Buffers
Anime Eyes and Stencil Buffers: render anime-style eyes-over-hair using stencil buffers, the lesser known sibling of depth and color buffers.(XX pts): GPU Raytracing
In fragment/compute shaders, or using modern raytracing APIs (e.g. OptiX).Ray Features List
(XX pts): Ambient Occlusion
Resources: Wikipedia
(XX pts): Depth of Field
Sampling-based depth of field.Resources: Pathtracing.home, Ray Tracing in a weekend
(XX pts): Ray Marching
(XX pts): Fractals
E.g. Mandelbulbs. Almost always combined with ray marching.Resources: Wikipedia, Mandelbulb.com, [ShaderToy #1]
(XX pts): HDR Rendering
Resources: CG Learn, NUS Slides
(XX pts): Area Lights/Soft Shadows
Resources: Raytracer challenge, Ray Tracing in One Weekend
(XX pts): Motion Blur
Sampling-based motion blurResources: Peter Shirley Book
(XX pts): Portal Rendering
Portals: lots of trickery involved—mesh and camera duplication, slicing, rotated clipping planes, just to name a few.(XX pts): Dynamic Acceleration Structures
(XX pts): Lens Assemblies
(XX pts): L-Systems
Lindenmayer systems (for trees, plants, etc.).Resources: Wikipedia, Algorithmic botany, Morphocode