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