Rendering

A simple pair of cubes, each with arbitrary orientation and location. Many of the vertices have individual colors, while several faces have their own phong materials. Included in the scene are two lights, one orange and one white.

 

 

Details

The more I know about my craft, the easier it will be to adapt to new challenges and fix problems. To that end, I decided to learn as much as I could about the standard rendering pipeline used in 3D Graphics.

For the graduate Computer Graphics course at WPI, we were tasked with creating a standard scan-line renderer. Rather than use OpenGL, I chose to write my renderer in Java without using any pre-made 3D graphics components. My renderer has no GPU support, but it can handle a fair number of polygons in real-time. It supports:

  • per-vertex colors
  • per-face materials
  • three rendering modes (wireframe, per-vertex Gouraud shading, per-pixel Phong shading)
  • interactive perspective and orthographic cameras
  • mesh importation from Maya

Going beyond just a scanline renderer, I then added two more features. The first was the ability to generate curved surfaces using bezier splines. The second addition to the renderer was a simple ray tracer. Both of these can be seen in the gallery above.

 

 ©2010 Elliot Borenstein