このページでは、シャドウカスケードの実装に関する技術面の詳細について説明します。
ディレクショナルライトは一般に太陽光のシミュレーションとして使われ、ディレクショナルライト 1 灯でシーン全体を照らすことができます。このため、シャドウマップがシーンの大部分を覆い、透視エイリアシングと呼ばれる問題が生じることがあります。透視エイリアシングとは、カメラに近いシャドウマップのピクセルが、遠くにあるものよりも拡大されて「粗く」見える現象です。
透視エイリアシングが起こるのは、シャドウマップの各領域が、カメラの透視によって想定以上に拡大されてしまうためです。ライトによるシャドウマップは、カメラに映っている範囲だけに及んでいれば良く、その範囲はカメラの 視錐台 によって決まります。ディレクショナルライトが真上から当たるシンプルな状態を想像すると、錐台とシャドウマップの関係が分かりやすいでしょう。
この簡略化された例では、錐台の遠い方の端が 20 ピクセルのシャドウマップで覆われているのに対し、近い方の端は4 ピクセルだけで覆われています。しかし、画面上では両端が同じサイズで表示されます。その結果、カメラに近い影のエリアでは、マップの解像度が実質的に大幅に低下します。
Soft Shadows オプションを使用する場合や、シャドウマップに高い解像度を使用する場合は、透視エイリアシングは目立ちません。ただし、これらのソリューションでは、レンダリング中により多くのメモリと帯域幅を使用します。
シャドウカスケードを使用する場合、Unity はカメラからの距離に基づいて錐台領域を 2 つのゾーンに分割します。近い方の端のゾーンは、サイズを小さくした別のシャドウマップを使用します (解像度は同じ)。このような段階的なシャドウマップサイズの削減は カスケードシャドウマップ (「平行分割シャドウマップ」とも呼ばれます) として知られています。