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

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