本文实例为大家分享了统一材质实现高斯模糊效果的具体代码,供大家参考,具体内容如下
正常图:
高斯模糊效果图:
材质代码:
材质“定制/GaoSiMoHu” { 属性 { _MainTex(“纹理”,2 d)=鞍咨眥} _BlurSize(“模糊大小”,浮动)=1.0 } SubShader { 中兴通讯一直 剔除掉 ZWrite掉 CGINCLUDE//这个可以使其他通过块都可以使用,而不用在两个通过里都写,减少了写的次数 sampler2D _MainTex; half4 _MainTex_TexelSize; 浮动_BlurSize; struct v2f { float4 pos: SV_POSITION; half2紫外线[5]:TEXCOORD0; }; fixed4 fragBlur (v2f我):SV_Target { 浮子重量[3]={ 0.4026, 0.2442, 0.0545 }; fixed3金额=tex2D (_MainTex i.uv [0])。rgb *重量[0]; for (int=1;& lt;3;+ +){ 和+=tex2D (_MainTex i.uv[它])。rgb *重量(它); 和+=tex2D (_MainTex,我。紫外线(2 *))。rgb *重量(它); } 返回fixed4(和,1.0); } ENDCG 通过{ “GAUSSIAN_BLUR_VERTICAL”//这个传递的唯一名字,可以在其他地方调用,usepass +名字 CGPROGRAM # pragma顶点vertlurVertical # pragma片段fragBlur # include“UnityCG.cginc” v2f vertlurVertical (appdata_img v) { v2f o; o。pos=UnityObjectToClipPos (v.vertex); half2紫外线=v.texcoord; o.uv[0]=紫外线; o。uv紫外线+ float2 [1]=(0.0, _MainTex_TexelSize。y * 1.0) * _BlurSize; o。紫外线[2]=uv - float2 (0.0, _MainTex_TexelSize。y * 1.0) * _BlurSize; o。uv紫外线+ float2 [3]=(0.0, _MainTex_TexelSize。y * 2.0) * _BlurSize; o。紫外线[4]=uv - float2 (0.0, _MainTex_TexelSize。y * 2.0) * _BlurSize; 返回啊; } ENDCG } 通过{ “GAUSSIAN_BLUR_HORIZONTAL” CGPROGRAM # pragma顶点vertlurHorizontal # pragma片段fragBlur # include“UnityCG.cginc” v2f vertlurHorizontal (appdata_img v) { v2f o; o。pos=UnityObjectToClipPos (v.vertex); half2紫外线=v.texcoord; o.uv[0]=紫外线; o。uv紫外线+ float2 [1]=(0.0, _MainTex_TexelSize。x * 1.0) * _BlurSize; o。紫外线[2]=uv - float2 (0.0, _MainTex_TexelSize。x * 1.0) * _BlurSize; o。uv紫外线+ float2 [3]=(0.0, _MainTex_TexelSize。x * 2.0) * _BlurSize; o。紫外线[4]=uv - float2 (0.0, _MainTex_TexelSize。x * 2.0) * _BlurSize; 返回啊; } ENDCG } } } >之前调节_BlurSize即可看到效果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
统一材质实现高斯模糊效果