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

deferred shading
Figure 1: Deferred Shading Breakdown

Resources: OpenGL Tutorial, Three.js, Erkaman

(XX pts): HDR Rendering

High-dynamic range rendering, perhaps with bloom.

hdr
Figure 2: HDR Example

Resources: Wikipedia, OpenGL Tutorial, Three.js, Schwarzschild Black Hole

(XX pts): Shadow Mapping

E.g. with the ability to toggle on / off.

shadow mapping
Figure 2: Shadow Mapping

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)

SSAO
Figure 2: 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.

dof-realtime
Figure 2: Depth-of-field

Resources: NVIDIA GPU Gems, Casual Effects, Wronski, Three.js

(XX pts): Bump/normal/displacement mapping

E.g. with the ability to toggle on / off.

Bump/normal/displacement mapping
Figure 2: Bump/normal/displacement Map

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.

Bump/normal/displacement mapping
Figure 2: Roblox Bezier Camera Movement

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

Flocking Example
Figure 3: Example of Boids Flocking with boid criteria

(XX pts): Portal Rendering

Portals: lots of trickery involved—mesh and camera duplication, slicing, rotated clipping planes, just to name a few.

Portals Example
Figure 5: Example of Portals

(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.).

L-Systems
Figure 5: L-Systems

Resources: Wikipedia, Algorithmic botany, Morphocode

(XX pts): Basic Physics Simulation

(XX pts): Spring & Mass Systems

spring mass
Figure 5: Spring

Resources: CMU Course Slides, UToronto Assignment, Matt's Webcorner

(XX pts): Particle Systems

Particle System
Figure 5: Particle System

Resources: Gamasutra, DirectToVideo, Three.js, '17 Final Project Example

(XX pts): Pixel Art Shading

Pixel Shader Gem
Figure 2: Example of Pixel Shader

Resources: Pixel Shader w/ Outlines: a simple, if slightly brittle shader (plus, interactive demo).

(XX pts): Non-Photorealistic / Stylized Rendering

Toon ShadingStylized Shader
Figure 2: Stylized Shaders

Resources: Toon Shader Tutorial

(XX pts): Crepuscular rays

Crepuscular Rays
Figure 2: Crepuscular Rays

Resources: Wikipedia, GPU Gems Tutorial, Sanglard Implementation, Anticrepuscular Rays, Atmospheric Scattering

(XX pts): Piecewise Bezier Surfaces

Bezier Surface
Figure 2: Piecewise Bezier Surface

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!

WFC Example
Figure 4: Example of Wave Function Collapse

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

Clouds Example
Figure 7: Example of Real-time Volumetric Clouds

(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!

Snow Example
Figure 8: Example of Interactive Snow

(XX pts): Scrolling Displacement Maps

Water and Scrolling Displacement Maps: a pretty simple way to efficiently implement something like a lapping / flowing water texture.

Scrolling Displacement Example
Figure 9: Example of Scrolling Displacement Maps

(XX pts): Pivot Caching

Wobbly Leaves and Pivot Caching: storing vertex attributes in textures, then using vertex shaders to make performant animations.

Wobbly Leaves Tree
Figure 1: Example of Pivot Caching

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

Stencil Buffer Example
Figure 6: Example of Stencil Buffers

(XX pts): GPU Raytracing

In fragment/compute shaders, or using modern raytracing APIs (e.g. OptiX).


Ray Features List

(XX pts): Ambient Occlusion

Ambient Occlusion
Figure 2: Ambient Occlusion

Resources: Wikipedia

(XX pts): Depth of Field

Sampling-based depth of field.

Dof1Dof2
Figure 2: 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.

Fractal
Figure 2: Fractals

Resources: Wikipedia, Mandelbulb.com, [ShaderToy #1]

(XX pts): HDR Rendering

HDR Image-based Lighting
Figure 2: HDR Image-based Lighting

Resources: CG Learn, NUS Slides

(XX pts): Area Lights/Soft Shadows

Soft Shadows
Figure 2: Soft Shadows Example

Resources: Raytracer challenge, Ray Tracing in One Weekend

(XX pts): Motion Blur

Sampling-based motion blur

Sampling Based Motion Blur
Figure 2: Sampling Based Motion Blur

Resources: 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.

Portals Example
Figure 5: Example of Portals

(XX pts): Dynamic Acceleration Structures

Dynamic acceleration structures
Figure 2: Screenshots from an animated 180,000 triangle scenes with moving dragonfly, fairy, and plants. At 1024 x 1024 pixels the scene is ray traced at roughly 3.7 frames per second.

(XX pts): Lens Assemblies

(XX pts): L-Systems

Lindenmayer systems (for trees, plants, etc.).

L-Systems
Figure 5: L-Systems

Resources: Wikipedia, Algorithmic botany, Morphocode