3.4 KiB
M11-04 Status
status: done task: Explainable image-error metrics between the Web realtime viewport and a Blender 5.2 reference updated: 2026-08-17 America/New_York
Scope
Schema 1 RenderImageComparisonIR compares equal-size display-referred SRGB8/
STRAIGHT RGBA frames. The report records mean absolute error, root mean squared
error, P95 channel error, maximum channel error, bad-pixel ratio, reference-background
foreground intersection-over-union and alpha coverage delta. Each release check keeps
its measured value, threshold, direction and pass state; a mismatch returns the stable
RENDER_REFERENCE_MISMATCH code. Dimensions, byte lengths, threshold ranges and a
4,194,304-pixel bound are validated before comparison.
The reference is generated by Blender 5.2 Eevee from
tests/files/web/m11_render_reference.blend with a fixed camera, black rough material,
World color, one-sample TAA and zero dither. The source fixture, generator and PNG are
SHA-256 bound in tests/golden/M11-04/manifest.json. Re-render verification compares
decoded Blender pixels exactly because PNG container bytes may differ while pixels do
not.
Evidence
WEB_TEST_PORT=5552 npm --prefix web run test:render-reference: unit 3/3, Blender reference re-render verification passed, Chromium 3/3. Main-thread and Offscreen reports were identical: MAE2.0433349609375, RMS5.448994264342599, P954, maximum channel error110, bad-pixel ratio0.0047760009765625, foreground IoU0.9853400565736072, alpha coverage delta0.- Thresholds are MAE
4, RMS12, P9512, bad-pixel ratio0.02, foreground IoU0.97and alpha coverage delta0. A non-empty red block with the wrong composition is rejected asRENDER_REFERENCE_MISMATCH. npm --prefix web run typecheck,npm --prefix web run lint, production build (75 modules),npm --prefix web run test:status-consistencyandgit diff --checkpassed.
Implementation Hashes
web/protocol/render-image-comparison.ts:4345cc0d02b4482201de34292cbf5198009bf615e69c80cc00bc3e76116efec2web/app/src/three-adapter/render-image-comparison.ts:ad97fd594d0d964e05d4da2bffc84a64ef737fef700045c252b5222250f1ffc7web/protocol/error.ts:e8ea483466b16debaf803ff1640ade07a858a802781e3040d3547028ecb5d19ftools/web/generate-m11-render-reference.py:118c98c77d98922e72660898bfb65842e11743fc77f4124c9f5088a76cb6a94atools/web/check-render-reference.mjs:ead3500f054e98c2db4cd6596c983586a622e929bc8a587e9fbd38d94a7df7d1web/tests/unit/render-image-comparison.test.mjs:f9800745760b85700e80abc5e389f44d7f7ea3b9e41e1002f4e5449bcb620f67web/tests/e2e/render-reference.spec.ts:349c7da0dfd60baec80139cced52079312bd5e892a42f000ba0b4f55c6a4a61dtests/files/web/m11_render_reference.blend:d2bea55fe4de0b00e73a9241b4d1b0c802c2eb0e6159c0cd48e007b97b9d3963tests/golden/M11-04/blender-eevee-reference.png:f5c22636a232bcbb0ed0f772418cb12fced18ff72f4999804197e42caa61480atests/golden/M11-04/manifest.json:e9551f86f0b9704d7be35c03f07321bec5d2481ffee4208ae766156d9c9a0135web/package.json:38ba6a722a2e0bc2c91d6edbd2b7df5e3609342e3b7ef2ec9646b9c6ce0d25a6
Rollback
Remove the M11-04 protocol, reference fixture/golden, generator/checker, unit/E2E specs and package command; restore M11 to 3/14 and remove the bounded reference slice from N-019. Keep M11-01 through M11-03 resource and lighting behavior unchanged.