Unity-ShaderLab:GrabPass
2021-04-14 11:03 作者:unity_某某师_高锦锦 | 我要投稿
GrabPass 是一种特殊通道类型,它把即将绘制对象时的屏幕内容抓取到纹理中。在后续通道中即可使用此纹理,从而执行基于图像的高级效果。
语法
GrabPass 包含在子着色器内部。它可采用两种形式:
简单的
GrabPass { }
可将当前屏幕内容抓取到某个纹理中。在随后的通道中可通过_GrabTexture
名称访问该纹理。注意:这种抓取通道的形式将为使用它的每个对象执行耗时的屏幕抓取操作。GrabPass { "TextureName" }
可将当前屏幕内容抓取到纹理中,但仅为使用给定纹理名称的第一个对象在每一帧执行一次该操作。在后续通道中可通过给定纹理名称访问该纹理。场景中有多个对象在使用 GrabPass 时,这种方法更高效。
此外,GrabPass 还可以使用 Name 和 Tags 命令。
示例
以下是反转先前渲染内容的颜色的一种低效方法:
此着色器有两个通道:第一个通道抓取渲染时对象后面的任何内容,然后在第二个通道中应用这些内容。请注意,可使用反转混合模式更高效地实现相同效果。