ゲームにおける影の表現
最新のゲーム機PLAYSTATION4やSwitchでは以前とは比較できないほど映像が奇麗になっています。
とくにPLAYSTATION4やSwitchではリアルな映像のゲームが多いです。
リアルな映像を作るときに重要なファクターの1つに影の表現があります。
CGにおいて影表現の方法はいくつかあります。
以前のゲーム機では丸いテクスチャを地面に投影するだけの影表現で、丸影などと言われています。
それよりすこし高度なプロジェクションシャドウというものがあります。
リアルタイムに遮蔽物の形をテクスチャとしてレンダリングし、できたテクスチャを投影するというものです。
これらの表現は簡単なので調べればすぐにわかると思います。
また最新のゲーム機ではほとんど使われないので、このサイトでは説明を割愛します。
最新のゲーム機でリアルな影表現をするときに使われる方法は2つあります。
シャドウボリューム法と、シャドウマッピング法です。
このサイトでは主にシャドウボリューム法とシャドウマッピング法を説明します。
また一般的なプログラムの説明のようにプログラムコードを並べて説明するのではなく、頭の中でイメージできるような図を用いて説明していきます。
実際のプログラムコードはマイクロソフトやNvidiaが配布しているサンプルの中にたくさんあるのでそちらを参考にしてください。
ゲームで用いられる主な影の表現方法
- 丸影
- プロジェクションシャドウ
- シャドウボリューム
- シャドウマッピング
シャドウボリュームの紹介
最新のゲーム機PLAYSTATION4やSwitchなどにはステンシルバッファというものが搭載されています。
このステンシルバッファを使うとシャドウボリュームが比較的簡単に行えます。
私が十数年前に初めてシャドウボリュームのプログラムをしたときはOpenGLというグラフィックスライブラリを使用しました。
ちなみに、OpenGLというのはフリーのグラフィックスライブラリです。当時はコンピューターグラフィックスのプログラミングといえばOpenGLというほどメジャーなグラフィックスライブラリでした。SGIというグラフィックスワークステーションとセットで使われることが多かったですね。
そのOpenGLを使ってシャドウボリュームのプログラムをしたのですが、たしかSGIのMark J. Kilgard氏の論文を参考にした記憶があります。現在ではMark J. Kilgard氏はNvidiaに勤めているようです。
NvidiaのサイトでFast, Practical, and Robust Shadow Volumesという論文が公開されています。
この論分もとても参考になるので、英語ですが読んでみることをお勧めします。