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.
This commit is contained in:
1 parent
519a47d970
commit
60feeaec2c
1 file changed
+18
-16
+18
-16
@@ -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)
|
||||
|
||||