Shading is the process of altering the color of a surface. Different shading models capture the process of light reflection on a surface. These models use the following variables in the computation:
- $\mathbf{ray}$ (ray) - a ray emitted from a pixel, defined with an origin ($\mathbf{ray_{origin}}$) and a direction ($\mathbf{ray_{direction}}$).
- $\mathbf{p}$ (intersection point) - the intersection point of the surface and $\mathbf{ray}$.
- $\mathbf{l}$ (light direction) - a unit vector pointing from the surface towards a light source, computed by normalizing the vector between the intersection point $\mathbf{p}$ and the light source position $\mathbf{l_s}$.
$$
\mathbf{l} = \frac{\mathbf{l_s - p}}{\norm{\mathbf{l_s - p}}}
$$
- $\mathbf{v}$ (view direction) - a unit vector pointing from the surface towards the place the ray is emitted from. It’s computed by normalizing the vector between the intersection point $\mathbf{p}$ and the ray origin $\mathbf{ray_{origin}}$.
$$
\mathbf{v} = \frac{\mathbf{ray_{origin} - p}}{\norm{\mathbf{ray_{origin} - p}}}
$$
- $\mathbf{n}$ (surface normal) - a unit vector perpendicular to the surface at the point where the reflection is taking place.
- Other characteristics of the light source and the surface, depending on the shading model.