docs: backlog — resting pose settled; the unapplied fade alpha is next
This commit is contained in:
@@ -85,15 +85,21 @@ See [`structures/ui-composable-bundles.md`](structures/ui-composable-bundles.md)
|
||||
some alpha, i.e. the fade-to-black / dim / flash layers.
|
||||
See [`structures/ui-prm-primitives.md`](structures/ui-prm-primitives.md).
|
||||
**Still not composited**, for the reason below.
|
||||
* ❔ **`Element::rest()` picks the wrong pose for a fade group.** This is now the
|
||||
blocker on drawing `.prm`. The title's `pteff00.prm` is opaque → transparent →
|
||||
transparent → opaque, a screen transition; the screen sits at the transparent
|
||||
plateau, but `rest()`'s longest-dwell rule lands on the opaque endpoint — and
|
||||
that element paints **last**, so drawing it blacks out the title. Candidate
|
||||
rule: the resting pose is the longest run of *consecutive keyframes with equal
|
||||
values*, not the longest gap. It is **not** `.prm`-specific — it would change
|
||||
`rest()` for every element on the disc — so the first step is to A/B it against
|
||||
the title framebuffer capture and the two verified screens before it lands.
|
||||
* ✅ **`Element::rest()` fixed** (2026-08-19): the resting pose is the **hold** —
|
||||
the longest run of consecutive keyframes with an identical pose — not the
|
||||
longest gap. A keyframe is the start of a ramp toward the next one, so a long
|
||||
gap means the screen spends it *arriving at* the far end. Verified against the
|
||||
title framebuffer capture by edge correlation: plateau **0.4597 at shift
|
||||
(0,0)**, old rule 0.1511 and only after a (+3,+8) shift. Fixes six title
|
||||
elements that rested invisible and the fade quad that rested opaque black.
|
||||
See [`structures/ui-resting-pose.md`](structures/ui-resting-pose.md) and
|
||||
`tools/re-capture/align_to_capture.py`.
|
||||
* ❔ **`compose` ignores the keyframe `fade` alpha.** ← *next, and the last thing
|
||||
between here and drawing `.prm`.* `blit` modulates by `tint`, which is
|
||||
`0xffffffff` on essentially every keyframe; the `fade` ARGB is never applied.
|
||||
That is why resting on the wrong keyframe was invisible for so long, and it is
|
||||
the whole content of a `.prm` quad. First step: apply `fade` alpha in `blit`
|
||||
and A/B the title against the capture with `align_to_capture.py`.
|
||||
* ❔ **Blend mode for the primitives.** Straight alpha is the assumption for the
|
||||
black dim quads; the near-white flash (`0xf0ffffff`) and the coloured ones
|
||||
(`0x60ff0000`, `0x0000ffd4`) may be additive. Nothing measured.
|
||||
|
||||
Reference in New Issue
Block a user