面に光が当たるとき、光が面に対して正面から当たる場合は、同じ光量が狭い面積に集中する。一方、斜めから当たる場合は、同じ光量が広い面積に広がるため、単位面積あたりの明るさは小さくなる。この関係を表すのが入射角余弦の法則である。拡散反射では、面の法線と光の入射方向の角度を使い、その余弦によって明るさを決める。角度が0度に近いほど明るく、90度に近づくほど暗くなる。ゲーム実装では法線ベクトルと光方向ベクトルの内積として扱いやすい。
CG制作では、物体の丸みや面の向きによる明暗を作る基本になる。同じ色の物体でも、光の向きに対して面がどう向いているかで明るさが変わる。
ゲーム開発では、ランバート拡散反射としてよく使われる。ピクセルシェーダで法線と光方向の内積を計算し、負の値を0に丸めて明るさを求めることが多い。
C++やHLSLでライティングを実装するときは、`saturate(dot(N, L))` のような形で表される。これは法線Nと光方向Lの内積を使う考え方である。
入射角余弦の法則は、拡散反射の明るさを決める基本である。面の法線、光の方向、角度の余弦が関係することを押さえる。