Lights, normals, and materials
In the real world, we see objects because they reflect light. Any object will reflect light depending on the position and relative distance to the light source; the orientation of its surface, which is represented by normal vectors and the material of the object which determines how much light is reflected. In this chapter, we will learn how to combine these three elements in WebGL to model different illumination schemes.
Lights
Light sources can be positional or directional. A light source is called positional when its location will affect how the scene is lit. For instance, a lamp inside a room falls under this category. Objects far from the lamp will receive very little light and they will appear obscure. In contrast, directional lights refer to lights that produce the same result independent from their position. For example, the light of the sun will illuminate all the objects in a terrestrial scene, regardless of their distance from the sun.
A positional...