GrabPass は、フレームバッファのコンテンツをテクスチャに取り込む特別なタイプのパスを作成するコマンドです。このテクスチャを後続のパスで使用して、画像ベースの高度な効果を実現できます。
このコマンドは、CPU と GPU の両方のフレームタイムを大幅に増加させます。高速なプロトタイピング以外のためにこのコマンドを使用することは避け、他の方法で効果を得るようにしてください。このコマンドを使用する場合は、このコマンドの使用を減らすか、該当する場合は画面を名前付きテクスチャに取り込む署名を使用して、画面の取り込み操作の回数をできる限り減らすようにしてください。
| 機能名 | ユニバーサルレンダーパイプライン (URP) | HD レンダーパイプライン (HDRP) | カスタム SRP | ビルトインレンダーパイプライン |
|---|---|---|---|---|
| GrabPass | いいえ | いいえ | いいえ | はい |
このコマンドは SubShader ブロックで使用します。
この 2 つの異なるシグネチャは機能が異なり、パフォーマンスにも影響も異なります。名前付きのテクスチャを使用すると、スクリーンの取り込み操作が大幅に少なくなるため、リソースを大量に消費するこのコマンドの影響を軽減することができます。
| シグネチャ | 機能 |
|---|---|
GrabPass { } |
フレームバッファの内容をテクスチャに取り込み、同じサブシェーダー内の後続のパスで使用できます。 _GrabTexture という名前を使用してテクスチャを参照します。 このシグネチャを使用すると、Unity はこのコマンドを含むバッチをレンダリングするたびに画面を取得します。つまり、Unity はフレームごとに複数回、バッチごとに 1 回、画面を取得することができます。 |
GrabPass { "ExampleTextureName" } |
フレームバッファの内容をテクスチャに取り込み、同じフレーム内の複数のサブシェーダーの後続パスでアクセスできるようにします。 指定された名前を使用してテクスチャを参照します。 このシグネチャを使用すると、Unity はフレーム内で最初に画面を取得し、指定したテクスチャ名でこのコマンドを含むバッチをレンダリングします。 |