void background
inspired by Pink Void 🧼
Main image shader use this parameters
shader_parameter/center = Vector2(0.5, 0.5)
shader_parameter/speed = 0.2
shader_parameter/phase = 0.0
shader_parameter/size = 1.155
shader_parameter/background_color = Color(0.03529412, 0, 0.043137256, 1)
shader_parameter/inner_color = Color(0.15686275, 0, 1, 1)
shader_parameter/mid_color = Color(1, 0.32156864, 0.3529412, 1)
shader_parameter/outer_color = Color(0.51394886, 0.04124216, 0.32970935, 1)
shader_parameter/ring_shift = 0.0
shader_parameter/ring_sharpness = 1.0
shader_parameter/FALLOFF = 2.0
shader_parameter/noise_gain = 1.0
and this noise
[gd_resource type=“NoiseTexture3D” load_steps=2 format=3]
[sub_resource type=“FastNoiseLite” id=“FastNoiseLite”]
noise_type = 0
seed = 1337
frequency = 0.125
fractal_type = 0
[resource]
noise = SubResource(“FastNoiseLite”)
seamless = true
normalize = false
Shader code
shader_type canvas_item;
uniform vec2 center = vec2(0.5, 0.5);
uniform float speed : hint_range(0.0, 2.0, 0.01) = 0.2;
uniform float phase = 0.0;
uniform float size : hint_range(0.05, 5.0, 0.01) = 1.155;
uniform vec3 background_color : source_color = vec3(0.0, 0.0, 0.0);
uniform vec3 inner_color : source_color = vec3(0.0, 0.0, 1.0);
uniform vec3 mid_color : source_color = vec3(1.0, 0.0, 0.0);
uniform vec3 outer_color : source_color = vec3(0.0, 1.0, 0.0);
uniform float ring_shift : hint_range(-0.4, 0.4, 0.005) = 0.0;
uniform float ring_sharpness : hint_range(0.05, 3.0, 0.01) = 1.0;
uniform float FALLOFF : hint_range(-10.0, 10.0, 0.01) = 2.0;
const float TWIST = 1.4;
const float FIELD = 2.8;
const float WARP = 2.0;
const float BULGE = -0.4;
uniform sampler3D noise_tex : filter_linear, repeat_enable;
const float NOISE_PERIOD = 8.0;
uniform float noise_gain : hint_range(0.0, 2.0, 0.01) = 1.0;
float snoise(vec3 v) {
return (texture(noise_tex, v * (1.0 / NOISE_PERIOD)).r * 2.0 - 1.0) * noise_gain;
}
float fbm3d(vec3 x, const in int it) {
float v = 0.0;
float a = 0.5;
vec3 shift = vec3(100);
for (int i = 0; i < 32; ++i) {
if(i<it) {
v += a * snoise(x);
x = x * 2.0 + shift;
a *= 0.5;
}
}
return v;
}
vec2 rot(vec2 v, float a) {
float c = cos(a);
float s = sin(a);
return mat2(vec2(c, s), vec2(-s, c)) * v;
}
void fragment()
{
vec2 rect_px = 1.0 / fwidth(UV);
float aspect = rect_px.x / rect_px.y;
vec2 uv = ((UV - center) * vec2(aspect, 1.0)) / size;
float rad = sqrt(dot(uv, uv) + 0.001);
float lr = log(rad);
vec2 p = rot(uv, -lr * TWIST) * FIELD;
float x = fbm3d(
vec3(
p,
lr * 0.3 + phase * .1
),
3
);
float y = fbm3d(
vec3(
p,
lr * 0.5 + phase * .1
),
4
);
vec2 q = vec2(x, y);
float r = fbm3d(
vec3(
p + q * WARP,
lr * 0.4 + phase * .2
),
5
);
float rr = rad * (1.0 + r * BULGE);
float c = 1.0 - exp(-rr * FALLOFF);
vec3 band_mid = vec3(0.4, 0.5, 0.375) + ring_shift;
vec3 band_half = vec3(0.1, 0.075, 0.175) * ring_sharpness;
vec3 bands = smoothstep(band_mid - band_half, band_mid + band_half, vec3(c));
vec3 swirl = bands.z * inner_color
+ bands.x * mid_color
+ bands.y * outer_color;
float bg = min( bands.x, min( bands.y, bands.z ) );
COLOR = vec4( mix( swirl, background_color, bg ), 1 );
}
