fuckin hell
[carveJwlIkooP6JGAAIwe30JlM.git] / shaders / model_gate.fs
diff --git a/shaders/model_gate.fs b/shaders/model_gate.fs
new file mode 100644 (file)
index 0000000..ba48f1e
--- /dev/null
@@ -0,0 +1,27 @@
+out vec4 FragColor;
+
+uniform sampler2D uTexMain;
+uniform sampler2D uTexWater;
+uniform vec2 uInvRes;
+uniform float uTime;
+uniform vec3 uCam;
+
+in vec3 aNorm;
+in vec2 aUv;
+in vec3 aCo;
+
+void main()
+{
+   vec2 ssuv = gl_FragCoord.xy*uInvRes;
+   vec4 mapwater = texture( uTexWater, vec2(aUv.x,aUv.y-uTime));
+
+   float undistort = smoothstep(0.1,0.6,distance( uCam, aCo )*0.1);
+   vec2 trimedge = smoothstep(0.0,0.2,1.0-abs(ssuv-0.5)*2.0);
+   undistort *= trimedge.x * trimedge.y;
+
+   vec2 warpamt = (mapwater.rg-0.5)*0.05*aUv.y*undistort;
+   vec4 mapbackbuffer = texture( uTexMain, ssuv + warpamt );
+
+   float opacity = 1.0-smoothstep(0.4,1.0,aUv.y);
+   FragColor = vec4( mapbackbuffer.rgb, opacity );
+}