Vani Murarka - 22C:251 Advanced OpenGL Techniques at University of Iowa

Assignment Image Files

Assignment #3
Render to Texture and Geometry Shaders

Game of Life video

Image processing
Rose: Original | Grayscale | Box | Sobel Edge Detection
Durga: Original | Sobel | Sobel-Box-Sobel

Silhouette 1 | 2
Assignment #2
Line Rendering, Fog, Shaders

Standard OpenGL Lighting
Standard Wireframe 1 : 2
Wireframe Without Hidden Lines 1 : 2
Wireframe with Front lines having Halos 1 : 2
Fog
Fragment Shader: Sinusoidal Pattern 1 : 2
Vertex Shader: Changing Alpha based on Surface Orientation 1 : 2 : 3

Assignment #1
Display Lists
Vertex Arrays
Vertex Arrays using Buffer Objects
Green Sphere
Alpha Blending increased
Alpha Blending decreased 1 : 2
Earth Texture GL_DECAL
Earth Texture GL_REPLACE
Earth Texture GL_MODULATE
Earth Texture GL_ADD

Observations
1. In general, performance gain seems to be in the following order: Immediate - Vertex Arrays - Display Lists / Vertex Buffer Objects

2. In most cases, the performance gain from Display Lists is as good [even better] than from Vertex Buffer Objects.

3. In the case of greater number of triangles [high-res buddha, high-res dragon], there is a huge gain from Vertex Buffer Objects as compared to Display Lists. Hence it seems, in general, Display Lists are the way to go [good performance, ease of implementation] other than when the geometry is really complex.

4. In the case of the High-res Buddha and High-res Dragron, the system is clearly geometry [CPU] bound rather than fill bound. This is because lower resolutions [i.e. lesser number of fragments] do not result in any performance gain [except slightly in the case of Vertex Buffer Objects] as in the case of the low-res and mid-res models.
Thus, with these GeForce 8600 GTS cards, the system becomes geometry bound surely with 870K triangles [the #triangles of the high-res buddha].
Maybe it becomes geometry bound with even lesser #triangles. I did not try models with #triangles > 250K and < 870K. Over 500K triangles, maybe one
can expect these cards to become geometry bound.

Model # Triangles Resolution Immediate Display List Vertex Array Vertex Buffer Object
Low-Res Dragon 9,999 128 X 128 103x.x 77xx.x 132x.x 74xx.x
Low-Res Dragon 9,999 256 X 256 100x.x 77xx.x 129x.x 60xx.x
Low-Res Dragon 9,999 512 X 512 103x.x 42xx.x 116x.x 36xx.x
Low-Res Dragon 9,999 1024 X 1024 103x.x 15xx.x 82x.x 14xx.x
 
Mid-Res Dragon 250,000 128 X 128 41.x 96x.x 13x.x 89x.x
Mid-Res Dragon 250,000 256 X 256 40.x 94x.x 137.x 87x.x
Mid-Res Dragon 250,000 512 X 512 40.x 87x.x 135.x 74x.x
Mid-Res Dragon 250,000 1024 X 1024 40.x 65x.x 128.x 58x.x
 
High-Res Dragon 871,414 128 X 128 11.x 28.x 37.x 313.x
High-Res Dragon 871,414 256 X 256 11.x 28.x 37.x 309.x
High-Res Dragon 871,414 512 X 512 11.x 28.x 37.x 29x.x
High-Res Dragon 871,414 1024 X 1024 11.x 28.x 37.x 25x.x
 
Low-Res Buddha 50,000 128 X 128 20x.x 406x.x 384.x 19xx.x
Low-Res Buddha 50,000 256 X 256 18x.x 37xx.x 383.x 182x.x
Low-Res Buddha 50,000 512 X 512 19x.x 24xx.x 371.x 14xx.x
Low-Res Buddha 50,000 1024 X 1024 19x.x 12xx.x 327.x 95x.x
 
Mid-Res Buddha 250,000 128 X 128 40.x 96x.x 13x.x 81x.x
Mid-Res Buddha 250,000 256 X 256 40.x 94x.x 13x.x 79x.x
Mid-Res Buddha 250,000 512 X 512 39.x 87x.x 13x.x 7xx.x
Mid-Res Buddha 250,000 1024 X 1024 40.x 66x.x 128.x 53x.x
 
High-Res Buddha 1,087,716 128 X 128 9.x 22.x 30.x 260.x
High-Res Buddha 1,087,716 256 X 256 9.x 22.x 30.x 258.x
High-Res Buddha 1,087,716 512 X 512 9.x 22.x 30.x 250.x
High-Res Buddha 1,087,716 1024 X 1024 9.x 22.x 30.x 222.x