Turbo Lane
by MusicBar, progress bar
A low race car tears down the track to the playhead, painting a taillight streak behind it, with the exhaust flaring and the suspension dipping on every beat.
How it installs, its SHA-256 and its code
Click Apply: MusicBar downloads it, checks its SHA-256 and puts it on the taskbar, or just puts it on if it already has it. Needs MusicBar 1.8 or newer.
SHA-256 c949f8a5a12aa678ddba62c0b28e11d7d46ba0eee41bcbfe9ef27151b2fa44a6
//! name: Turbo Lane
//! author: MusicBar
//! kind: progress
//! description: A low race car tears down the track to the playhead, painting a taillight streak behind it, with the exhaust flaring and the suspension dipping on every beat.
float hash2(float2 p) { float3 q = frac(float3(p.x, p.y, p.x) * 0.1031); q += dot(q, q.yzx + 33.33); return frac((q.x + q.y) * q.z); }
// Smooth value noise, for the asphalt grain and the tire smoke.
float vnoise(float2 p)
{
float2 i = floor(p), f = frac(p);
f = f * f * (3.0 - 2.0 * f);
return lerp(lerp(hash2(i), hash2(i + float2(1, 0)), f.x), lerp(hash2(i + float2(0, 1)), hash2(i + float2(1, 1)), f.x), f.y);
}
// The car's roofline in bar heights: a low nose, a bump over each wheel, a ducktail at the back.
float roof(float x)
{
float y = 0.315 + 0.035 * exp(-pow((x + 0.33) / 0.2, 2.0)) + 0.06 * exp(-pow((x + 1.45) / 0.32, 2.0));
return y + 0.05 * smoothstep(-1.55, -1.95, x) - 0.1 * smoothstep(-0.3, 0.22, x);
}
float ellipse(float2 p, float2 r) { float k0 = length(p / r); return k0 * (k0 - 1.0) / max(length(p / (r * r)), 0.0001); }
float sdSeg(float2 p, float2 a, float2 b) { float2 pa = p - a, ba = b - a; return length(pa - ba * saturate(dot(pa, ba) / dot(ba, ba))); }
// Lays a color over what is there (premultiplied light, and how much of the pixel it covers).
void layer(inout float3 acc, inout float cover, float3 rgb, float a)
{
a = saturate(a);
acc = rgb * a + acc * (1.0 - a);
cover = a + cover * (1.0 - a);
}
float4 main(float2 uv : TEXCOORD) : COLOR
{
float u = size.y;
float2 px = float2(uv.x * size.x, rise(uv) * size.y); // pixels: along the bar, up from the screen edge
float head = progress * size.x;
float2 q = (px - float2(head, 0.0)) / u; // the car's frame, in bar heights, nose near 0
float aa = 1.0 / u; // one pixel in bar heights
float3 acc = float3(0, 0, 0);
float cover = 0;
float bass = spectrum(0.04);
float run = time * 7.0; // how far the road has slid by, in bar heights
// The track: dark asphalt at the screen edge with a striped kerb on the far side and dashes rushing left.
layer(acc, cover, float3(0.1, 0.1, 0.12) + vnoise(px * 0.5) * 0.06, step(px.y, 0.15 * u) * 0.85);
float stripe = step(0.5, frac((q.x + run) / 0.36));
layer(acc, cover, lerp(colorA.rgb * 0.8, float3(0.92, 0.92, 0.95), stripe), step(0.15 * u, px.y) * step(px.y, 0.19 * u) * 0.75);
float dl = 0.45 + 0.4 * level; // dashes stretch into streaks when the song is loud
float dx = frac((q.x + run) / 1.1) * 1.1;
float dash = smoothstep(0.0, 0.08, dx) * smoothstep(dl, dl - 0.15, dx) * smoothstep(0.016 * u + 0.5, 0.016 * u - 0.5, abs(px.y - 0.06 * u));
layer(acc, cover, float3(0.95, 0.95, 0.85), dash * 0.8);
// The finish: a checkered strip across the track and a waving checkered flag at the far end of the bar.
float fx = size.x - 0.32 * u;
float2 fc = floor(float2(px.x - fx, px.y) / (0.075 * u));
float check = frac((fc.x + fc.y) * 0.5) * 2.0;
layer(acc, cover, lerp(float3(0.08, 0.08, 0.1), float3(0.95, 0.95, 0.95), check), step(fx - 0.3 * u, px.x) * step(px.x, fx - 0.15 * u) * step(px.y, 0.15 * u));
float fl = (fx - px.x) / u;
float fy = (0.93 * u - px.y) / u + 0.05 * sin(fl * 8.0 - time * 7.0) * saturate(fl / 0.7);
float inFlag = step(0.0, fl) * step(fl, 0.66) * step(0.0, fy) * step(fy, 0.34);
float2 fcell = floor(float2(fl, fy) / 0.085);
float cloth = 0.75 + 0.3 * cos(fl * 8.0 - time * 7.0);
layer(acc, cover, lerp(float3(0.1, 0.1, 0.12), float3(1, 1, 1), frac((fcell.x + fcell.y) * 0.5) * 2.0) * cloth, inFlag * 0.95);
layer(acc, cover, float3(0.8, 0.82, 0.88), smoothstep(0.5, -0.5, abs(px.x - fx) - 0.018 * u) * step(0.15 * u, px.y) * step(px.y, 0.95 * u));
layer(acc, cover, colorC.rgb, smoothstep(0.5, -0.5, length(px - float2(fx, 0.96 * u)) - 0.04 * u));
// Behind the car: the long-exposure taillight streak over the whole played part.
float rearX = -1.97;
float back = max(rearX - q.x, 0.0);
float trail = step(q.x, rearX) * (0.25 + 0.75 * exp(-back / 2.5));
float ty = abs(q.y - 0.31) / (0.012 + 0.004 * back);
layer(acc, cover, colorA.rgb, trail * exp(-ty * 0.5) * 0.35);
layer(acc, cover, lerp(colorA.rgb, float3(1, 1, 1), 0.4), trail * smoothstep(1.2, 0.4, ty) * 0.9);
// Speed lines in the air and tire smoke at the rear wheel, stronger when the song is loud.
float rh = hash2(float2(floor(q.y / 0.055), 3.0));
float sl = frac((q.x + time * (9.0 + 8.0 * rh)) * (0.3 + 0.2 * rh) + rh * 7.0);
float lines = step(0.6, rh) * step(sl, 0.2 + 0.15 * level) * smoothstep(0.5, 0.1, abs(frac(q.y / 0.055) - 0.5)) * step(0.24, q.y);
layer(acc, cover, lerp(colorB.rgb, float3(1, 1, 1), 0.35), lines * smoothstep(0.3, -0.6, q.x) * exp(-back / 3.0) * (0.25 + 0.5 * level));
float sm = vnoise(float2(q.x * 6.0 + time * 40.0, q.y * 6.0 - time * 3.0)) * 0.7 + vnoise(float2(q.x * 13.0 + time * 45.0, q.y * 13.0)) * 0.3;
float sb = max(-1.4 - q.x, 0.0);
float puff = exp(-sb / 1.1) * smoothstep(-1.3, -1.6, q.x) * smoothstep(0.1 + 0.16 * min(sb, 1.2), 0.0, abs(q.y - 0.14 - 0.1 * min(sb, 1.5)));
layer(acc, cover, float3(0.85, 0.86, 0.9), puff * smoothstep(0.3, 0.8, sm) * (0.35 + 0.45 * level));
// The car body bounces on its springs: down on a kick, a buzz with the bass.
float2 b = q - float2(0.0, -0.035 * beat + 0.012 * bass * sin(time * 40.0));
// Headlight beam ahead and a soft shadow under the car.
float hb = max(b.x - 0.2, 0.0);
float beam = step(0.2, b.x) * exp(-abs(b.y - 0.215 + 0.04 * hb) / (0.02 + 0.09 * hb)) * exp(-hb / 1.6);
layer(acc, cover, float3(1.0, 0.95, 0.8), beam * (0.5 + 0.2 * level));
layer(acc, cover, float3(0, 0, 0), exp(-abs(q.y - 0.1) / 0.03) * smoothstep(0.15, 0.0, max(abs(q.x + 0.88) - 1.0, 0.0)) * 0.55);
// Exhaust flame from the rear: a blue-white core into the second color, flaring on the beat.
float flen = 0.16 + 0.42 * beat + 0.05 * sin(time * 73.0) + 0.08 * level;
float ft = (rearX + 0.01 - b.x) / flen;
float frad = 0.036 * (1.0 - ft * ft) * (1.0 + 0.5 * beat);
float flame = step(0.0, ft) * step(ft, 1.0) * smoothstep(frad + aa, frad - aa, abs(b.y - 0.2));
float fglow = exp(-length(float2(max(ft, 0.0) * flen, b.y - 0.2)) / (0.06 + 0.06 * beat)) * step(b.x, rearX + 0.02);
layer(acc, cover, colorB.rgb, fglow * (0.35 + 0.5 * beat));
layer(acc, cover, lerp(float3(0.85, 0.95, 1.0), colorB.rgb, saturate(ft * 1.5)), flame);
// The body: a low wedge with a bubble canopy, a rear wing, and the livery stripe.
float top = roof(b.x);
float slope = (roof(b.x + 0.01) - roof(b.x - 0.01)) / 0.02;
float sill = 0.15 + 0.06 * smoothstep(-0.15, 0.22, b.x);
float dBody = max(max((b.y - top) / sqrt(1.0 + slope * slope), sill - b.y), max(b.x - 0.22, -1.97 - b.x));
dBody = max(dBody, -length((b - float2(-1.97, 0.15)) / float2(1.0, 1.4)) + 0.04); // a rounded lower tail
float dCanopy = max(ellipse(b - float2(-0.88, 0.3), float2(0.46, 0.18)), 0.29 - b.y);
float dWing = min(sdSeg(b, float2(-1.99, 0.53), float2(-1.69, 0.535)) - 0.02, sdSeg(b, float2(-1.78, 0.38), float2(-1.82, 0.52)) - 0.016);
layer(acc, cover, colorA.rgb * 0.15, smoothstep(aa, -aa, min(min(dBody, dCanopy), dWing) - 1.2 * aa));
float t = saturate((b.y - 0.15) / (top - 0.15));
float3 body = colorA.rgb * (0.4 + 0.75 * t) + 0.4 * exp(-abs(b.y - top + 0.045) / 0.01); // with a gloss line on the shoulder
float band = b.y - lerp(0.255, 0.2, smoothstep(-0.3, 0.2, b.x)); // the stripe follows the nose down
body = lerp(body, colorC.rgb * (0.75 + 0.35 * t), smoothstep(aa, -aa, abs(band) - 0.02));
body = lerp(body, float3(1, 1, 1) * 0.92, smoothstep(aa, -aa, abs(band - 0.033) - 0.006));
body += float3(1, 1, 1) * 0.5 * smoothstep(-0.022, 0.0, dBody) * step(0.27, b.y); // lit top edge
body = lerp(body, colorA.rgb * 0.25, smoothstep(0.19, 0.16, b.y)); // dark sill
float wingT = saturate((b.y - 0.5) / 0.05);
body = lerp(body, colorA.rgb * (0.3 + 0.6 * wingT) + 0.2 * wingT, step(0.45, b.y) * step(dWing, 0.0));
layer(acc, cover, body, smoothstep(aa, -aa, min(dBody, dWing)));
// The canopy glass: dark, a reflection gradient, the driver's helmet, and a glint that slides on the beat.
float g = saturate((b.y - 0.3) / 0.18);
float3 glass = lerp(float3(0.04, 0.05, 0.1), lerp(colorB.rgb, float3(1, 1, 1), 0.3) * 0.6, g * g);
float3 helm = lerp(float3(0.95, 0.95, 0.97), float3(0.05, 0.05, 0.08), step(-0.8, b.x - 0.02) * step(abs(b.y - 0.37), 0.022));
glass = lerp(glass, helm * 0.75, smoothstep(aa, -aa, length(b - float2(-0.8, 0.37)) - 0.07) * 0.85);
glass += exp(-abs(b.x + 0.72 - 0.5 * (b.y - 0.4) + 0.12 * beat) / 0.018) * 0.8 * step(0.34, b.y);
layer(acc, cover, colorA.rgb * 0.3, smoothstep(aa, -aa, dCanopy));
layer(acc, cover, glass, smoothstep(aa, -aa, dCanopy + 0.015));
// Head and tail lights.
layer(acc, cover, float3(1, 0.97, 0.85), smoothstep(aa, -aa, ellipse(b - float2(0.1, 0.235), float2(0.065, 0.013))));
layer(acc, cover, float3(1.0, 0.15, 0.2), exp(-length((b - float2(-1.96, 0.31)) / float2(1.0, 2.0)) / 0.03) * 0.8);
// Wheels: a dark arch, the tire, and a rim whose five spokes blur into a disc at speed.
float2 w = q - float2(b.x < -0.9 ? -1.5 : -0.32, 0.23);
float wr = length(w);
layer(acc, cover, float3(0.03, 0.03, 0.05), smoothstep(aa, -aa, wr - 0.165) * step(dBody, 0.0));
float spokes = smoothstep(0.3, 0.7, cos((atan2(w.y, w.x) + time * 30.0) * 5.0));
float blur = saturate(0.35 + 0.65 * level);
float3 rim = lerp(float3(0.75, 0.77, 0.82) * (0.45 + 0.55 * lerp(spokes, 0.55, blur)), colorC.rgb, smoothstep(aa, -aa, wr - 0.025));
rim += 0.25 * exp(-abs(wr - 0.08) / 0.008) * blur;
float3 tire = float3(0.07, 0.07, 0.08) + 0.08 * smoothstep(0.12, 0.14, wr) * step(0.0, w.y);
layer(acc, cover, lerp(tire, rim, smoothstep(aa, -aa, wr - 0.095)), smoothstep(aa, -aa, wr - 0.14));
return paint(acc / max(cover, 0.001), cover);
}