Oliver: "what is this white flashing while applause in the upper right corner of the crowd". With the photographers switched off entirely it was still there, so it was never them — it was mine, from this morning. The top fade is baked into the cached stand, and drawRaisers was painting a spectator's box straight over it with only the dim applied. Every time that spectator stood up his box lost the fade and lit up; every time he sat down it came back. Measured on the canvas: a 146-luminance jump, twice a second, in exactly the two places raisers sit near the top of the picture. Both stand treatments now come from one function each and are applied in both places. The gradient is built in user space, so filling a raiser's sub-rect with it picks up the right alpha for free. Probed again after the fix: zero bright pops during applause and during the wave, against the four hot spots before. While chasing it, two real detector faults turned up and are fixed too: a blob may not be a pale block (a re-rolled cream shirt is "new material" by the stand-turned-person test but nothing rises), and it may not cover something already bright (a genuine arm drawn over a white shirt deletes a white block, which flashes just as hard). 94 raisers survive both rules. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
106 lines
4.3 KiB
JavaScript
106 lines
4.3 KiB
JavaScript
// GENERATED by assets/_crowdpass.py — do not edit by hand, re-run the tool.
|
|
// The crowd sheet is FRAMES frames stacked vertically: 0 seated (the backdrop), 1 arms
|
|
// high, 2 hands together in front of the face. RAISERS lists the spectators who can move:
|
|
// [x, y, w, h] as fractions of ONE FRAME, then a bitmask of the raised frames that person
|
|
// actually appears in (1 = arms high, 2 = mid-clap, 3 = both, and 3 is a real clap cycle).
|
|
// Each box holds ONE person and nobody else, and outside these boxes every frame is
|
|
// pixel-identical to frame 0 — which is what lets render.js animate them one at a time
|
|
// with no seam. See "THE CROWD SHEET" in PROJECT.md.
|
|
export const FRAMES = 3;
|
|
export const RAISERS = [
|
|
[-0.0014, 0.1107, 0.0447, 0.0247, 2],
|
|
[-0.0014, 0.6458, 0.0327, 0.0560, 2],
|
|
[-0.0014, 0.7682, 0.0419, 0.0221, 2],
|
|
[-0.0014, 0.8451, 0.0327, 0.0521, 3],
|
|
[0.0064, 0.3190, 0.0206, 0.0286, 2],
|
|
[0.0071, 0.9128, 0.0369, 0.0286, 3],
|
|
[0.0234, 0.9440, 0.0206, 0.0286, 2],
|
|
[0.0355, 0.6419, 0.0753, 0.0677, 3],
|
|
[0.0568, 0.8503, 0.0412, 0.0273, 1],
|
|
[0.0689, 0.3190, 0.0334, 0.0286, 2],
|
|
[0.0859, 0.7669, 0.0249, 0.0247, 2],
|
|
[0.0952, 0.5755, 0.0284, 0.0521, 2],
|
|
[0.1278, 0.6719, 0.0284, 0.0299, 2],
|
|
[0.1392, 0.9362, 0.0213, 0.0234, 2],
|
|
[0.1399, 0.3190, 0.0249, 0.0286, 2],
|
|
[0.1562, 0.6732, 0.0206, 0.0286, 2],
|
|
[0.1598, 0.9518, 0.0213, 0.0234, 2],
|
|
[0.1641, 0.8672, 0.0298, 0.0430, 2],
|
|
[0.1768, 0.7305, 0.0376, 0.0299, 1],
|
|
[0.1854, 0.7982, 0.0540, 0.0495, 2],
|
|
[0.1918, 0.5964, 0.0526, 0.0326, 2],
|
|
[0.2393, 0.8594, 0.0298, 0.0299, 2],
|
|
[0.2528, 0.9336, 0.0284, 0.0391, 3],
|
|
[0.2557, 0.7305, 0.0213, 0.0299, 1],
|
|
[0.2599, 0.5924, 0.0384, 0.0365, 2],
|
|
[0.2734, 0.6458, 0.0199, 0.0221, 2],
|
|
[0.2891, 0.9440, 0.0213, 0.0378, 2],
|
|
[0.2898, 0.8503, 0.1371, 0.0859, 3],
|
|
[0.2976, 0.6732, 0.0170, 0.0326, 2],
|
|
[0.3026, 0.7682, 0.0419, 0.0273, 3],
|
|
[0.3359, 0.4922, 0.0575, 0.0833, 2],
|
|
[0.3565, 0.9440, 0.0206, 0.0378, 2],
|
|
[0.3729, 0.6602, 0.0206, 0.0312, 2],
|
|
[0.3899, 0.6003, 0.0241, 0.0286, 2],
|
|
[0.3899, 0.9440, 0.0206, 0.0286, 2],
|
|
[0.3977, 0.6523, 0.0831, 0.0638, 3],
|
|
[0.4055, 0.8008, 0.0213, 0.0352, 1],
|
|
[0.4233, 0.7669, 0.0504, 0.0247, 2],
|
|
[0.4354, 0.8438, 0.0291, 0.0534, 3],
|
|
[0.4389, 0.9362, 0.0220, 0.0234, 2],
|
|
[0.4602, 0.9427, 0.0170, 0.0299, 2],
|
|
[0.4730, 0.5534, 0.0291, 0.0508, 3],
|
|
[0.4730, 0.8672, 0.0249, 0.0221, 2],
|
|
[0.4901, 0.6458, 0.0533, 0.0560, 2],
|
|
[0.4936, 0.7044, 0.0298, 0.0247, 2],
|
|
[0.4936, 0.7669, 0.0497, 0.0247, 2],
|
|
[0.5021, 0.8503, 0.0291, 0.0312, 3],
|
|
[0.5064, 0.3190, 0.0206, 0.0286, 2],
|
|
[0.5064, 0.5755, 0.0206, 0.0234, 1],
|
|
[0.5611, 0.6719, 0.0291, 0.0299, 2],
|
|
[0.5682, 0.8776, 0.0298, 0.0221, 2],
|
|
[0.5689, 0.3190, 0.0334, 0.0286, 2],
|
|
[0.5724, 0.9362, 0.0220, 0.0234, 2],
|
|
[0.5895, 0.6732, 0.0192, 0.0286, 2],
|
|
[0.5938, 0.1107, 0.0462, 0.0312, 2],
|
|
[0.5938, 0.5534, 0.0334, 0.0299, 3],
|
|
[0.5959, 0.5846, 0.0149, 0.0443, 3],
|
|
[0.6023, 0.2643, 0.0249, 0.0208, 2],
|
|
[0.6186, 0.5911, 0.0213, 0.0378, 2],
|
|
[0.6186, 0.9362, 0.0249, 0.0365, 3],
|
|
[0.6357, 0.7227, 0.0284, 0.0208, 2],
|
|
[0.6357, 0.8516, 0.0284, 0.0273, 3],
|
|
[0.6371, 0.6458, 0.1271, 0.0703, 3],
|
|
[0.6399, 0.3190, 0.0249, 0.0286, 2],
|
|
[0.6776, 0.6003, 0.0249, 0.0286, 2],
|
|
[0.7053, 0.9297, 0.0419, 0.0430, 2],
|
|
[0.7230, 0.7669, 0.0412, 0.0312, 2],
|
|
[0.7393, 0.8672, 0.0213, 0.0234, 2],
|
|
[0.7401, 0.5990, 0.0327, 0.0299, 2],
|
|
[0.7401, 0.8398, 0.0327, 0.0273, 1],
|
|
[0.7692, 0.5755, 0.0249, 0.0234, 1],
|
|
[0.7727, 0.8503, 0.0916, 0.0312, 3],
|
|
[0.7940, 0.9440, 0.0163, 0.0286, 2],
|
|
[0.7983, 0.6732, 0.0163, 0.0326, 2],
|
|
[0.8068, 0.7695, 0.0419, 0.0260, 3],
|
|
[0.8182, 0.9023, 0.0547, 0.0391, 3],
|
|
[0.8565, 0.9440, 0.0206, 0.0378, 2],
|
|
[0.8622, 0.4922, 0.0312, 0.0742, 2],
|
|
[0.8686, 0.8503, 0.0291, 0.0326, 3],
|
|
[0.8899, 0.6003, 0.0241, 0.0286, 2],
|
|
[0.8899, 0.9440, 0.0206, 0.0378, 2],
|
|
[0.8977, 0.6732, 0.0249, 0.0286, 2],
|
|
[0.8984, 0.8503, 0.0284, 0.0234, 1],
|
|
[0.9062, 0.5755, 0.0206, 0.0234, 1],
|
|
[0.9062, 0.8008, 0.0206, 0.0352, 1],
|
|
[0.9062, 0.8776, 0.0206, 0.0326, 3],
|
|
[0.9233, 0.6523, 0.0582, 0.0599, 3],
|
|
[0.9240, 0.7669, 0.0533, 0.0247, 2],
|
|
[0.9354, 0.2461, 0.0291, 0.0286, 2],
|
|
[0.9354, 0.8438, 0.0291, 0.0534, 3],
|
|
[0.9389, 0.9362, 0.0220, 0.0234, 2],
|
|
[0.9602, 0.9440, 0.0170, 0.0286, 2],
|
|
[0.9730, 0.5586, 0.0284, 0.0456, 3],
|
|
[0.9730, 0.8672, 0.0249, 0.0234, 2],
|
|
];
|