您好,欢迎来到Unity之家!   unity.jb51.net 
  • 首 页
  • 你问我答
  • 当前位置:首页 > 学习培训 > Unity特效 >
    【红旗飘扬】shader脚本
    时间:2015-03-17 08:35 来源:Unity之家 作者:unity.jb51.net 浏览:收藏 挑错 推荐 打印


    创建一个新shader文件,将下面的代码复制进去,产生的效果类似于布


    // Upgrade NOTE: replaced 'glstate.matrix.mvp' with 'UNITY_MATRIX_MVP'
     
    Shader "Selfmade/FlagWave" 
    { 
     
    Properties 
    { 
        _Color ("Main Color", Color) = (1,1,1,1) 
        _MainTex ("Texture", 2D) = "white" { } 
    } 
     
    SubShader 
    { 
        Pass 
        { 
           CULL Off 
     
          CGPROGRAM 
          #pragma vertex vert 
          #pragma fragment frag 
          #include "UnityCG.cginc" 
          #include "AutoLight.cginc" 
     
          float4 _Color; 
          sampler2D _MainTex; 
     
          // vertex input: position, normal 
          struct appdata { 
              float4 vertex : POSITION; 
              float4 texcoord : TEXCOORD0; 
          }; 
     
          struct v2f { 
              float4 pos : POSITION; 
              float2 uv: TEXCOORD0; 
          }; 
     
          v2f vert (appdata v) { 
              v2f o; 
     
            float sinOff=v.vertex.x+v.vertex.y+v.vertex.z; 
            float t=-_Time*50; 
            float fx=v.texcoord.x; 
            float fy=v.texcoord.x*v.texcoord.y; 
     
            v.vertex.x+=sin(t*1.45+sinOff)*fx*0.5; 
            v.vertex.y=sin(t*3.12+sinOff)*fx*0.5-fy*0.9; 
            v.vertex.z-=sin(t*2.2+sinOff)*fx*0.2; 
            //mul返回输入矩阵相乘的积。
     
     
              o.pos = mul( UNITY_MATRIX_MVP, v.vertex ); 
              o.uv = v.texcoord; 
     
             return o; 
          } 
     
          float4 frag (v2f i) : COLOR 
          { 
             half4 color = tex2D(_MainTex, i.uv); 
             return color; 
          } 
     
          ENDCG 
     
          SetTexture [_MainTex] {combine texture} 
        } 
    } 
       Fallback "VertexLit" 
    }


    OK。赶快测试下吧。。。



    (责任编辑:脚印)
    免责声明:Unity之家部分内容来源于互联网,如有侵权,请联系我们,本站将立即进行处理。