05.7 · Sprite & pixel-art quality: research the craft, bench models/variants against the FLUX seat #20
Labels
No labels
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
cmoriarty/trog#20
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The fixture work (#17) put current sprite quality under a magnifying glass, and the critic's notes were fair: the knight has painterly mush instead of deliberate pixel clusters, no line discipline, a muddy plume; the apple's leaf is mangled; faces/details break on anything intricate (card pips). The seat produces recognizable sprites, not good pixel art. Investigate-then-decide, 05.3 bench pattern: research first, then candidates generate real assets side-by-side with the incumbent, judged on a review page.
Incumbent: FLUX.2-dev Q6 + core-node pixel post-pass (nearest downscale to grid + palette quantize) — per docs/asset-gen-research.md the post-pass is what makes output read as pixel art at all. Evaluation bar as ever: open weights, commercially usable license, self-hosted, swap-friendly, and it must beat the incumbent on something measurable.
Research (before any GPU time)
Bench (05.3 pattern, tier-2 seat CLI does the lifting)
Decision output
Per variant: adopt (seat/workflow change wired), reject (reason in docs/asset-gen-research.md), or defer (trigger that reopens). Plus: spec template gains the craft vocabulary the research produces, and the visual critic gains the same standards so future drains are judged by them.
Working material: seat CLI +
trog-games/seat-scratchfor one-off generation (#17), review-page tooling from the 05.3 bench (trog-games/audio-model-benchbench/build-bench-page.pyas the template), current workflowcomfyui/workflows/flux2-pixel-t2i.json.05.7 complete — research, bench, decisions wired
Review page (eye test is yours): http://trogdor:3923/games/sprite-bench/assets/review.html — 3 models x 2 prompt styles x 2 post-passes x 5 subjects x 2 grids, fixed seeds, critic verdicts alongside. Bench kit: trog-games/sprite-bench.
Root cause of the #17 complaints
The "mangled apple leaf" was the post-pass, not the model: in-graph
ImageQuantize(median cut) merged small-area hues away — the model painted the leaf green every time. The "painterly mush" was prompt-level: plain briefs render airbrushed cartoons the post-pass then has to rescue.Adopted (deployed)
docs/pixel-art-craft.md(saint11/Lospec vocabulary: clusters, hue-shifted ramps, sel-out, banding, pillow shading, grid budget) wired into the spec template and the visual critic. Critic enforcement is a style-block Craft: opt-in — legacy specs keep their honest bar, new games opt in via template.trog_lib/pixel_post.py: OKLab k-means snapped to true source colors + orphan-pixel cleanup, replacing ImageQuantize in both flux2 graphs; applied to every PNG artifact, sheets included.Rejected
Deferred (with triggers, in docs/asset-gen-research.md 05.7)
Z-Image fine-detail lane · PixelOE contrast downscale in prod (torch dep) · SDXL family · 32-grid characters (every variant collapses to speckle — real open gap) · animation: wan2.2 attack LoRA pair is the non-locomotion candidate; object motion (card-flip) has nothing purpose-built — keyframes + RIFE is the technique to trial.
Fixture + critic fallout (same-day arc, full evidence in critic-calibration.md §6)
enable_thinking offwas 6x faster but hallucinated ("static sheet" disproven by pixel diff) → reverted with a 4096 cap. Speed lever moves to the brain-server flags.Calibration readout
Critic tracks the post-pass A/B on the incumbent (core FAIL -> oe PASS on the same raw, the leaf case) but does not crisply rank models — verdict-as-gate yes, verdict-as-ranker no; ranking stays with the eye.
Commits:
eb94e83,d97e50e,4344fb1,e2fba4c,dea5443,81ceb98+ docs. My adopt/reject calls are provisional on your eye pass of the review page — pick_workflow is a one-line revert if the klein look isn't what you want.Eye-pick verdicts applied (final wiring, commit
29cfc22)Picks from pick.html, all deployed and smoke-tested end-to-end:
Craft:appends kind-aware suffixes, one-offs carry it by default.pixel_post.pixelize_pngowns downscale + OKLab palette + orphan cleanup. torch-cpu/kornia/opencv joined the server image.Fine:field on spec entries +trog image --fine→zimage-pixel-t2i.json. For glyphs/indices/intricate small-grid subjects.Smoke proof (production one-offs, post-deploy): default lane apple — 96×96, exactly 16 colors, green leaf intact (the #17 failure, now structurally fixed); fine lane ace of spades — correct pip + indices.
http://trogdor:3923/oneoffs/2026-07-25/smoke-default-205815.png · http://trogdor:3923/oneoffs/2026-07-25/smoke-fine-205951.png
89 tests green. Ticket complete from my side — close when satisfied.