欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Unity Shader实现模糊效果

程序员文章站 2022-01-03 19:06:24
本文实例为大家分享了unity shader实现模糊效果的具体代码,供大家参考,具体内容如下今天分享一个超简单实现模糊效果的方法,先上图:核心代码就这句:注意要在3.0以上的版本才能使用在采样后做偏移...

本文实例为大家分享了unity shader实现模糊效果的具体代码,供大家参考,具体内容如下

今天分享一个超简单实现模糊效果的方法,先上图:

Unity Shader实现模糊效果

Unity Shader实现模糊效果

核心代码就这句:

注意要在3.0以上的版本才能使用

Unity Shader实现模糊效果

Unity Shader实现模糊效果

在采样后做偏移采样再叠加,效果与下面的代码类似:

float4 frag(v2f o):sv_target{
 fixed4 color = tex2d(_maintex,o.uv);//,float2(_scale,_scale),float2(_scale,_scale)
 
 float2 uv1= o.uv +float2(_scale,_scale);
 fixed4 color2 = tex2d(_maintex,uv1);

 float2 uv2= o.uv -float2(_scale,_scale);
 fixed4 color3 = tex2d(_maintex,uv2);

 return (color+color2+color3)/3;
}

下面的完整代码:

shader "custom/testshader40" {
 properties{
  _maintex("maintex",2d)="white"{}
  _scale("scale",range(0,0.1))=0
 }
 subshader{
  tags { "rendertype"="opaque" }
  pass{
   cgprogram
    #pragma vertex vert
    #pragma fragment frag
    #pragma target 3.0
    #include "lighting.cginc"

    sampler2d  _maintex;
    float4 _maintex_st;
    float _scale;

    struct a2v{
     float4 pos:position;
     float4 uv:texcoord0;
    };

    struct v2f{
     float4 wpos:sv_position;
     float2 uv:texcoord0;
    };

    v2f vert(a2v v){
     v2f o;
     o.wpos = unityobjecttoclippos(v.pos);
     o.uv=transform_tex(v.uv,_maintex);

     return o;
    }

    float4 frag(v2f o):sv_target{
     fixed4 color = tex2d(_maintex,o.uv,float2(_scale,_scale),float2(_scale,_scale));

     return color;
    }
   endcg
  }
 }
}

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