Assignment 3 -- Due 3/27/08

Jonathan Hall


Problem 1:

Implement the Game of Life via a fragment shader rendering to Framebuffer Objects


Game of Life 1
Game of Life 2
Game of Life Set 1
Game of Life Set 2


(Click pictures for full view)

Problem 2:

This is a simple image processor. I implemented 3 filters, which are shown below.  Each filter is implemented via one or more shader passes and can be applied on top of other filters.


Original Image >>
>> Median Filter >>
>> Luminance Filter >>
>> 7x7 Box Filter
Original Image -- Noisy Rose Median filter applied
Luminance Filter applied
7x7 Box Filter applied

The original image is a picture of a rose with high frequency noise added. The first filter applied is a median filter. This filter takes the median of a 3x3 region in each channel. This is effective in eliminating the high frequency noise of the first image. The next filter simply displays the luminosity of each pixel; this effectively turns the image black and gray. The last filter is a 7x7 box filter that displays the average of a 7x7 region. This was implemented with 2 passes, one in the X axis and one in the Y axis.

(Click pictures for full view)


Problem 3:

Using a geometry shader render the 'Silhouette' or contour lines of a model.


Geometry Shaded Contours
Vertex Shaded Contours
Contours using a geometry shader
Contours using a vertex shader

This should display the contour edges on top of the model.  Since ATi does not support the openGL extensions for geometry shaders I have no image for using a geometry shader. To fudge a little I used a vertex shader to turn all non-contours black. This could have looked better if instead of black they where transparent, but then you wouldn't see that they are still rasterized. A geometry shader would remove the geometry.

(Click pictures for full view)