Shader 学习之路-实现波光粼粼的Shader(十二)

其实在游戏中,我们一般需要实现类似鱼有波光粼粼的效果的,下面我和大家一起学习实现这个效果。

1、新建Shader-Sparkling.shader文件,代码如下:

Shader "Custom/Shader-Sparkling" //Shader名称

 {

    Properties//属性块

    {

     _MainTex("Main Texture",2D)="white"{}//显示在检视面板的名称 类型 默认类型

    _SubTex("Sub Texture",2D)="white"{}


    _MainColor("Main Color",Color)=(1,1,1,1)

    }


    SubShader//子着色器

    {

      Pass

      {

        CGPROGRAM

        #pragma vertex vert// 定义顶点函数

        #pragma fragment frag//定义片元函数

        #include "UnityCG.cginc"


        sampler2D _MainTex;

        sampler2D _SubTex;

        float4 _MainColor;


        struct v2f

        {

        float2 sv_uv:TEXCOORD0;

        float4 sv_position:SV_POSITION;


        };


        struct a2i

        {

          float2 uv:TEXCOORD0;

          float4 position:POSITION;


        };


        v2f vert(a2i i)

        {

          v2f o;

          o.sv_position=UnityObjectToClipPos(i.position);

          o.sv_uv = i.uv;


          return o;

        }


        float4 frag(v2f v):SV_TARGET

        {

           float2 offset=float2(0,0);

           offset.x=_Time.y *0.25f;

           offset.y=_Time.y *0.25f;

           float4 subTex = tex2D(_SubTex,v.sv_uv+offset); 

           float4 mainTex = tex2D(_MainTex,v.sv_uv)+subTex;

           return mainTex*_MainColor;      


        }

        ENDCG

      }

    }

    FallBack "Diffuse"

}

2、运行效果如图:


你可能感兴趣的:(Shader 学习之路-实现波光粼粼的Shader(十二))