ゆたゆたゆた 2022/12/31 20:30

ARplane用shaderの改良版

どうですかね?

揺らぎを入れてみました。
大げさに揺らすと目がチカチカするので、細かく揺らしてみました。
適当にコード合体させて、書いてるので、どこかおかしい部分があるかもしれません・・・
本当はグリッチ効果にしたいんだけど、むずかしそうだ・・・

スマホに入れて、ARでチェックしてみます。

shaderのコード
↓↓

Shader "Unlit/hexagon5"
{

Properties
{
    _MainTex ("Base(RGB)", 2D) = "white" {}
    _MainColor("Color", Color) = (1,1,1,1)

}
SubShader
{
    Tags {"RenderType"="AlphaTest" "Queue" = "Transparent"}
    LOD 100

    Pass
    {

        CGPROGRAM
        #pragma vertex vert
        #pragma fragment frag
        // make fog work
        #pragma multi_compile_fog

        #include "UnityCG.cginc"

        

        struct appdata
        {
            float4 vertex : POSITION;
            float2 uv : TEXCOORD0;
        };

        struct v2f
        {
            float2 uv : TEXCOORD0;
            UNITY_FOG_COORDS(1)
            float4 vertex : SV_POSITION;
        };

        uniform sampler2D _MainTex;
        float4 _MainTex_ST;

        float4 _MainColor;

        v2f vert (appdata v)
        {
            v2f o;
            o.vertex = UnityObjectToClipPos(v.vertex);
            o.uv = TRANSFORM_TEX(v.uv, _MainTex);
            UNITY_TRANSFER_FOG(o,o.vertex);
            return o;
        }

        float mod(float x, float y)
        {
            return x - y * floor(x / y);
        }
        float2 mod(float2 x, float2 y)
        {
            return x - y * floor(x / y);
        }
        float3 mod(float3 x, float3 y)
        {
            return x - y * floor(x / y);
        }
        float4 mod(float4 x, float4 y)
        {
            return x - y * floor(x / y);
        }

        float HexDist(float2 p){


            p = abs(p);
            
            float2 c = dot(p,normalize(float2(1.0,1.73)));

            c = max(c, p.x);

            return c;

        }

        float4 HexCoords(float2 uv){
            float2 r = float2(1, 1.73);
            float2 h = r * 0.5;
            float2 a = mod(uv, r) - h;
            float2 b = mod(uv - h, r) - h;

            /*float2 gv;
            if(length(a) < length(b)){
                gv = a;
            }else{
                gv = b;
            }*/

            float2 gv = dot(a, a) < dot(b,b) ? a :b;

            float x = atan2(gv.x, gv.y);
            float y = 0.54 - HexDist(gv);
            float2 id = uv - gv;

            return float4(x, y, id.x, id.y);

        }

        fixed4 frag (v2f i) : SV_Target
        {

            float2 uv = i.uv;

            
            float x = 2 * uv.y + sin(_Time.y * 10);
            float distort = sin(_Time.y * 15) * 0.001 * sin(5 * x) * (-(x-1) * (x-1) + 1);
            uv.x += distort;

            
            uv *= 10;

            float4 hc = HexCoords(uv);

            float c = step(0.05, hc.y);
            
            clip(-(c - 0.02));

            return c + (_MainColor * 100);

        }
        ENDCG
    }
}

}

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

記事のタグから探す

月別アーカイブ

記事を検索