Ben Newton - Rasterization Assignment


Part I

The source code for Part I and Part II of the assignment is in a zip file here.

For Part I of the assignment I wrote a program that could transform the given vertices into fragments, and then rasterize the lines and triangles to the output image.  The image below shows that the color of each vertex is interpolated across the triangle.  

my example 1 image

This example image demonstrates the ability to handle multiple triangles.  

my example 2

I didn't implement any of the extra credit options for part 1.  
My program basically scans the input file, and produces a vector of triangles and a vector of lines.  A loop then trasforms the vertices for a triangle or line, and then calles the RasterizeTriangle or RasterizeLine method passing it the Triangle and the ImageBuffer.  These methods set the appropriate pixels to the correct values.  I used some of the Triangle, Vertex, etc code from the ray tracing assignment as a starting place for model representation.  I created a new Matrix class for performing transformations.  

Also for Part I, I implemented the same rasterizer in Open GL.  The code is included in the zip archive above, as GLTri2. The following is a screenshot from the Open GL implementation.
my open gl example

Part II

For part II, I introduced Z buffering, and shading.  
I implemented only orthographic viewing.  Below are images of  several large models which I rasterized with my program:

my apple


my biplane

my monster

my pear

my teapot

The design of my program is much the same as that for Part I, except that I introduced the z buffer, and included the Z values in the transformation matrices, and vertices.