diff options
author | chai <chaifix@163.com> | 2021-09-20 00:42:33 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-09-20 00:42:33 +0800 |
commit | 02b44c07adfcf921da594120b4cd8fc18b982725 (patch) | |
tree | 723e001ed8c5f7c39419cc4a50a3202a0cf59961 /Assets/Bundle/Shaders/Unit/ImageEffect/unit_img_motion_blur.shader | |
parent | d4581317f904b870c482a3274e7cc47d1732a673 (diff) |
+command buffer
Diffstat (limited to 'Assets/Bundle/Shaders/Unit/ImageEffect/unit_img_motion_blur.shader')
-rw-r--r-- | Assets/Bundle/Shaders/Unit/ImageEffect/unit_img_motion_blur.shader | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/Assets/Bundle/Shaders/Unit/ImageEffect/unit_img_motion_blur.shader b/Assets/Bundle/Shaders/Unit/ImageEffect/unit_img_motion_blur.shader new file mode 100644 index 00000000..3111369a --- /dev/null +++ b/Assets/Bundle/Shaders/Unit/ImageEffect/unit_img_motion_blur.shader @@ -0,0 +1,75 @@ +// 1:09 https://www.youtube.com/watch?v=LhqI_yj3zO0 +Shader "Erika/Unit/ImageEffect/unit_img_motionBlur" +{ + Properties + { + _MainTex("Texture", 2D) = "white" {} + _Angle("Angle", float) = 0 + _Distance("Distance", float) = 0 + } + SubShader + { + Tags { "RenderType"="Opaque" "Queue" = "Transparent-1"} + LOD 100 + + ZWrite Off + ZTest LEqual + + Blend SrcAlpha OneMinusSrcAlpha + + 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; + }; + + sampler2D _MainTex; + float4 _MainTex_ST; + + float _Angle; + + fixed _Distance; + + v2f vert (appdata v) + { + v2f o; + o.vertex = UnityObjectToClipPos(v.vertex); + o.uv = TRANSFORM_TEX(v.uv, _MainTex); + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + fixed2 uv = i.uv; + fixed2 offset = fixed2(0.05, 0.05); + const float sampleCount = 30; + fixed4 color = fixed4(0,0,0,0); + float radian = radians(_Angle); + float distance = _Distance; + for(int i = 0; i < sampleCount; i++) + { + float dx = distance * cos(radian) / sampleCount * i; + float dy = distance * sin(radian) / sampleCount * i; + color += tex2D(_MainTex,float2(uv.x + dx,uv.y + dy)) * (1 / sampleCount); + } + //color.rgb *= 0.5f; + return color; + } + ENDCG + } + } +} |