Vanguard Golf Hole Portal v3
GLSL shader by joeyw_vanguard_hole · created 2026-07-28 · 10s loop · 1 pass
AAA concentric cyan-rim black-void portal. Vinyl/sound-wave ridges + Fresnel glass. NOT fractal.
Tags: 2D, Animation, Portal, Cyan, Void
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.
#define time iTime*2.*pi/10.
#define R iResolution.xy
#define ar R.x/R.y
#define M iMouse
#define xm (M.xy/R)
#define nm ((xm.xy-0.5)*vec2(ar,1.)+0.5)
mat2 r2d(float a) {
return mat2(cos(a),sin(a),-sin(a),cos(a));
}
Buffer A (iChannel0)
void mainImage(out vec4 fragColor, in vec2 fragCoord){
vec2 uv = (fragCoord - 0.5*iResolution.xy) / iResolution.y;
// Looking into a deep concentric funnel / vinyl void
vec3 ro = vec3(0.0, 0.62, 1.72);
vec3 ta = vec3(0.0, -0.12, 0.0);
vec3 ww = normalize(ta - ro);
vec3 uu = normalize(cross(ww, vec3(0.0,1.0,0.0)));
vec3 vv = cross(uu, ww);
vec3 rd = normalize(uv.x*uu + uv.y*vv + 1.40*ww);
float t = 0.0; float hit = 0.0;
for(int i=0;i<100;i++){
vec3 p = ro + rd*t;
float r = length(p.xz);
// Parabolic bowl + sound-wave / vinyl ridges (NO fractal)
float bowl = p.y + 0.38 - 0.58*r*r;
float ridges = 0.017*sin(r*68.0 - iTime*1.45)
+ 0.004*sin(r*136.0 + iTime*0.4);
float d = abs(bowl - ridges) - 0.014;
// Soft cylindrical void throat
float hole = max(r - 0.21, -p.y - 0.08);
d = min(d, hole);
if(d < 0.0015){ hit = 1.0; break; }
t += clamp(d * 0.85, 0.004, 0.075);
if(t > 6.5) break;
}
vec3 col = vec3(0.0);
if(hit > 0.5){
vec3 p = ro + rd*t;
float r = length(p.xz);
vec2 e = vec2(0.0022, 0.0);
vec3 px = p+e.xyy; vec3 mx = p-e.xyy;
vec3 py = p+e.yxy; vec3 my = p-e.yxy;
vec3 pz = p+e.yyx; vec3 mz = p-e.yyx;
float sx = abs(px.y+0.38-0.58*dot(px.xz,px.xz)-0.017*sin(length(px.xz)*68.0-iTime*1.45)-0.004*sin(length(px.xz)*136.0+iTime*0.4))-0.014;
float smx= abs(mx.y+0.38-0.58*dot(mx.xz,mx.xz)-0.017*sin(length(mx.xz)*68.0-iTime*1.45)-0.004*sin(length(mx.xz)*136.0+iTime*0.4))-0.014;
float sy = abs(py.y+0.38-0.58*dot(py.xz,py.xz)-0.017*sin(length(py.xz)*68.0-iTime*1.45)-0.004*sin(length(py.xz)*136.0+iTime*0.4))-0.014;
float smy= abs(my.y+0.38-0.58*dot(my.xz,my.xz)-0.017*sin(length(my.xz)*68.0-iTime*1.45)-0.004*sin(length(my.xz)*136.0+iTime*0.4))-0.014;
float sz = abs(pz.y+0.38-0.58*dot(pz.xz,pz.xz)-0.017*sin(length(pz.xz)*68.0-iTime*1.45)-0.004*sin(length(pz.xz)*136.0+iTime*0.4))-0.014;
float smz= abs(mz.y+0.38-0.58*dot(mz.xz,mz.xz)-0.017*sin(length(mz.xz)*68.0-iTime*1.45)-0.004*sin(length(mz.xz)*136.0+iTime*0.4))-0.014;
vec3 n = normalize(vec3(sx-smx, sy-smy, sz-smz));
vec3 light = normalize(vec3(0.65+0.2*sin(iTime*0.35), 0.90, 0.32));
float diff = clamp(dot(n, light), 0.0, 1.0);
float ndv = clamp(dot(n, -rd), 0.0, 1.0);
float fres = pow(1.0 - ndv, 2.8);
float fres2 = pow(1.0 - ndv, 4.5);
vec3 cyan = vec3(0.14, 0.78, 1.0);
vec3 deep = vec3(0.015, 0.04, 0.10);
float voidM = smoothstep(0.29, 0.15, r);
float throat = smoothstep(0.23, 0.13, r);
// Layered cloudy transmission along ridge rings
float rings = 0.5 + 0.5*sin(r*68.0 - iTime*1.45);
float fine = 0.5 + 0.5*sin(r*136.0 + iTime*0.4);
float cloud = smoothstep(0.2, 0.9, rings) * (0.6 + 0.4*fine);
col = mix(deep*(0.14 + 0.86*diff), vec3(0.0), voidM);
col *= 1.0 - 0.48*throat;
// Glass rim + transmission glow
col += cyan * fres * (0.62 + 0.38*sin(r*42.0 - iTime*1.7));
col += cyan * fres2 * 0.42 * cloud;
// Hard cyan lip at void throat
col += cyan * 0.48 * smoothstep(0.022, 0.0, abs(r-0.21));
// Soft subsurface scatter on bowl
col += cyan * 0.09 * cloud * (1.0 - voidM) * (0.4 + 0.6*diff);
// Fine grain
float grain = fract(sin(dot(fragCoord.xy + iTime*17.0, vec2(12.9898,78.233))) * 43758.5453);
col += (grain-0.5) * 0.026 * (1.0 - voidM*0.65);
} else {
float vig = smoothstep(1.2, 0.18, length(uv));
col = vec3(0.01,0.025,0.05)*(1.0-vig)*0.30;
}
col = tanh(col * 1.48);
fragColor = vec4(col, 1.0);
}
More shaders by joeyw_vanguard_hole
Browse all public shaders · All shaders by joeyw_vanguard_hole · ShaderKit home
Unread comments
×Projects with new comments. Click to open and read.