baobao
6/20/2018 - 6:09 AM

mosaicCircle.shader

Shader "Test"
 {
     Properties{}
     CGINCLUDE
     #include "UnityCG.cginc"

    float box(float2 st, float size)
    {
        // 中心揃えにする四角形描画
        size = 0.5 + size*0.5;
        st = step(st, size) * step(1 - st, size);
        return st.x * st.y;
    }
    
    float wave(float2 uv, float n)
    {
        // 0.5なら中心が原点
        float offset = 0.5;
        float speed = 10;
        float waveNum = 3;
        
        float2 st = (floor(uv * n) + offset) / n;
        float d = distance(offset, st);
        
        // (1+ ~~~)*0.5は-1 ~ 1 => 0 ~ 1に正規化する処理
        return (1 + sin(d * waveNum- _Time.y * speed)) * 0.5;
    }
    
    fixed4 frag(v2f_img i) : SV_Target
    {
        float n = 10;
        return wave(i.uv, n);
    }

     ENDCG
     SubShader
     {
         Pass
         {
             CGPROGRAM
             #pragma vertex vert_img
             #pragma fragment frag
             ENDCG
         }
     }
 }