簡単なステンシルシャドウボリュームの手順
シャドウボリュームを実現するときの手順について説明します。
まず一番簡単な方法を説明します。
1.シーンを描画する(ZバッファにはZ値を作る)
2.ステンシルバファにシャドウボリュームを描画
3.ステンシルを使い影になる部分に影の色をつける
この手順では一番簡単にステンシルシャドウボリュームが実現できますが、これで出来る影のクオリティは低いです。
まず一番簡単な方法でイメージできるように、この手順で説明します。
1.シーンを描画する(ZバッファにはZ値を作る)
このパスは普段の画面の描画と同じです。
何も気にせずにシーンを描画します。
2.ステンシルバッファにシャドウボリュームを描画
まず前に説明した図をもう一度見てみましょう。
Aが作るシャドウボリュームは図の4角柱です。
つまり上下の2面と4つの側面、合計6枚の面から出来ています。
この6面をステンシルバッファに描画します。
ステンシルバッファにシャドウボリュームを描画するときに、いくつかの条件があります。
- 表面を描画するときには、Zテストに合格したものを+1で描画する。
- 裏面を描画するときには、Zテストに合格したものを-1で描画する。
どちらの場合も、フレームバッファやZバッファには何も操作しません。
それでは、ステンシルバッファにシャドウボリュームを描画していく手順を図で見てみましょう。
上の図は、表面を+1で描画したものです。
赤い部分の値は+1になっています。
上の図は、裏面を-1で描画したものです。
青い部分の値は-1になっています。
そしてこれらを合成すると、最終的なステンシルバッファが出来上がります。
下の図は+1の領域と-1の領域を合成したものです。
最終的なステンシルバッファには+1の領域が少し残っています。
これが影になる部分です。
このステンシルを参照しながら、+1になっている部分に影の色をつけると最終的な画像ができます。
元の画像に、影の色をグレーにして塗りつぶしてみると下の図のようになります。
これが最終的に、テレビやパソコンのモニターに表示される画面です。