Unity之Grab实现UI动态高斯模糊

GrabPass是一个特殊的Pass,它从frame buffer抓取物体所在位置屏幕中将要绘制的内容,将其填充至一个临时的texture,以供同一个Shader中其后的Pass使用。我们现在就要用它来实现高斯模糊的毛玻璃效果。

效果:
在这里插入图片描述
Shader
首先我们需要声明Shader所需属性:

Properties
{
    _BumpAmt("Distortion", range(0, 2)) = 1
    _TintAmt("Tint Amount", Range(0,1)) = 0.1
    _TintColor("Tint Color", Color) = (1, 1, 1, 1)
    _MainTex("Tint Texture (RGB)", 2D) = "white" {}
    _BumpMap("Normalmap", 2D) = "bump" {}
    _BlurAmt("Blur", Range(0, 10)) = 1
}
  • _BumpMap 和 _BumpAmt控制扭曲
  • _TintColor 和 _TintAmt控制叠加颜色
  • _BlurAmt 控制模糊程度

在SubShader中,增加GrabPass,GrabPass中可以是空的,也可以加入一个字符串作为Texture名,或者添加其他必要的Tag。如果GrabPass为空,那Texture名默认为_GrabPassTexture。

GrabPass {}

vertex shader 须向fragment sh

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章