CSE 168 / Final Rendering Project

Stephan Steinbach

"Deco Blue"




When I started this I actually had a fairly different scene in mind. I wanted something a lot more realistic. My original reference photography centered around the streelamps you find around campus here at UCSD, I wanted something with fog maybe... but eventually I got sidetracked into my personal favorite part of computer graphics, writing shaders.

So eventually I decided to scrap most of that and just focus on the shaders, along with the way they looked when put into the GI/pathtracing algorithm. The shaders are all written in C++.

In the end, I concluded path tracing would be sufficient for my purposes, although at the eleventh hour I added a "sun" object in random place in my scene which introduced vast amounts of noise into my scene, because of the way it casts light. I ended up rendering with 100 paths/primary ray and 9 primary rays/pixel

Final features:

  • Path Tracing
  • Distribution Ray tracing/antialiasing
  • "ghost" shader (shiny candy paint shader used in final image rendering
  • grid acceleration structure

I made a conscious decision to forego photorealism and decided to attempt something more visually pleasing.

In any case, some of the reference photography I started from:


nice profile of the entire shape


one type of top

detail shot

more interesting head shape


  For my modelling I used Alias|Wavefront Maya 5/6. I went and modeled the streetlamp:  

I included the number plate and adjusted the edges, as well as the weird structure of some of the lights (having a wooden shaft with the bottom part surrounded by metal).

I added a simple cartoonish character, and used a simple skeleton to make it easy to pose him.


test rendering of models done in maya/mental ray.


At this point I started to get sidetracked by shader design, which is what I really like:

I think in this case the light is being negated and multiplied by the normal

leaving out certain triangles of the object.

I also got path tracing working:

I decided I really liked the look of this blue shader. Note the way it shifts the reflected color along its edges. I started to tweak and experiment with the foundation of the shader, the relationship of the normal at the hit location with the incoming ray.


  So the way this shader works is by firstly breaking the reflectivity (magnitude of the reflected color) and the color of the reflected ray into two separate values, which are mapped to two separate gradients. The coordinate in the gradient is chosen by the ratio of the hit location normal to the incoming ray direction, and I used a two-section gradient for the reflectivity, to make sure that the range near the edge had a certain flatness. this helped the "candy paint" style of the shader. You should notice the way it appears that there is a thin layer surrounding the objects, because they reflect the background layer back, while the lambertian(diffuse) component is fading underneath this. I also added a phong highlight, but since none of my scenes had direct lighting, this is more or less irrelevant, but since it inherits from the phong class I figured I might as well include it.  


no diffuse shading, so you can see the way the reflectance behaves around the edges of the model.

I decided to try adding a few more elements to the scene, so I tweaked my "ghost" shader and added some buildings.

Maya screenshot of the set up:

So using path tracing some test images:

I liked the way the light was spilling from between the buildings.

but the path tracing algorithm would take wayyy too many paths to accurately capture this lighting. This took around 4 hours to render on an AMD XP2.2+ or whatever they're called. It had 500 paths per pixel and 9 samples per primary ray for Anti aliasing. You can see the nice way it begins to capture this behaviour, but path tracing simply wasn't meant to handle this kind of specific illumination... Perhaps bidirectional path tracing could have helped here, or maybe even if the object emitted photons with projection maps at the scene. In any case, I didn't have time to fix it before the competition... (maybe over summer? :) ).

I considered this as my final image, but decided that this took too much attention away from the shader themselves, and without the nice lighting effects it seemed like I might as well just strip it down to its bear essentials. For whatever reason I had added this weird tree on top of one of the buildings (with the vague notion that it would case cool volumetric shadows, I think) so I took that off the model and made this simple, very surreal, very basic scene.

So I stripped the scene way down, left it being lit by the background color, and decided that this would be my final submission.

final submission. Stephan Steinbach, June 2004

if you have any questions or comments, email steinbach _at_ ucsd _dot_ edu

my homepage.