Circular Screen Effect

I’m trying to achieve a “circular screen” effect.

I’ve tried to dissort it by using a a displacement texture, to no avail.

Any suggestions to how to achieve it?

Thank you!


It took me awhile, but I was able to get this effect with the following shader applied to a plane in front of the camera.
But there’s still be a more efficient way to do it.

Shader "Custom/PolarUV" {
	Properties {
		_MainTex ("Main Texture", 2D) = "white" {}


		Cull Off ZWrite Off ZTest Always

		GrabPass{ "_GrabTexture" }


			#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 = mul(UNITY_MATRIX_MVP,v.vertex);
				o.uv = v.uv;
				return o;

			sampler2D _GrabTexture;

			float4 frag (v2f i) : SV_Target
				const float PI = 3.14159;

				float u = i.uv.x;
				float v = i.uv.y;

				float uu = (atan2((u-0.5),(v-0.5))+PI)/(2*PI);
				float vv = 2*sqrt(pow(0.5-u,2)+pow(0.5-v,2));

				float4 col = tex2D(_GrabTexture, float2(1-uu.x,1-vv));

				return col;