Assignment 3: Bumps in Singapore
Polygon chosen:
Grass patch around the basketball court
Additional References apart from those in Assignment 2:
CodeSampler's OpenGL tutorials
Nvidia's Photoshop Normal Map Filter
Additional Resource used apart from those in Assignment 2:
Nvidia's Photoshop Normal Map Filter
This filter is used to create normal maps from textures. I apply the filter to the grass texture maps to create the normal to be used in the OpenGL program for bump mapping

The image on the left is the grass texture used to generate the normal map on the right.
Rendering:
I used the DOT3 method of doing bump mapping in tangent space using multitexturing instead of using vertex and fragment shaders. The graphics hardware must support DOTPRODUCT3 multitexturing operation. Tangent space in this case mean a coordinate system that is local to the surface of the model which in my case is a polygon. The normal map serves as a way to store normals in tangent space on a texture map. To calculate the bump mapping which actually create details by relying on the light-reflection calculation, I need to calculate the dot product of the light vector which also need to be in tangent space with that of the surface normal to arrive at intensity values. These values are then modulated with the base texture to create the final bump mapping effect.
Because of the texture I choose to do for the bump mapping, which is actually grass, the bump mapping thou improved the effect, but it is unable to do really simulate the effect of grass. I think displacement mapping would create a better effect.

Before Bump Mapping from High Angle View

After Bump Mapping from High Angle View

Before Bump Mapping from Low Angle View

After Bump Mapping from Low Angle View