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.




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 from scratch without using any pre-made 3D graphics or linear algebra 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 support for curved surfaces using bezier splines, and a simple ray-tracing renderer. Both of these can be seen in the gallery above.


 2015 Elliot Borenstein