This is one of the simple screen space post processing shaders that you can apply to your game if you want to simulate sea sickness feeling or the feeling of being under the water. If you reduce the strength of the motion, you can apply it to our simple scene to simulate some motion instead of static bored visual.
This shader is relatively simple: All you need to do is to modify the UVs based on a sine wave & pass it to the texture. The texture will be distorted. If you multiply the UVs with time, you’ll get animated version of it. That’s it!
Complete Source Code
shader_type canvas_item;
uniform sampler2D screen_texture : hint_screen_texture;
void fragment() {
// Calculate UV coordinates
vec2 uv = SCREEN_UV;
// Offset the UV coordinates based on a sine wave
uv.x += sin(SCREEN_UV.y * 10.0 + TIME) * 0.01; // Adjust the frequency and amplitude as needed
uv.y += sin(SCREEN_UV.x * 10.0 + TIME) * 0.01;
// Sample the texture using the modified UV coordinates
COLOR = texture(screen_texture, uv);
}