mirror of
https://github.com/mr0xb/dotfiles_chezmoi.git
synced 2026-08-27 19:34:57 -04:00
initial commit
This commit is contained in:
commit
f1374f54c4
46 changed files with 4121 additions and 0 deletions
142
dot_config/ghostty/shaders/custom/cash_money_dvd.glsl
Normal file
142
dot_config/ghostty/shaders/custom/cash_money_dvd.glsl
Normal file
|
|
@ -0,0 +1,142 @@
|
|||
#define PI 3.141592653589793
|
||||
|
||||
float sdEllipse(vec2 p, vec2 r) {
|
||||
vec2 q = p / r;
|
||||
return (length(q) - 1.0) * min(r.x, r.y);
|
||||
}
|
||||
|
||||
float sdCircle(vec2 p, float r) {
|
||||
return length(p) - r;
|
||||
}
|
||||
|
||||
float sdBox(vec2 p, vec2 b) {
|
||||
vec2 d = abs(p) - b;
|
||||
return length(max(d, 0.0)) + min(max(d.x, d.y), 0.0);
|
||||
}
|
||||
|
||||
float opStroke(float d, float w) {
|
||||
return abs(d) - w;
|
||||
}
|
||||
|
||||
float fill(float d) {
|
||||
return 1.0 - smoothstep(0.0, 0.004, d);
|
||||
}
|
||||
|
||||
float stroke(float d, float w) {
|
||||
return 1.0 - smoothstep(0.0, 0.004, opStroke(d, w));
|
||||
}
|
||||
|
||||
// Simple dollar sign SDF-ish shape
|
||||
float dollarSign(vec2 p) {
|
||||
float s = 0.0;
|
||||
|
||||
// main vertical bar
|
||||
float bar = fill(sdBox(p, vec2(0.018, 0.18)));
|
||||
|
||||
// upper curve
|
||||
vec2 pu = p - vec2(0.02, 0.07);
|
||||
float upperOuter = stroke(sdCircle(pu, 0.11), 0.020);
|
||||
float upperCut = fill(sdBox(pu - vec2(-0.07, 0.00), vec2(0.08, 0.14)));
|
||||
float upper = upperOuter * (1.0 - upperCut);
|
||||
|
||||
// lower curve
|
||||
vec2 pl = p - vec2(-0.02, -0.07);
|
||||
float lowerOuter = stroke(sdCircle(pl, 0.11), 0.020);
|
||||
float lowerCut = fill(sdBox(pl - vec2(0.07, 0.00), vec2(0.08, 0.14)));
|
||||
float lower = lowerOuter * (1.0 - lowerCut);
|
||||
|
||||
s = max(bar, max(upper, lower));
|
||||
return s;
|
||||
}
|
||||
|
||||
void mainImage(out vec4 fragColor, in vec2 fragCoord) {
|
||||
vec2 uv = fragCoord.xy / iResolution.xy;
|
||||
vec4 base = texture(iChannel0, uv);
|
||||
vec3 col = base.rgb;
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
// Bouncing "DVD logo" style motion
|
||||
// ------------------------------------------------------------------
|
||||
vec2 logoSize = vec2(0.23, 0.13); // width/height of medallion in UV space
|
||||
vec2 minP = logoSize * 0.5 + vec2(0.03, 0.04);
|
||||
vec2 maxP = vec2(1.0) - minP;
|
||||
|
||||
// Ping-pong motion
|
||||
vec2 travel = maxP - minP;
|
||||
vec2 phase = fract(vec2(iTime * 0.070, iTime * 0.052) + vec2(0.17, 0.61));
|
||||
vec2 tri = abs(phase * 2.0 - 1.0);
|
||||
vec2 center = minP + travel * tri;
|
||||
|
||||
// Local coordinates around logo center
|
||||
vec2 p = uv - center;
|
||||
p.x *= iResolution.x / iResolution.y; // aspect correction
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
// Cash Money inspired medallion
|
||||
// ------------------------------------------------------------------
|
||||
float outer = sdEllipse(p, vec2(0.17, 0.095));
|
||||
float inner = sdEllipse(p, vec2(0.145, 0.078));
|
||||
float core = sdEllipse(p, vec2(0.122, 0.060));
|
||||
|
||||
float outerFill = fill(outer);
|
||||
float innerRing = stroke(inner, 0.010);
|
||||
float coreFill = fill(core);
|
||||
|
||||
// Rim beading / jewelry vibe
|
||||
float angle = atan(p.y, p.x);
|
||||
float beads = pow(0.5 + 0.5 * sin(angle * 26.0 - iTime * 2.2), 8.0);
|
||||
beads *= stroke(sdEllipse(p, vec2(0.158, 0.086)), 0.008);
|
||||
|
||||
// Chrome/gold light sweep
|
||||
float sweep = pow(max(0.0, sin((uv.x * 4.0 + uv.y * 2.6) * PI * 2.0 - iTime * 1.7)), 18.0);
|
||||
|
||||
vec3 darkGold = vec3(0.28, 0.12, 0.02);
|
||||
vec3 gold = vec3(0.95, 0.67, 0.16);
|
||||
vec3 paleGold = vec3(1.00, 0.88, 0.52);
|
||||
vec3 diamond = vec3(1.00, 0.96, 0.85);
|
||||
|
||||
vec3 logoCol = vec3(0.0);
|
||||
|
||||
// outer medallion
|
||||
logoCol += outerFill * mix(darkGold, gold, 0.65);
|
||||
logoCol += innerRing * paleGold * 0.9;
|
||||
logoCol += beads * paleGold * 0.8;
|
||||
logoCol += coreFill * mix(gold, paleGold, 0.35);
|
||||
|
||||
// embossed center
|
||||
float emboss = 0.5 + 0.5 * sin(p.x * 28.0 + p.y * 12.0 - iTime * 0.6);
|
||||
logoCol += coreFill * emboss * vec3(0.10, 0.05, 0.01);
|
||||
|
||||
// dollar sign centerpiece
|
||||
float ds = dollarSign(p * 1.7);
|
||||
logoCol = mix(logoCol, diamond, ds * 0.9);
|
||||
logoCol += ds * paleGold * 0.35;
|
||||
|
||||
// little sparkle hits
|
||||
float sparkle1 = exp(-length((p - vec2(-0.07, 0.03)) * vec2(1.0, 1.2)) * 60.0);
|
||||
float sparkle2 = exp(-length((p - vec2(0.08, -0.01)) * vec2(1.0, 1.2)) * 80.0);
|
||||
float cross1 = (1.0 - smoothstep(0.0, 0.004, abs(p.x + 0.07))) * (1.0 - smoothstep(0.0, 0.05, abs(p.y - 0.03)));
|
||||
cross1 += (1.0 - smoothstep(0.0, 0.004, abs(p.y - 0.03))) * (1.0 - smoothstep(0.0, 0.05, abs(p.x + 0.07)));
|
||||
float cross2 = (1.0 - smoothstep(0.0, 0.003, abs(p.x - 0.08))) * (1.0 - smoothstep(0.0, 0.04, abs(p.y + 0.01)));
|
||||
cross2 += (1.0 - smoothstep(0.0, 0.003, abs(p.y + 0.01))) * (1.0 - smoothstep(0.0, 0.04, abs(p.x - 0.08)));
|
||||
|
||||
float twinkle = 0.65 + 0.35 * sin(iTime * 5.0);
|
||||
logoCol += (sparkle1 * cross1 + sparkle2 * cross2) * paleGold * twinkle * 0.9;
|
||||
|
||||
// moving light sweep across logo
|
||||
logoCol += outerFill * sweep * vec3(1.0, 0.92, 0.60) * 0.45;
|
||||
|
||||
// subtle shadow behind logo
|
||||
float shadow = fill(sdEllipse(p - vec2(0.010, -0.010), vec2(0.17, 0.095)));
|
||||
shadow *= 0.18;
|
||||
|
||||
// Logo mask
|
||||
float logoMask = outerFill;
|
||||
|
||||
// Keep it in background so text stays readable
|
||||
// Darken behind medallion slightly, then add logo
|
||||
col = mix(col, col * 0.82, shadow);
|
||||
col = mix(col, col + logoCol, logoMask * 0.32);
|
||||
|
||||
fragColor = vec4(clamp(col, 0.0, 1.0), base.a);
|
||||
}
|
||||
Loading…
Reference in a new issue