The two dims stopped stacking, and centre court's crowd is graded off a lifted target

Oliver: "it is too dim to see anything on the centre court and the dark court."
Both were the same mistake — standBack was ADDED to a court's own dim instead of
being the default it falls back to. Centre court's crowd sheet is a night-lit
navy that is dark to begin with, and the night court dims the hard-court sheet
on top of that, so the pair of them went to mud.

standDim is now court.dim ?? TUNE.standBack, plus the rot. Centre court carries
a 0.06 of its own, the night court comes down 0.62 -> 0.5 (it no longer has the
base added to it), and clay and hard keep the 0.22 that was approved.

Centre court's sheet is also graded off a LIFTED target now — the old crowd it
matches sat at a mean luminance of 39 against clay's 96, dark enough to throw
the new roll's detail away before any dim ran. A 0.72 gamma on the target brings
the sheet to 60 and the faces come back.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
wuwiandClaude Opus 5 committed 2026-08-21 14:12:07 +02:00
1 parent 0250e9bd20
commit eab0a4e837
5 files changed
+29 -15

No files matched your search

+11 -6
View File
@@ -297,10 +297,13 @@ export const TUNE = {
// cheered (render's drawClapColumns). Between points the crowd used to be a photograph. This is
// deliberately slow and single-column: a stand that fidgets constantly is a stand you look AT.
fidgetEvery: 4.5,
// HOW FAR BACK THE STAND SITS. A flat dim over the crowd and the boards, on every court, before
// the night court's own `dim` and the splatter rot are added on top. Oliver: "all of the art could
// be colored a little more dim as it is perspective wise farther in the background and should not
// steal too much attention." The crowd is the only thing on screen that is 30 m away.
// HOW FAR BACK THE STAND SITS: a flat dim over the crowd and the boards, before the splatter rot
// is added on top. Oliver: "all of the art could be colored a little more dim as it is perspective
// wise farther in the background and should not steal too much attention." The crowd is the only
// thing on screen that is 30 m away.
// THIS IS THE DEFAULT, NOT A FLOOR. A court with its own `dim` (centre court's already-dark crowd,
// the night court) replaces it rather than adding to it — stacking the two is what made those two
// unreadable: "it is too dim to see anything on the centre court and the dark court".
standBack: 0.22,
// ---- damage. Bodies with hp (racket boss 'r', brute 'g') take damage in these units, so a big
// boss is just a bigger hp number and every weapon stays proportional. Fractions are legal: they
@@ -694,7 +697,9 @@ export const UI = { hot: '#d9705f', warm: '#e0cc72', pick: '#cbd06a', cream: '#e
// sits up and drags, acrylic is the middle it always was.
export const COURTS = [
{ id: 'grass', name: 'CENTRE COURT', sub: 'GRASS · fast, low skid', tile: 'court_grass',
ads: 'x_ads', crowd: 'x_crowd', stripes: true, line: '#e8e8dc', border: '#e8e8dc',
// dim 0.06: centre court's crowd is a night-lit navy sheet and is dark to begin with, so it
// takes almost none of the standBack default (see TUNE.standBack).
ads: 'x_ads', crowd: 'x_crowd', stripes: true, line: '#e8e8dc', border: '#e8e8dc', dim: 0.06,
bounceY: 0.50, bounceXZ: 0.84,
tennis: { stands: '#232e42', tierA: '#2a3750', tierB: '#26324a', board: '#0e5c2e',
out: '#295c2d', lawn: '#4cae52', stripe: '#46a54c' },
@@ -726,7 +731,7 @@ export const COURTS = [
// court and the whole picture stops being a night. Nothing else in COURTS carries it, so it is 0
// everywhere else and reads as absent.
{ id: 'gloom', name: 'THE NIGHT COURT', sub: 'AFTER DARK · TRUE BOUNCE, NO LIGHT', tile: 'court_gloom',
ads: 'x_ads_h', crowd: 'x_crowd_h', stripes: false, line: '#dff6ff', border: '#c8dbe6', dim: 0.62,
ads: 'x_ads_h', crowd: 'x_crowd_h', stripes: false, line: '#dff6ff', border: '#c8dbe6', dim: 0.5,
bounceY: 0.58, bounceXZ: 0.80,
tennis: { stands: '#0a0d15', tierA: '#0f131e', tierB: '#0c1019', board: '#131a2b',
out: '#0f1a15', lawn: '#16261e', stripe: '#16261e' },