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'}を使用しようとします。