|
Real-time Soft Shadows from Spherical Occluders
|
Description:
I researched real-time soft shadows at UC Davis and
wrote my thesis on this topic as well. This algorithm calculates fast and accurate
soft shadows using a spherical light source and sphere-based occluders: spheres and
capsules, or spheres swept along a line segment. Each occluder has of cones that
encapsulate the volume of space that is fully or partially shadowed by that occluder.
We calculate these cones on the CPU every frame. Then, using vertex and fragment shaders,
we can quickly determine if a fragment is inside these cones, and if so, how much of the
light the fragment can see.
Features:
- Real-time soft shadows
- Shadows on arbitrary surfaces
- Dynamically change light or occluder sizes
- Antiumbra effect for large light sources
Downloads:
|
|
Snowball Game
|
Description:
I wrote a little snowball game for a class project. The game's actually not really fun,
but it demonstrates some decent real-time effects. The game starts with a snowball at
the top of a hill that you guide as it rolls down. Along the way there's water flowing down,
bridges across the streams, trees, and ice. The terrain is rendered using a LOD heightfield
where the level is based on both distance and variance in height. Ice/snow is rendered using
multitexturing and an alpha map. Trees are rendered using distance-switched LOD, where far
trees are 2D billboards. There is also a particle system to render snowfall and a nice splashing
effect at the end.
Features:
- LOD Heightfield
- Multitexturing
- Particle System for snow and water effects
- LOD trees with billboards
- Gravity, simple physics and collision
- Skybox and Skydome
Downloads:
|
|
Photon Tracer
|
Description:
Writing a photon tracer was my first exposure to non real-time
rendering. Spending 8 hours to render a scene was completely new to me, but the project
was actually a lot of fun and I think I did a pretty good for in 8 weeks. For the first
part of the project, I rendered the Cornell Box with only diffuse surfaces. Then I
extended it to support specular, translucent, and specular-diffuse surfaces. This allowed
me to render a much wider variety of objects. For the final part, I rendered a bathroom
scene complete with shiny tiling, mirrors, a chrome faucet, and water.
Features:
- Water rendering using Schlick's approximation for fresnel coefficients
- Tunable Diffuse-Specular surfaces
- Doo-Sabin subdivision heightfields
- Layered Perlin noise for water surface simulation
Downloads:
|
|
Doo-Sabin Subdivision
|
Description:
This project subdivides a mesh using the Doo-Sabin subdivision
technique. I use a
Split-edge data structure to traverse the edges, vertices, and faces of a mesh
easily when subdividing. A hash table of vertices also minimizes subdivision time.
Features:
- 3DS Model support
- Fast subdivision using a Split-edge data structure and a hash table
Downloads:
|
|