统一材质实现高斯模糊效果

  

本文实例为大家分享了统一材质实现高斯模糊效果的具体代码,供大家参考,具体内容如下

  

正常图:
  

  

统一材质实现高斯模糊效果

  

高斯模糊效果图:
  

  

统一材质实现高斯模糊效果

  

材质代码:

        材质“定制/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即可看到效果

  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

统一材质实现高斯模糊效果