Files
Sylpheed/docs/re/structures/title-residual-tone-vs-geometry.md
sylph-decoder f2a74efe2d re: at least two thirds of the title s disagreement is geometry, not tone
Separates two confounded effects so the pending rotation decision has a number:
how much would drawing the rotation actually buy.

A per-level lookup table fitted on a screen is the most general tone model there
is -- every render level mapped to whatever capture level minimises the error,
no functional form assumed -- so whatever such a LUT cannot close is by
construction not a per-level effect. Fitting on the screen itself therefore gives
an upper bound on the tone share and a lower bound on the geometry share.

Positive control: on the main menu, where the port measures 0.06 percent of
pixels differing so geometry is essentially right, a self-fitted LUT closes
70.3 percent, from 9.26 to 2.75. The instrument can collapse a tone-dominated
residual.

Result: on the title the same self-fitted LUT closes only 32.0 percent, from
10.92 to 7.42. So at most a third of the title s disagreement is tone and at
least two thirds is spatial -- content in the wrong place, which is where the
rotation lives. The fitted LUT is generous to tone, so the geometry share is if
anything larger.

Also refutes the idea of a single transferable tone curve. Fitted on the title
and applied to the menu it closes 29.7 percent; fitted on the menu and applied to
the title it makes things 24 percent WORSE. A curve fitted on a dark flat screen
is unconstrained at the bright end -- the menu s populated range is levels 5 to
204 with few bright pixels -- and extrapolating it onto the title s planet and
wordmark actively harms. That extends the existing refutation of the single
exponent: even a full per-level LUT fails to transfer, so a consumer must not
carry a global tone correction.

Reach: two screens, one capture each, and the title pairing is the same screen
but not the same instant, so the ratio is what is claimed rather than the
absolute level. Our render draws the sweeps parent record only, so the geometry
share includes both the missing rotation and the missing leaf placement -- both
closed by the same decision.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QsEPXWVaEpyfudtR6re1Pd
2026-08-29 18:45:15 +00:00

3.6 KiB
Raw Blame History

At least two thirds of the title's disagreement is GEOMETRY, not tone

Classification: measured, on committed captures. Answers a question the pending rotation decision needs: how much would drawing the rotation actually buy?

Two separate effects are known to make our renders differ from the console:

  • the tone curve — the console renders midtones brighter than we do (ui-render-tone-curve.md), and its single-exponent model is refuted above render ≈ 40;
  • the missing rotation — our blit draws axis-aligned rectangles, so the title's two tilted light sweeps land as upright bars (ui-keyframe-rotation.md).

They are confounded in any whole-frame number. This separates them.

Method, and why the split is an upper bound on tone

A per-level lookup table fitted on a screen is the most general tone model there is: it maps every render level to whatever capture level minimises the error, with no functional form assumed. Whatever such a LUT cannot close is, by construction, not a per-pixel-level effect — it is spatial.

So fitting a LUT on the screen itself and measuring what remains gives an upper bound on the tone share and a lower bound on the geometry share.

The positive control

The method must be able to close a residual that really is tone. On the main menu — where the port measures only 0.06 % of pixels differing, so geometry is essentially right — it does:

mean abs difference closed
main menu, uncorrected 9.26
main menu + LUT fitted on the main menu 2.75 70.3 %

The instrument works: a tone-dominated residual collapses by 70 %.

The result

mean abs difference closed
title, uncorrected 10.92
title + LUT fitted on the title 7.42 32.0 %

🔴 At most 32 % of the title's disagreement is a tone effect, so at least 68 % is spatial — content in the wrong place. That is where the rotation lives, and it makes the rotation the dominant term by roughly two to one.

⚠️ The same-screen LUT is fitted, so 32 % is generous to tone. The true tone share is smaller and the geometry share larger.

🔴 And a claim this refutes: there is no single transferable tone curve

Fitting on one screen and applying to the other:

closed
main menu + LUT fitted on the title +29.7 %
title + LUT fitted on the main menu 24.0 %

The menu's curve makes the title worse. A curve fitted on a dark, flat screen is unconstrained at the bright end — the menu's populated range is levels 5204 with few bright pixels — and extrapolating it onto the title's planet and wordmark actively harms.

⚠️ So "the tone curve" is not one thing that can be measured once and applied. This extends ui-render-tone-curve.md's refutation of the single exponent: even a full per-level LUT fails to transfer between screens. A consumer must not carry a global tone correction.

Reach

  • Two screens, one capture each; the title capture is the plate-free frame and our render is at rest, so they are the same screen but not the same instant — a looser pairing than the port's posed comparison, which is why the absolute numbers here (10.92) are larger than its 1.81 % of pixels. ⚠️ The ratio is what this page claims, not the absolute level.
  • Our render draws the sweeps' parent record only — the pre-leaf-fix state — so the geometry share measured here includes both the missing rotation and the missing leaf placement. Both are closed by the same decision.