A magical anomaly
The shader is designed to conjure an aura of magic, a sprinkle of sorcery, or a malevolent anomaly—radiation itself.
It includes two ready-to-use shaders: one for the artifact and one for the shell that envelops it.
For the artifact, copy the code below:
shader_type spatial;
render_mode cull_disabled;
uniform sampler2D albedo_tex : source_color, filter_linear_mipmap;
uniform vec2 uv_scale = vec2(3.0);
uniform vec2 uv_offset = vec2(0.0);
uniform float time_speed = 1.0;
uniform float wave_strength = 0.5;
uniform float noise_scale = 2.0;
float hash(vec3 p) {
return fract(sin(dot(p, vec3(12.9898, 78.233, 45.164))) * 43758.5453);
}
void vertex() {
float t = TIME * time_speed;
vec3 seed = VERTEX * noise_scale + vec3(0.0, 0.0, t);
float dx = hash(seed + vec3(0.0)) * 2.0 – 1.0;
float dy = hash(seed + vec3(1.0)) * 2.0 – 1.0;
float dz = hash(seed + vec3(2.0)) * 2.0 – 1.0;
vec3 offset = vec3(dx, dy, dz) * wave_strength;
VERTEX += offset;
}
void fragment() {
vec2 uv = UV * uv_scale + uv_offset;
ALBEDO = texture(albedo_tex, uv).rgb;
}
Copy the main shell code below!
To avoid any extra questions on how to apply the shader, here’s the quick guide:
- Add a MeshInstance3D.
- Create a new ShaderMaterial.
- Paste the code.
- Customize to taste.
Note: Add lighting and any item to the shell! This should be clear to any fool… 💞 I love you! 💞
By: WhyNilliana ( P.S.: She tried so hard 😘 )
Shader code
shader_type spatial;
render_mode blend_add, cull_disabled, unshaded;
uniform sampler2D albedo_tex : source_color, filter_linear_mipmap;
uniform sampler2D noise_tex : hint_normal;
uniform sampler2D screen_tex : hint_screen_texture, filter_linear_mipmap;
uniform vec2 uv_scale = vec2(3.0);
uniform vec2 uv_offset = vec2(0.0);
uniform float mesh_time_speed = 1.2;
uniform float mesh_wave_strength = 0.3;
uniform float mesh_noise_scale = 1.5;
uniform float distort_strength = 0.08;
uniform float distort_scale = 2.0;
uniform vec4 glow_color : source_color = vec4(0.1, 1.0, 0.3, 1.0);
uniform float pulse_speed = 2.0;
uniform float pulse_strength = 0.7;
uniform float emission_power = 3.0;
uniform float alpha_base = 0.7;
void vertex() {
float t = TIME * mesh_time_speed;
vec3 noise_pos = VERTEX * mesh_noise_scale + vec3(0.0, 0.0, t);
vec3 noise_vec = (texture(noise_tex, noise_pos.xz).rgb - 0.5) * 2.0;
float pulse = sin(t * pulse_speed) * 0.5 + 0.5;
VERTEX += NORMAL * mesh_wave_strength * (pulse + 0.5);
VERTEX += noise_vec * mesh_wave_strength * 0.4;
}
void fragment() {
float t = TIME * mesh_time_speed;
vec2 uv = UV * uv_scale + uv_offset + vec2(t * 0.02, t * 0.01);
float pulse = sin(t * pulse_speed) * 0.5 + 0.5;
vec2 noise_uv = UV * distort_scale + t * 0.1;
vec2 distort = (texture(noise_tex, noise_uv).rg - 0.5) * 2.0 * distort_strength;
vec3 bg = texture(screen_tex, SCREEN_UV + distort).rgb;
vec4 tex = texture(albedo_tex, uv);
vec3 col = tex.rgb * glow_color.rgb * (pulse * pulse_strength + 0.4);
float alpha = alpha_base * (pulse * 0.3 + 0.7);
ALBEDO = mix(bg, col, alpha);
ALPHA = alpha;
EMISSION = col * emission_power * pulse;
}

