Phase 10 W1: de-noise Mix visualizer, clip to live player-bar height, redraw lava-lamp icon

This commit is contained in:
daniel-c-harvey
2026-06-16 11:12:20 -04:00
parent 74b9c02722
commit ff37efea89
3 changed files with 40 additions and 17 deletions
@@ -855,9 +855,13 @@ void main() {
// most effective "this is glass" cue (spec §4f.4).
float fresnel = pow(1.0 - max(dot(N, V), 0.0), GLASS_FRESNEL_POWER);
// Frosted translucency: a subtle noise modulation of alpha so edges read soft/lit
// rather than hard — the "frosted glass" cue done in-shader (no CSS blur, §4f.3).
float frost = 0.85 + 0.15 * valueNoise(vec2(screenX * 0.05, screenYTop * 0.05));
// REMOVED (Phase 10 W1 de-noise, spec §3): the screen-space "frost" alpha noise —
// frost = 0.85 + 0.15 * valueNoise(vec2(screenX*0.05, screenYTop*0.05)). It was a
// static value-noise keyed to SCREEN coordinates (not the moving fluid), so it sat as
// a fixed grainy/dirty film over the whole ribbon — exactly the "static-looking texture
// that makes the screen look dirty" Daniel rejected. Alpha is now the clean backdrop
// opacity with no grain. (Fluid-tied noise — the bubble swell and the colour-field drift,
// both keyed to mix-time — is retained: it moves with the audio and does not read as dirt.)
// Compose the lit glass colour: field base + warped refraction, lifted by sheen and
// a Fresnel rim toward the VIVID moss accent, plus a white-hot specular dot. Using the
@@ -867,9 +871,10 @@ void main() {
lit = mix(lit, vividAccent * 1.3, fresnel * 0.7); // rim glows vivid moss
lit += spec * vec3(1.0); // specular is white light
// Alpha: the backdrop opacity, lifted at the rim (Fresnel) so edges catch light, and
// softened by the frost. Pre-multiplied output for the ONE/ONE_MINUS_SRC_ALPHA blend.
float alpha = inside * RIBBON_OPACITY * frost;
// Alpha: the backdrop opacity, lifted at the rim (Fresnel) so edges catch light.
// (Frost removed — see the de-noise note above.) Pre-multiplied output for the
// ONE/ONE_MINUS_SRC_ALPHA blend.
float alpha = inside * RIBBON_OPACITY;
alpha = clamp(alpha + inside * fresnel * RIBBON_OPACITY * 0.8, 0.0, 1.0);
fragColor = vec4(lit * alpha, alpha);