Découvert en vérifiant le constat #5 du lot paint (PR #154), hors périmètre de ce constat.
Contexte
compute_scroll_offset produit une translation appliquée par draw_animated_background à tous les presets, avant le dispatch. PR #154 a borné cette translation à une période de tuile, ce qui corrige les deux presets réellement périodiques (grid_dots, heropattern).
Le problème restant
Trois presets sur cinq ne sont pas périodiques sous translation, et animent déjà leur propre mouvement en interne depuis speed / direction :
gradient_shift — direction pilote le sens de rotation (Cw/Ccw), et le shader est dessiné sur Rect::from_wh(width, height), sans marge. Toute translation non nulle laisse donc une bande non couverte.
concentric_circles — calcule son propre offset = (time * speed) % spacing. La translation externe est une double animation, et translater un motif radial déplace son centre.
halo — anime ses zones en interne.
Avant PR #154 l'offset croissait sans borne : le fond finissait par sortir entièrement du cadre. Après, l'artefact est borné (≤ 60 px, la valeur par défaut de tile_spacing) mais toujours présent, sous la forme d'un saut périodique.
Piste
Faire retourner (0.0, 0.0) à compute_scroll_offset pour les presets dont le dessin n'est pas périodique sous translation — c'est-à-dire ne conserver le défilement externe que pour grid_dots et heropattern, les deux seuls qui n'ont aucun mouvement propre et en dépendent réellement.
À arbitrer avant de le faire : c'est un changement de rendu visible pour tout scénario existant qui déclare un direction sur l'un de ces trois presets. Le mouvement retiré est celui qui fait disparaître le fond, donc le retirer est une correction — mais la décision mérite d'être prise explicitement plutôt que glissée dans un lot de correctifs.
Vérification suggérée
Un test par preset : avg_luma d'une bande de 60 px au bord opposé à la direction de défilement doit rester stable sur toute la durée du scénario.
Découvert en vérifiant le constat #5 du lot paint (PR #154), hors périmètre de ce constat.
Contexte
compute_scroll_offsetproduit une translation appliquée pardraw_animated_backgroundà tous les presets, avant le dispatch. PR #154 a borné cette translation à une période de tuile, ce qui corrige les deux presets réellement périodiques (grid_dots,heropattern).Le problème restant
Trois presets sur cinq ne sont pas périodiques sous translation, et animent déjà leur propre mouvement en interne depuis
speed/direction:gradient_shift—directionpilote le sens de rotation (Cw/Ccw), et le shader est dessiné surRect::from_wh(width, height), sans marge. Toute translation non nulle laisse donc une bande non couverte.concentric_circles— calcule son propreoffset = (time * speed) % spacing. La translation externe est une double animation, et translater un motif radial déplace son centre.halo— anime ses zones en interne.Avant PR #154 l'offset croissait sans borne : le fond finissait par sortir entièrement du cadre. Après, l'artefact est borné (≤ 60 px, la valeur par défaut de
tile_spacing) mais toujours présent, sous la forme d'un saut périodique.Piste
Faire retourner
(0.0, 0.0)àcompute_scroll_offsetpour les presets dont le dessin n'est pas périodique sous translation — c'est-à-dire ne conserver le défilement externe que pourgrid_dotsetheropattern, les deux seuls qui n'ont aucun mouvement propre et en dépendent réellement.À arbitrer avant de le faire : c'est un changement de rendu visible pour tout scénario existant qui déclare un
directionsur l'un de ces trois presets. Le mouvement retiré est celui qui fait disparaître le fond, donc le retirer est une correction — mais la décision mérite d'être prise explicitement plutôt que glissée dans un lot de correctifs.Vérification suggérée
Un test par preset :
avg_lumad'une bande de 60 px au bord opposé à la direction de défilement doit rester stable sur toute la durée du scénario.