Dynamic Shadow Projector にはいくつかのプロジェクター用のシェーダーが含まれています。これらのシェーダーには2つのバージョンがあり、ひとつは Dynamic 用、もうひとつは非 Dynamic 用です。 非 Dynamic 用のものは普通のプロジェクターに、Dynamic 用のものを Dynamic Shadow Projector のプロジェクターに使います。これらの2つのバージョンにはコード上の違いはまったくありません。違いは、Dynamic 用のバージョンでは Dynamic Shadow Projector のコンポーネントによってコントロールされるいくつかのパラメータが隠されていることだけです。この事は、Gitなどのバージョン管理システムを使っている場合に有用です。なぜなら、Dynamic Shadow Projector のコンポーネントは実行時にこれらのパラメータを書き換えてしまうので、パラメータが隠されていなければバージョンの履歴を汚してしまうからです。
projectorshaders

また、いくつかのシェーダーには2つのバリエーション、with Linear Falloff と without Falloff があります。Standard Assets の Effects パッケージに付属の “Projector/Multiply” シェーダーとは異なり、Dynamic Shadow Projector に付属のシェーダーはフォールオフテクスチャを必要としません。Linear falloff を持つシェーダーは、Standard Assets に含まれている標準のフォールオフテクスチャとほぼ同じ振舞いをします。

Light シェーダーと Light x Shadow シェーダーはスポットライトを投影するのに使うことができます。投影されるスポットライトに影を付けたい場合は、2つのプロジェクターを用意して、ひとつを影を受け取るオブジェクト用に、もうひとつを影を投影するオブジェクト用にします。そして、影を受け取る側のプロジェクーに Light x Shadow シェーダーを使い、影を投影する側に Light シェーダーを使います。詳しくは Spotlight サンプルを参照してください。
lightxshadow

Shadow シェーダーはハードエッジの影(右)やぼんやりした影(左)のために使うことができます。そして、Mipmapped Shadow シェーダーは Percentage Closer Filter 風なソフトシャドウ(真ん中)を実現するために使います。詳しくはチュートリアルを参照してください。
shadow

Mipmapped Shadow シェーダーはフォールオフのバリエーションがありません。その代わりに、ミップレベルそれぞれにフォールオフを設定できます。詳しくは Shadow Texture Renderer コンポーネントを参照してください。

また、Mipmapped Shadow シェーダーはシェーダーモデル 3.0 (DirectX)、もしくは OpenGL ES 3.0、もしくは OpenGL ES 2.0 + texture lod 拡張を必要とし、古いデバイスでは正しく動作しないかもしれません。Mipmapped Shadow Fallback コンポーネントを使用して、それらのデバイス用のフォールバックを準備しておいてください。

Links

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Anti Spam Code *

FastShadowReceiver/Projector/Multiply
FastShadowReceiver/Projector/Multiply Without Falloff

これらのシェーダーはStandard Assets (Projectors)に含まれている“Projector/Multiply Shadow”シェーダーに似ています。違いは、影の濃さを調節するためのプロパティ“Shadow Darkness”を持っていることです。

“FastShadowReceiver/Projector/Multiply”は“Projector/Multiply Shadow”と同じようにFallOffテクスチャを持ち、影の距離に応じて影を薄くすることができます(下の左図)。一方の“FastShadowReceiver/Projector/Multiply Without Falloff”はFallOffテクスチャを持ちません。そのため、このシェーダーの方が他のシェーダーに比べて高速ですが、遠いところにある影を薄くすることはできません(下の右図)。

screenshot-multiply screenshot_multiply_nofalloff

 

FastShadowReceiver/Projector/Multiply Diffuse
FastShadowReceiver/Projector/Multiply Diffuse Without Falloff

これらのシェーダーはディフューズライティングと同じように法線ベクトルの向きを考慮して影を描画します。そのため、影はよりリアルになり、オブジェクトの背面に影が描画されるという問題も回避することができます。

これらのシェーダーは法線ベクトルを使うので、MeshShadowReceiverを使っている場合は‘Has Normals’プロパティにチェックを入れるのを忘れないでください。

screenshot_multiply_diffuse screenshot-multiply_diffuse_nofalloff

 

FastShadowReceiver/Projector/Visualize Receiver

このシェーダーはデバッグ用のシェーダーで、Projectorから投影される影を受け取っているオブジェクトに色をつけて描画することができます。

screenshot_visualize

 

FastShadowReceiver/Projector/Light x Shadow

このシェーダーはライトを投影するのに使います。ライトに加えて影を投影することもできます。影を投影するにはLight Projector Shadow ReceiverコンポーネントをライトのProjectorオブジェクトに、Light Projector Shadow Casterを影の元になっているオブジェクトに追加する必要があります。
screenshot-lightxshadow

Links

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Anti Spam Code *