この GitHub のプロジェクトは Unity の Projector コンポーネントを Lightweight Render Pipeline (LWRP) でも使えるようにするための C# スクリプトとシェーダーファイルを提供します。

検証済みの LWRP のバージョン

5.7.2

インストール

Git をお使いの場合、リポジトリを Unity プロジェクトの Assets フォルダに clone (もしくは submodule add) してください。Git をお使いではない場合、Zip ファイルをダウンロードして、それを Assets フォルダに展開してください。
URL: https://github.com/nyahoon-games/ProjectorForLWRP.git

セットアップ

まず始めに、ProjectorRendererFeature を Lightweight Render Pipeline に追加しておく必要があります。プロジェクトを LWRP のテンプレートから作成している (もしくは正しく LWRP が設定されている) ならば、Lightweight Render Pipeline アセットが Graphics Settings の Scriptable Render Pipeline Settings のところにセットされているはずです。

この Lightweight Render Pipeline アセットをダブルクリックして、Inspector View に表示します。

もしデフォルトの Forward Renderer を使っている場合、Renderer Type を Custom に変更し、Data フィールドの脇にある小さなボタンをクリックします。そして、ForwardRendererWithProjectorPass を選択してください。

もし既に独自の Forward Renderer を使っているのであれば、ProjectorRendererFeature を Forward Renderer Data に追加してください。

使い方

既にある Projector オブジェクト、もしくは空の GameObject に Projector For LWRP コンポーネントを追加します。

Projector コンポーネントは Projector For LWRP コンポーネントによって、自動的に無効化されますが、Projector コンポーネントのプロパティーは通常通りに正しく設定する必要があります。ひとつ通常と違うのは、Standard Assets に含まれている Projector 用のシェーダーは使えないということです。 Projector Foe LWRP のシェーダーを使うか、もし必要であれば、カスタムシェーダーを作成してください (詳細は下記参照)。Fast Shadow ReceiverDynamic Shadow Projector に含まれるシェーダーは近日中のバージョンアップで使えるようになる予定です。

場合によっては、Projector のプロパティーに加えて、下記の Projector For LWRP コンポーネントのプロパティーも設定する必要があるかもしれません。

Projector For LWRP コンポーネントのプロパティー

Cameras Projector が描画されるカメラの配列を指定します。配列に何もない場合は、Camera.main のみに描画されます。カメラを配列に追加する場合は、まず Size を増やしてから配列の最後の要素にカメラをセットしてください。
Shader Tag List LightMode タグの値の配列を指定します。ここで指定した LightMode のパスを含むシェーダーが使われている Renderer のみが、この Projector による投影を受け取ることができます。シェーダーのパスが LightMode タグを持たない場合、その LightMode は SRPDefaultUnlit とみなされます。タグを追加するには、まず Size を増やしてください。
Render Queue Lower/Upper Bound マテリアルの Render Queue の値がここで指定した範囲である場合にのみ、Renderer はこの Projector による投影を受け取ることができます。
Render Pass Event Projector を描画するパスが挿入されるタイミングを選択します。Projector のマテリアルが持つ Render Queue の値は無視されることにご注意ください。
Per Object Data トランスフォームマトリクス以外で、Projector のマテリアルがオブジェクト毎のデータを必要とする場合は、それをここで指定します。
Use Stencil Test ステンシルテストを使うことで、パフォーマンスを向上させることができるかもしれません。まずは試してみて、効果があるかどうかみてみてください。もし、Fast Shadow Receiver と一緒に使っている場合はステンシルテストを使う必要はありません。

Projector 用のカスタムシェーダーを作成する

もし Projector 用のカスタムシェーダーを作成する必要がある場合は、”Assets/ProjectorForLWRP/Shaders/P4LWRP.cginc” をインクルードして、fsrTransformVertex 関数で頂点の座標変換やプロジェクションの UV を計算するようにしてください。また、シェーダーは FSR_PROJECTOR_FOR_LWRP キーワードをつけてコンパイルする必要があります。

サンプルコード:

Links

コメントを残す

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

Anti Spam Code *