Unity ShaderGrabPassは注意の問題を使用します
Unity Shader Grabpass Use Attention Issues
フレームデバッガーのGrabPass処理プロセスから、次のように表示されます。GrabRenderTexture、次の点に注意してください。 RenderTexture 。
次に、Unityエンジンが下部の各シェーダー->サブシェーダー->パスを通過すると推測できます。 GrabPass Passの場合は、使用する形式と名前があるかどうかを判断し、Grabテクスチャをハッシュテーブルに配置します。同様の辞書が[name] = grabTextureとして保存されます。これは次回の使用に便利です。
また、RenderTextureはRTと呼ばれるものであり、プロジェクトビューで手動でRTを作成することもできます。解像度、フィルタリング方法、深度、テンプレート、ピクセル形式、およびその他の属性を記録するかどうかを指定します。
つまり、GrabPassは実際には次のコード処理プロセスに似ています
Cシャープ
RenderTexture grabRT = ... Camera c= ... c.targetTexture = grabRT c.Render() // single material shader Material mat = ... mat.SetTexture('_GrabTexture', grabRT') // all shaders Shader.SetGlobalTexture('_GrabTexture', grabRT)
シェーダー
sampler2D _GrabTexture
そして、このプロセスは非常に高価です(パフォーマンスを消費します)
そのため、GrabPass {}の代わりにGrabPass {'Name'}を使用しようとします。