LoginSignup
0
2

More than 3 years have passed since last update.

シンプルなImageEffect その11。陽炎(HeatHaze)

Posted at

TwitterにアップしたシンプルなImageEffect 陽炎のコードをアップしておきます

HeatHaze.shader
Shader "ScreenPocket/ImageEffect/HeatHaze"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
        _WaveCycle ( "Wave Cycle", Float ) = 8.0
        _Length ( "Length", Float ) = 0.005
        _Speed ("Speed", Float) = 1.0
    }
    SubShader
    {
        // No culling or depth
        Cull Off ZWrite Off ZTest Always

        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag

            #include "UnityCG.cginc"

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

            struct v2f
            {
                float2 uv : TEXCOORD0;
                float4 vertex : SV_POSITION;
            };

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

            sampler2D _MainTex;
            float _WaveCycle;
            float _Length;
            float _Speed;

            fixed4 frag (v2f i) : SV_Target
            {
                float2 uv;

                uv.x = i.uv.x + cos(i.uv.y * _WaveCycle * UNITY_TWO_PI + _Time.w * _Speed) * _Length * sin(i.uv.x * UNITY_TWO_PI);
                uv.y = i.uv.y + sin(i.uv.x * _WaveCycle * UNITY_TWO_PI + _Time.w * _Speed) * _Length * sin(i.uv.y * UNITY_TWO_PI);

                fixed4 col = tex2D(_MainTex, uv);
                return col;
            }
            ENDCG
        }
    }
}

  • _WaveCycle … 波の周期量
  • _Length … ずらし幅
  • _Speed … 時間(_Time.wに乗算されます)

丁度いい値に調整してご利用下さい

また、x,yにそれぞれ
sin(i.uv.x * UNITY_TWO_PI)
sin(i.uv.y * UNITY_TWO_PI)
をかけることで、画面端に近づくほどずらし幅を抑えて、画面外をサンプリングしないようにケアしています。


最近転職した事で、意識が完全に本業に向いてしまっていますが、
ちょっとずつリハビリも兼ねて、趣味コーディングを復帰させて行きたい所存です。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2