WebGL does not have cameras
This statement should be shocking! How is it that there are no cameras in a 3D computer graphics technology? Well, let me rephrase this in a more amicable way. WebGL does not have a camera object that you can manipulate. However, we can assume that what we see rendered in the canvas is what our camera captures. In this chapter, we are going to solve the problem of how to represent a camera in WebGL. The short answer is we need 4x4 matrices.
Every time that we move our camera around, we will need to update the objects according to the new camera position. To do this, we need to systematically process each vertex applying a transformation that produces the new viewing position. Similarly, we need to make sure that the object normals and light directions are still consistent after the camera has moved. In summary, we need to analyze two different types of transformations: vertex (points) and normal (vectors).