3Dのゲームにおいて、影は重要な意味を持ちます。影があることで、プレイヤーはオブジェクトが3次元空間の中のどの位置にあるのかをはっきりと認識することができるからです。しかしながら、影の描画はGPUに大きな負荷をかけます。とりわけ、スペックの低いスマートフォンなどの携帯端末で大きな問題となります。Fast Shadow Receiverは影が描画される面積を最小化することで、影の描画を高速化します。
また、Fast Shadow Receiverはメッシュ探索用の探索木であるMesh Treeを提供します。このMesh Treeは影の落ちているポリゴンを探索するために用いられていますが、その他にも、ライトの投影や弾丸の跡、AIの実装などのために用いることも可能です。
特徴
- Unity 2017以降が必要です
- Unity Proは必要ありません
- Blob Shadow Projector や シャドウマップ と一緒に使います
- 平面以外に影を落とすことも可能です
- テレインもサポートしています
- 低スペックの携帯端末でも高速に動作します
- 高速化された(ただし距離減衰のない)Projector用のシェーダーが付属しています
- 複数のProjectorやシャドウキャスターを扱うことができます
- マルチコアプロセッサに最適化されています
- プロジェクターの影をライトマップの影と混合できます
高速化のしくみ
通常のゲームシーンでは地面のような大きな背景オブジェクトが存在しますが、このようなオブジェクトに影を描画するとパフォーマンス上の問題が発生します。なぜなら、地面のような大きなオブジェクトはスクリーンの大きな部分を占めていて、そのピクセルひとつひとつに影を描画するシェーダーを走らせるとGPUに大きな負荷がかかるためです。
そのため、地面のような大きな背景オブジェクトには直接影を落すのをやめて、代わりにShadow ReceiverをBlob Shadow Projectorとペアにして配置し、Shadow Receiverに影を落すようにします。Shadow ReceiverはProjectorからの影を受け取るのに必要最小限のメッシュを生成するので、GPUの負荷を大幅に削減できます(下の図を参照)。
Fast Shadow ReceiverはBlob Shadow Projectorと一緒に使うように設計されていますが、シャドウマップと一緒に使うこともできます。しかしながら、通常のライティングの中で影を描画するのではなく、影ポリゴンを背景とプレンドしたり、背景と乗算したりして影を描画します。そのため、通常のシャドウマップ程リアルな影を描画できるわけではありません。
Fast Shadow ReceiverはProjectorのパフォーマンスを向上させるものなので、影だけでなくライトや弾痕の投影にも適用できます。
Documents
- Shadow Receiverのタイプ
- 導入ガイド
- Easy Setup WizardでProjector Managerをセットアップする
- Projectorと一緒に使う場合の手順
- シャドウマップと一緒に使う場合の手順
- 多数のProjectorと一緒に使う場合の手順
- Mesh Treeの作成
- Shadow Receiverのセットアップ
- Projector Managerのセットアップ
- LWRP で Projector を使う
- Mixed Lighting Blob Shadow Projector
- MultiplyShadowMapShader for URP
- Projector用のシェーダー
- パフォーマンス
- よくある質問