Version: Unity 6.0 (6000.0)
语言 : 中文
ShaderLab 中的 UsePass 指令参考
ShaderLab 中 Pass 的参考

ShaderLab 中的 GrabPass 指令参考

GrabPass 是一个创建特殊类型通道的命令,该通道将帧缓冲区的内容抓取到纹理中。在后续通道中即可使用此纹理,从而执行基于图像的高级效果。

此命令会显著增加 CPU 和 GPU 帧时间。除了快速原型制作之外,通常应该避免使用此命令,并尝试通过其他方式实现效果。如果你确实使用了此命令,那么尽量减少屏幕抓取操作的次数;可以通过减少对该命令的使用频率来实现,或者在适用的情况下,使用将屏幕内容抓取到指定名称纹理的签名来达成这一目的。

渲染管线兼容性

功能名称 通用渲染管线 (URP) 高清渲染管线 (HDRP) 自定义 SRP 内置渲染管线
GrabPass

语法

在 SubShader 代码块中使用此命令。

请注意,这两种不同的签名具有不同的功能和不同的性能影响。使用一个命名纹理可以显著减少屏幕抓取操作的次数,这能够降低这个资源消耗大的命令所带来的影响。

签名 功能
GrabPass { } 将帧缓冲区内容抓取到纹理中,以便用于同一子着色器中的后续通道。

使用名称 _GrabTexture 引用纹理。

使用此签名时,Unity 会在每次渲染包含此命令的批次时捕捉屏幕。这意味着 Unity 每帧可以多次抓取屏幕:每批次一次。
GrabPass { "ExampleTextureName" } 将帧缓冲区内容抓取到纹理中,您可以在同一帧中的后续通道中跨多个子着色器进行访问。

使用给定名称引用纹理。

使用此签名时,Unity 会在某一帧中渲染包含带有指定纹理名称的此命令的批次时,首次捕捉屏幕。

其他资源

ShaderLab 中的 UsePass 指令参考
ShaderLab 中 Pass 的参考