シャドウのトラブルシューティング

 
 
 

ここでは、シーンのシャドウを最適化する上で役立つ情報と、一般的な問題のトラブルシューティングについて掲載します。

注:スピードを最適化すると品質が下がり、品質を最適化するとスピードが落ちることに注意してください。

シャドウの必要性(処理速度の最適化)

シャドウを使用するとレンダリングに時間を要します。シャドウが不要である場合は、[レンダリング オプション]プロパティ エディタの[有効エフェクト]タブで[シャドウ]の[タイプ]を[なし]に指定しましょう。

また、カメラから離れたオブジェクトのシャドウは、カメラに近いオブジェクトのシャドウよりも正確である必要はありません。たとえば、近いオブジェクトのソフト シャドウを生成する場合はセレクティブ エリア ライトを使用し、遠いオブジェクトの簡単なシャドウを生成する場合は、同じ場所にセレクティブ ポイント ライトを生成すればよいでしょう。

この他、2 つの独立したレンダ パスを使用する方法もあります。この場合、近いオブジェクトにはレイトレースされたシャドウを持つレンダ パスを使用し、遠いオブジェクトにはシャドウ マップ シャドウを持つレンダ パスを使用します。

シャドウとスキャンライン(処理速度の最適化)

スキャンライン レンダラでシャドウ マップを使用し、レイトレーシングを使わずにシャドウを粗く、高速にレンダリングすれば、シーンを高速にプレビューできます。

シャドウとモーション ブラー(処理速度の最適化)

シーンでシャドウとモーション ブラーの両方を使用し、かつブラー エフェクトにより通常のシャドウ マップが少しでもソフトになる場合は、[レンダ オプション]プロパティ エディタの[モーション ブラー済みシャドウ マップ]オプションをオフに切り替えましょう。

不透明なシャドウ(処理速度の最適化)

ライトから不透明なシャドウを放出する場合は、[シャドウ マップ]をそのライトに使用するのが最適です。また、ライトの位置がアニメートされない場合は、シャドウ マップのファイル名を定義し、複数のフレームでシャドウ マップを繰り返し使用することもできます。

トラブルシューティング

ここでは、一般的な問題点とその解決方法について説明します。

ソフト シャドウが粗いのですが

ソフト シャドウがエリア ライトから放射されている場合は、ライト シェーダのプロパティ エディタを使用し、エリア ライトの U サンプリング値と V サンプリング値をともに 3、5、あるいはそれ以上に上げてください。

シャドウ マップを使用して粗いシャドウが作成された場合は、ライト シェーダのプロパティ エディタでシャドウ サンプルまたは解像度のどちらかを上げてください。

ソフト シャドウ マップにランダムな傷があります

この問題は、シャドウ マップの[ぼかし]パラメータ値が高すぎる場合にしばしば発生します。パラメータの値を 0.05 などの小さい値に下げてから作業を開始してください。

シャドウをテクスチャリングすると、予想外の結果になります

この原因は、正しくないシェーダをオブジェクトのマテリアルのシャドウ ポートに接続したことにあります。すべてのシェーダがシャドウを正しく処理するよう設計されているわけではありません。

たとえば、サーフェイス シェーダとシャドウ シェーダはシャドウ情報を処理するよう設計されていますが、テクスチャ シェーダでは処理できません。テクスチャ シェーダをマテリアルの[Shadow]ポートに接続すると、カラー シャドウが作成されますが、正しく計算されるとは限りません。直接的な影響は、セレクティブ ライトからの命令が無視されることです。したがって、ライトがオブジェクトに影響を与えると想定されていない場合でも、そのオブジェクトのシャドウをコントロールするテクスチャ シェーダが、ライトが選択されたかどうかに関する情報を無視するため、そのシャドウはレンダリングされます。

つまり、マテリアルの[Shadow]ポートに接続されているシェーダは、常にシャドウを処理するよう設計されているシェーダである必要があります。シャドウをテクスチャリングする方法の一つは、マテリアルの[Shadow]ポートに[Simple Shadow]シェーダを適用し、テクスチャ シェーダを使用して、シャドウのカラーを操作することです。