環境光
環境光(アンビエントライト)とは、
現実世界における自然光の乱反射をシミュレートする概念です。
現実世界では、太陽や照明器具から発せられた光が、
物や大気中の塵などに当たって乱反射し世界を照らします。
たとえば真っ暗な部屋に、たった一つ電球が置かれている状態を思い浮かべてみてください。電球を背にして立つと、自分の影が壁や床に映るのが見えますね。そして、自分自身の身体の前面も、直接照明に照らされてはいませんがうっすらと見えるはずです。
壁や天井、床や大気中の塵などが電球の光を乱反射することで、直接光が当たっていない部分であっても電球から発せられる光の影響を受けるのです。このような、光の乱反射を再現しようとするのが環境光の考え方です。
環境光は三次元空間上のあらゆる部分を照らすために使われます。
つまり、頂点ごとに異なる情報を扱う attribute 変数としてではなく、uniform 変数としてシェーダに情報を渡します。さらに言うと、環境光は最終的にコンテキスト上に出力される色に影響を与えるものですので、四つの要素を持つ色情報として扱います。