By “Zylann effect” you’re referring to this repository? It hasn’t been updated since 2017, so (depending on your Godot-version) it most likely won’t work as is.
So here’s a guide to port it over to Godot 3.2:
Create a new scene, choose TextureRect as a root-node, name it “Background”
Set it’s texture-property to any background image you want (e.g. platformer.jpg)
Add a ColorRect as a child node of $Background, name it “BlackHole”
Create a new shader material for $BlackHole (in the inspector under CanvasItem > Material > Material (Click The Dropdown) > New Shader Material)
Create a new shader for $BlackHole (in the inspector under CanvasItem > Material > Shader (Click The Dropdown) > New Shader)
Add the following code to for the shader:
shader_type canvas_item;
uniform float strength = 0.01;
uniform float black_radius = 0.65;
void fragment() {
// Get direction and distance to the black hole center
vec2 diff = vec2(0.5, 0.5) - vec2(UV.x, 1.0-UV.y);
float d = length(diff) * 2.0;
vec2 dir = normalize(diff);
float f = clamp(1.0-d, 0.0, 1.0);
// This is a 0..1 value that will nullify the effect around the bounds of the effect,
// for a seamless transition between the effect's area and the unaffected world pixels.
float shelf = smoothstep(0, 1, f);
// Calculate displacement amount
float displacement = strength / (d*d + 0.01);
// Calculate distorted screen-space texture coordinates
vec2 uv = SCREEN_UV + dir * (displacement * shelf);
// Output pixels from the screen using distorted UVs
vec3 col = texture(SCREEN_TEXTURE, uv).xyz;
COLOR.rgb = mix(col, vec3(0,0,0), smoothstep(black_radius-0.01, black_radius+0.01, f));
}
Finally, make sure $BlackHole is positioned somewhere inside the area covered by $Background. Resize it, to change the extent of the black hole effect.