Decal Projector
HD レンダーパイプライン (High Definition Render Pipeline、HDRP) には、 Decal Projector (デカールプロジェクター) コンポーネントが含まれており、特定のマテリアル (デカール) をシーンに投影できます。デカールとは Decal Shader (デカールシェーダー) または Decal Master Stack (デカールマスタースタック) を使うマテリアルのことです。デカールプロジェクターコンポーネントは、デカールをシーンに投影する際、シーンのライティングと相互作用しメッシュを包み込みます。HDRP はデカールをインスタンス化するので、シーンで大量のデカールを同時に使うことが可能です。つまり、デカールが同じマテリアルを使っている限り、レンダリングプロセスにはそれほど負荷がかかりません。
デカールプロジェクターは デカールレイヤー もサポートするため、各レイヤーをベースにマテリアルがどのデカールを受信するかを制御できます。
デカールプロジェクターのプロパティーを編集するには、デカールプロジェクターコンポーネントを持つゲームオブジェクトを選択し、Inspector を使います。もし投影のサイズを変更したいだけなら、Inspector か、あるいはデカールプロジェクターのシーンビューギズモの 1 つのどちらかを使うことができます。
シーンビューの使用
デカールプロジェクターには、境界内のシーンビューおよびプロジェクターの配置に役立つ投影方向が含まれます。シーンビューには以下が含まれます。
プロジェクターの 3D サイズを表示するボックス。プロジェクターはボックス内ですべてのマテリアルにデカールを描画します。
プロジェクターの向きを示す矢印。
またデカールプロジェクターには、各面をクリックしてドラッグし、プロジェクター境界のサイズを変更できるハンドルを追加する、2 つのギズモが含まれています。
ボタン | ギズモ | 説明 |
---|---|---|
Scale | プロジェクターボックスでデカールを拡大縮小します。これでマテリアルの UV を変更し、プロジェクターの大きさに合わせます。デカールを伸張させます。 | |
Crop | プロジェクターボックスでデカールをクロップします。これはプロジェクターボックスの大きさを変更しますが、マテリアルの UV は変更しません。デカールをクロップします。 |
Inspector の使用
Inspector を使うと、デカールプロジェクターのプロパティーのすべてを変更することができ、Size 、Tiling 、および Offset の数値を使うことができ、ギズモのクリック & ドラッグ法に比べてはるかに正確です。
プロパティー
プロパティー | 説明 |
---|---|
Size | プロジェクターのサイズはボックスに影響し、つまり投影された平面に沿ったデカールに影響します。プロジェクターはデカールをスケールし、Size の Width (ローカル X 軸) および Height (ローカル Y 軸) コンポーネントと一致させます。 |
Projection Depth | プロジェクターの深度はボックスに影響します。プロジェクターはデカールをスケールし、Projection Depth と一致させます。デカールプロジェクターコンポーネントは、デカールをローカル Z 軸に沿って投影します。 |
Material | 投影するデカールマテリアルです。デカールマテリアルは HDRP / デカールシェーダーを使わなければなりません。 |
Decal Layer | デカールを投影するマテリアルを特定するレイヤーです。一致するデカールレイヤーを使うメッシュレンダラーまたは地形はいずれも、デカールを受信します。 |
Draw Distance | プロジェクターがデカールの投影を停止し、HDRP がデカールのレンダリングを停止するカメラからデカールまでの距離です。 |
Start Fade | スライダーを使ってプロジェクターがデカールをフェードアウトさせ始めるカメラからの距離を設定します。スケール範囲は 0 から 1 で、Draw Distance のパーセンテージを表します。値が 0.9 の場合、Draw Distance の 90% でデカールのフェードアウトを開始し、Draw Distance でフェードアウトを終了します。 |
Angle Fade | 最小最大スライダーを使って、デカールの逆方向と受信面の頂点法線間の角度に基づき、デカールのフェードアウト範囲を制御します。デカールレイヤー 機能が有効になっている場合のみに利用可能です。 |
End Angle Fade | スライダーを使って、プロジェクターが デカールのフェードアウトを停止する、デカールの逆方向からの角度を設定します。スケール範囲は 0 から 180 で、角度を表します。デカールレイヤー 機能が有効になっている場合のみに利用可能です。 |
Tiling | UV 軸に沿ってデカールマテリアルをスケーリングします。 |
Offset | UV 軸に沿ってデカールマテリアルをオフセットします。デカールにマテリアルアトラスを使う際に、 UV スケールとともに使います。 |
Fade Factor | デカールを手動でフェードイン、およびフェードアウトできます。値が 0 の場合、デカールは完全に透明になり、値が 1 の場合、デカールは マテリアル が定義するだけ不透明になります。マテリアル は Global Opacity と不透明度マップを使って、デカールの最大不透明度を管理します。 |
Affects Transparent | チェックボックスを有効にすると、HDRP はプロジェクターのデカールを透明面の上に描画できます。HDRP は Affects Transparency が有効化されたデカールからすべてのテクスチャをアトラスへ詰め込みますが、これはメモリーおよびパフォーマンスに影響します。このアトラスの次元は、Unity プロジェクトの HDRP アセット にある Decals セクションで編集できます。 |
制限
- デカールプロジェクターは デカールシェーダー または デカールマスタースタック のいずれかで、不透明マテリアルにも作用します。ただし、透明マテリアルに関しては デカールシェーダ でのみ作用します。
- デカールエミッシブは透明マテリアルではサポートされていません。
- HDRP のマテリアルの Receive Decals プロパティーは、エミッシブデカールには作用しません。デカールレイヤーを使わない限り、HDRP は常にエミッシブデカールをレンダリングしますが、これは各レイヤーをベースとしたエミッシブデカールを無効にする場合があります。
- デカールを透明面に投影すると、HDRP はデカールのテクスチャタイリングを無視します。
- Project Settings > Graphics で、Instancing Variants を Strip All に設定すると、プロジェクトをビルドする際、Unity はコンポーネントが参照するデカールシェーダーを除去します。これは Always Included Shaders リストに シェーダーが含まれている場合でも同様です。Unity はビルドプロセス中にシェーダーを除去し、ビルドされたアプリケーションにデカールは表示されません。