How can I create an "air ripple" effect?

My game involves the collision of the players as an attack. I want to create a visible effect when the collide, and I’m thinking kinda like those air ripples they have in movies or TV shows when two things collide at high force, like two super powered people punching each other. The best way I can think to describe it is a circle or sphere that emanates out from the point of impact in a way that bends the light a little, so it’s visible and seems like its pushing the air outwards, like an air ripple. How can I make something like this, if it’s possible?

Attach the following shader to a sphere. Then, you can adjust the size and visibility times through another script.

Edit I’ve normalized the world normal in the rim segment for smoother refraction and fixed the transparency issues.

Shader "Custom/Shockwave"
        _Color ("Tint", Color) = (1,1,1,1)
		_RefPow ("Refraction Power", Range(0,128)) = 10
		_Rim ("Rim Power", Range(0,16)) = 4
		_Size ("Shockwave Size", Float) = 1
		GrabPass {"_Ref"}

        Tags { "RenderType"="CustomType" "Queue"="Transparent+1" }
        LOD 100

            #pragma surface surf Lambert fullforwardshadows alpha
			#pragma vertex vert
            #include "UnityCG.cginc"

			sampler2D _Ref;
			fixed4 _Ref_TexelSize;

            struct Input
				float4 screenPos;
				float3 viewDir;

			half _RefPow;
			half _Rim;
			half _Size;
			fixed4 _Color;

			void vert (inout appdata_full v) { += * (_Size - 1);
            void surf (in Input i, inout SurfaceOutput o)
				float rim = 1.0 - saturate (dot (normalize (i.viewDir), normalize (o.Normal)));

				float2 offset = o.Normal * (_RefPow * 4 * pow (rim, _Rim)) * _Ref_TexelSize;
				i.screenPos.xy = i.screenPos.z * offset + i.screenPos.xy;

                fixed4 col = tex2Dproj (_Ref, UNITY_PROJ_COORD (i.screenPos)) * _Color;
				o.Emission = col;
				o.Alpha = _Color.a;