Build a program that allows:
1. using mouse or keyboard to move around on a set of 16 control points;
2. modify the value (drag along x, y, or z) of a point;
3. display the Bi-cubic surface interactively while modifying the control points;
4. implement bump mapping on the surface using fragment shaders.