シャドウ/シャドウマップ

Last-modified: 2009-08-04 (火) 12:21:35

シャドウマップによるシャドウ

レンダラーが生成するシャドウ
⇒解像度が関わるビットマップによる表示

※アプリケーションによってデプスマップとも呼ばれている

シャドウマップ

ライトからシャドウを投影するオブジェクトまでの距離を計算する。

※解像度が低すぎると(特にカメラの位置が近い場合)、シャドウはギザギザなエッジの雑な仕上がりとなる。
 ⇒マップサイズを大きくするか、ぼかす必要がある。
※マップサイズが大きいと大量にメモリを消費し、レンダリング時間が長くなる。

シャドウマップのメリット

ソフトネスを自在にコントロールできる。

⇒出力の質とレンダリング時間の相関関係の調整が楽

出力の質とレンダリング時間

  • シャドウの解像度(シャドウマップパラメータ)
     シャドウのディテールのレベルを決定する。
    ・値を上げる⇒精度が向上、消費メモリ増加
    ・値を下げる⇒エッジが粗くなる
  • テクニック
    • シャドウマッピングしたライトの照射範囲をできるだけ制限する。
    • ライトのホットスポット、フォールオフの値を下げた時、解像度(サイズ)を可能な限り縮小する。
    • 単一のライトを大きいサイズのシャドウマップを使用せず、ライトを配列させ、小さいサイズのシャドウマップを使用すればCPU負荷量は低くなる。
  • シャドウマップのメモリ消費量
    シャドウマップの解像度(2乗)×4メモリ容量[MB]
    5121[MB]
    10244[MB]
    204816[MB]
    409664[MB]
    解像度が512のシャドウマップで8つのライトを使用すると、レンダリングに必要なメモリ容量は8[MB]。
    512×8=4096
    4096≒64[MB] ………… ①
    ①より、512のサイズのライト8つと4096のサイズのライト1つは同じ品質に匹敵する。
  • シャドウマップをオンにした場合
    シャドウを投影するオムニライトの使用はできるだけ避ける。
    オムニライト ≒ スポットライト6個分 のメモリ容量に相当。
  • ソフトなシャドウを生成する
    シャドウマップに”ブラー”を適用する。
    • ブラー
      量を増加させるとレンダリング時間が長くなる。
      しかし、解像度(サイズ)が低いシャドウマップが使用でき、
      ブラーの計算に必要な時間は、解像度(サイズ)が高いシャドウマップの計算よりも短く済む。

解像度低い+多めのブラー量<解像度高いシャドウマップ