EMERGANT FLOW
GLSL shader by JFX · created 2026-02-03 · 10s loop · 2 passes
FLOW
This page opens the shader in the ShaderKit browser GLSL editor: edit it live, fork it, or render it to video, GIF or images up to 8K. Also available as a full-screen view and an embeddable player.
Shader source (GLSL)
Common
#define pi acos(-1.)
#define deg pi/180. //1 degree
#define time iTime*2.*pi/10. //sin(time) loops 10 seconds
#define R iResolution.xy //shorthand
#define ar R.x/R.y //aspect ratio
#define M iMouse //shorthand
#define xm (M.xy/R) //normalized mouse
#define nm ((xm.xy-0.5)*vec2(ar,1.)+0.5) //aspect ratio correction
vec3 cs = vec3(1.,2.,3.);
mat2 r2d(float a) {
return mat2(cos(a),sin(a),-sin(a),cos(a));
}
Buffer A (iChannel0)
#define PI 3.14159265359
float hash21(vec2 p){
p = fract(p * vec2(234.34, 435.345));
p += dot(p, p + 34.23);
return fract(p.x * p.y);
}
float noise(vec2 p){
vec2 i = floor(p);
vec2 f = fract(p);
f = f*f*(3.0-2.0*f);
float a = hash21(i);
float b = hash21(i+vec2(1.,0.));
float c = hash21(i+vec2(0.,1.));
float d = hash21(i+vec2(1.,1.));
return mix(mix(a,b,f.x), mix(c,d,f.x), f.y);
}
float fbm(vec2 p){
float v = 0.0;
float a = 0.5;
for(int i=0;i<6;i++){
v += a * noise(p);
p *= 2.0;
a *= 0.5;
}
return v;
}
void mainImage(out vec4 fragColor, in vec2 fragCoord)
{
vec2 uv = fragCoord.xy / iResolution.xy;
uv -= 0.5;
uv.x *= iResolution.x / iResolution.y;
float t = time * 0.08;
// --- Stone structure base ---
float stone = fbm(uv * 6.0);
// --- Crack network ---
float cracks = fbm(uv * 12.0 + fbm(uv * 4.0) * 3.0);
cracks = smoothstep(0.55, 0.65, cracks);
// Thin fracture lines
float fractures = abs(sin(fbm(uv * 18.0) * 20.0));
fractures = smoothstep(0.85, 1.0, fractures);
cracks *= fractures;
// --- Ancient light leaking ---
vec2 flow = vec2(
fbm(uv * 3.0 + t),
fbm(uv * 3.0 - t)
);
float language = fbm(uv * 8.0 + flow * 2.0 - t * 0.5);
// Slow pulse like buried signal
float pulse = 0.5 + 0.5 * sin(t * 2.0);
float light = cracks * language * pulse;
// Glow shaping
light = pow(light, 1.8);
// Dark stone base
vec3 col = vec3(stone * 0.15);
// Ancient light color (bone-white gold)
vec3 leakColor = vec3(1.0, 0.85, 0.6);
col += leakColor * light * 2.0;
fragColor = vec4(col, 1.0);
}
Image
Not used
More shaders by JFX
Browse all public shaders · All shaders by JFX · ShaderKit home
Unread comments
×Projects with new comments. Click to open and read.