Skip to content

+ xBRZ 1.9 is offered alongside the existing xBRZ entries - #57

Merged
Hawkynt merged 1 commit into
mainfrom
feat/xbrz-1.9
Sep 21, 2026
Merged

Hawkynt merged 1 commit into
mainfrom
feat/xbrz-1.9

Conversation

@Hawkynt

@Hawkynt Hawkynt commented Sep 21, 2026

Copy link
Copy Markdown
Owner

Closes #30, together with Hawkynt/C--FrameworkExtensions#23, which carries the implementation — Xbrz.cs lives upstream.

What changed upstream

xBRZ 1.9 made two changes to the output, both exact and integer: the steep direction threshold rose from 2.2 to 2.4, so fewer near-diagonal runs are treated as lines, and the weighted and 50/50 blends round to nearest rather than truncating.

1.5 through 1.8 were not gaps, which is worth stating because they look like they should be. 1.5 and 1.6 changed only the API and performance. 1.7's "centre direction bias" turned a hard-coded 4 into a config field defaulting to 4, and its asymmetric colour distance came from a byte-indexed lookup table the port never used. 1.8's transparent-outside-area rule is already reachable per axis through OutOfBoundsMode.

What changed here: nothing in the product code

The manipulator list is built from the upstream rescaler registry rather than a hand-maintained table, so the new [ScalerInfo("xBRZ 1.9")] entry reaches both the GUI and the CLI on its own as Upscaler: xBRZ 1.9 2x … 6x. This PR records that in the README and pins it with tests.

The existing xBRZ entries are untouched and bit-identical — upstream pins their output by hash against what they produced before 1.9 support existed. That is what keeps existing scripts and saved settings working; 1.9 is a separate entry, following the XBR / XBR NoBlend / XBR 3x Original precedent, rather than a change to the existing one.

Verification

SupportedManipulatorsTests.BothXbrzReleasesAreOfferedSeparately asserts both families are offered at every scale from 2x to 6x, so an upstream change that renamed or replaced the existing entry rather than adding beside it fails here rather than silently reaching users. CommandLineEndToEndTests gains Upscaler: xBRZ 1.9 4x, which drives the new scaler end to end through the CLI.

665 → 667 tests, green.

The upstream rescaler registry gained an "xBRZ 1.9" entry, which reaches the GUI
and the command line on its own because the manipulator list is built from that
registry rather than from a hand-maintained table. Nothing here had to change to
expose it, so this records it and pins it.

1.9 raises the steep direction threshold and rounds its blends instead of
truncating them; the plain xBRZ entries are untouched and still produce exactly
the pixels they always did, which is what keeps existing scripts and saved
settings working. The new test asserts both families are offered at every scale,
so an upstream change that renamed or replaced the existing entry rather than
adding beside it would fail here.
@Hawkynt
Hawkynt merged commit 7f5da1d into main Sep 21, 2026
4 checks passed
@Hawkynt
Hawkynt deleted the feat/xbrz-1.9 branch September 21, 2026 05:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

xBRz implementation out of date

1 participant