From 60feeaec2c604ad5a3191124730ef7475b26c913 Mon Sep 17 00:00:00 2001 From: jim kolpack Date: Fri, 9 Oct 2026 16:55:08 -0400 Subject: [PATCH] Revert jitter hue tint -- caused a visible artifact, not worth the risk The hue tint (added to make the +-1px jitter shift more visible) caused a real, reported visual bug: a solid-colored strip on whichever edge _glitch_shift's Padding fell on, seen as "a gradient" on the right side of the art. Root cause: filter.Hue was wrapping the *padded* result, so it tinted the shift's own blank margin along with the real image content, instead of leaving that margin neutral. Tried reordering (tint zoom first, then pad/shift it) to fix that, but that exposed a worse problem: the padding's true underlying fill is dark enough that, once genuinely untinted, it reads as actual black border -- 34 corner hits across 200 frames, far worse than any previous configuration. Reverting the hue tint entirely rather than continuing to patch it. Plain +-1px shift, no tint, is back -- confirmed 0 black-corner hits across 200 frames. The jitter's position shift is confirmed mechanically correct (pixel-diffed in isolation to a clean, alternating 1-column shift) but stays visually subtle; making it more noticeable without reopening either the border or an artifact needs a more careful pass, not another quick layer on top of this mechanism. --- subwave_nowplaying.star | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/subwave_nowplaying.star b/subwave_nowplaying.star index ca571ac..a4796a3 100644 --- a/subwave_nowplaying.star +++ b/subwave_nowplaying.star @@ -528,23 +528,25 @@ def _glitch_jitter(zoom): # cancel out, e.g. -2 and 2, which silently zeroed out the # jitter in about half the states when this was tried before). # - # +-2px was tried as a more-visible alternative and reopened - # the black border (10 corner hits across 130 frames, vs 0 at - # +-1px) -- the margin _glitch_shift relies on genuinely isn't - # big enough for +-2px in every zoom_position/origin - # combination, even though it read as safe in an earlier, - # narrower check. So the position shift stays capped at - # +-1px, and a brief hue tint (filter.Hue, the same mechanism - # _glitch_band already used before the RGB-split bands were - # disabled) is layered onto each shifted state instead to - # make the burst read clearly against scanlines/corner ticks - # -- a color change doesn't touch geometry, so it carries none - # of the margin risk a bigger shift does. + # Two attempts to make this more visible were each tried and + # reverted: +-2px reopened the black border (10 corner hits + # across 130 frames, vs 0 at +-1px -- _glitch_shift's margin + # genuinely isn't big enough for +-2px in every + # zoom_position/origin combination). A filter.Hue tint on + # each state was tried next, in both orderings relative to + # _glitch_shift's Padding -- tinting the already-padded result + # tinted the shift's own blank margin too (a visible teal + # strip on whichever edge got padded, reported as "a + # gradient" on the art), and tinting first, before padding + # (to keep the margin neutral), instead exposed that the + # margin's true underlying fill is dark enough to read as a + # real black border (34 hits across 200 frames). Both + # reverted; the shift stays plain, capped at +-1px, with no + # color tint -- confirmed 0 black-corner hits at this + # configuration, which matters more here than making the + # burst louder. shift = random.number(0, 2) - 1 # random.number requires min >= 0 - hue = random.number(0, 1) - hue_change = 150.0 if hue == 0 else -60.0 - tinted = filter.Hue(child = _glitch_shift(zoom, shift), change = hue_change) - shifted = render.Box(width = ART_SLOT, height = ART_SLOT, child = tinted) + shifted = render.Box(width = ART_SLOT, height = ART_SLOT, child = _glitch_shift(zoom, shift)) for _ in range(GLITCH_HOLD_TICKS): children.append(shifted) rest = render.Box(width = ART_SLOT, height = ART_SLOT, child = zoom)