博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
暗夜之枪水面shader
阅读量:5816 次
发布时间:2019-06-18

本文共 1844 字,大约阅读时间需要 6 分钟。

Shader "MADFINGER/FX/Anim texture" {

Properties {
    _MainTex ("Base (RGB)", 2D) = "white" {}
    _NumTexTiles("Num tex tiles",    Vector) = (4,4,0,0)
    _ReplaySpeed("Replay speed - FPS",float) = 4
    _Color("Color", Color) = (1,1,1,1)
}
SubShader {
    Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" }
    
    Blend One One
    Cull Off Lighting Off ZWrite Off Fog { Color (0,0,0,0) }
    CGINCLUDE
    #include "UnityCG.cginc"
    sampler2D _MainTex;
    
    float4    _Color;
    float4    _NumTexTiles;
    float        _ReplaySpeed;
    float        _Randomize;
    
    struct v2f {
        float4 pos : SV_POSITION;
        float4 uv : TEXCOORD0;
        fixed4 col: COLOR;
    };
    float2 Rand(float2 ij)
    {
        const float4 a = float4(97.409091034f,54.598150033f,56.205410758f,44.687805943f);
        float4 result  = float4(ij,ij);
        for(int i = 0; i < 2; i++)
        {
            result.x = frac(dot(result, a));
            result.y = frac(dot(result, a));
            result.z = frac(dot(result, a));
            result.w = frac(dot(result, a));
        }
        return result.xy;
    }
    
    v2f vert (appdata_full v)
    {
        v2f o;
        
        float        time            = (v.color.a * 60 + _Time.y) * _ReplaySpeed;
        float        itime            = floor(time);
        float        ntime        = itime + 1;
        float        ftime            = time - itime;
        
        float2    texTileSize = 1.f / _NumTexTiles.xy;        
        float4    tile;
#if 0
        if (_Randomize > 0)
        {
            itime = floor(Rand(itime) * 1000);
            ntime= floor(Rand(ntime) * 1000);
        }
#endif
        #if 1
        tile.xy = float2(itime,floor(itime /_NumTexTiles.x));
        tile.zw= float2(ntime,floor(ntime /_NumTexTiles.x));
        #endif
        
        
        tile = fmod(tile,_NumTexTiles.xyxy);
        
        o.pos= mul(UNITY_MATRIX_MVP, v.vertex);
        o.uv    = (v.texcoord.xyxy + tile) * texTileSize.xyxy;
        o.col    = float4(_Color.xyz * v.color.xyz,ftime);
        
        
        return o;
    }
    ENDCG
    Pass {
        CGPROGRAM
        #pragma vertex vert
        #pragma fragment frag
        #pragma fragmentoption ARB_precision_hint_fastest        
        //fragmentoption is OpenGL Only
        fixed4 frag (v2f i) : COLOR
        {
            return lerp(tex2D (_MainTex, i.uv.xy),tex2D (_MainTex, i.uv.zw),i.col.a) * i.col;
        }
        ENDCG
    }    
}
}

设置参数:

转载地址:http://wkmbx.baihongyu.com/

你可能感兴趣的文章
【BZOJ】3669: [Noi2014]魔法森林(lct+特殊的技巧)
查看>>
关于JavaScript中计算精度丢失的问题
查看>>
HashMap以List作为Key值存在的问题
查看>>
Stealth视频教程学习笔记(第一章)
查看>>
Android 设置控件可见与不可见
查看>>
生产服务器环境最小化安装后 Centos 6.5优化配置备忘
查看>>
使用NPOI从Excel中提取图片及图片位置信息
查看>>
股价上涨,资金流出以及内外盘的关系
查看>>
-/bin/sh: /usr/bin/xxx: not found”
查看>>
实现可以滑动的GrildView,类似美团网首页的GrildView功能菜单
查看>>
Wireshark数据抓包教程之认识捕获分析数据包
查看>>
WCF中的由于目标计算机积极拒绝,无法连接
查看>>
HBase的Shell命令
查看>>
poj 3390 Print Words in Lines 动态规划
查看>>
ubuntu安装mysql--参考的网址
查看>>
apache和tomcat
查看>>
hdu 1203 I NEED A OFFER!
查看>>
【解决】Word 在试图打开文件时遇到错误 请尝试下列方法:* xxx * xxx * xxx
查看>>
BadgeView使用介绍
查看>>
lightoj1104(数学概率与期望)
查看>>