Advance M8-M11 parity workflows
This commit is contained in:
55
docs/status/M11-03.md
Normal file
55
docs/status/M11-03.md
Normal file
@@ -0,0 +1,55 @@
|
||||
# M11-03 Status
|
||||
|
||||
status: done
|
||||
task: Explicit Three WebGL2 and WebGPU light, shadow-map and texture budgets
|
||||
updated: 2026-08-16 America/New_York
|
||||
|
||||
## Scope
|
||||
|
||||
Schema 1 `PBRRenderBudget` freezes separate `THREE_WEBGL2` and `THREE_WEBGPU`
|
||||
product ceilings. WebGL2 reserves two built-in lights and one built-in shadow map
|
||||
inside totals of 16 lights and four 1024-square shadow maps. The WebGPU contract uses
|
||||
64 lights and eight 2048-square maps. Runtime device limits may only lower these
|
||||
ceilings.
|
||||
|
||||
The shared planner deterministically retains light nodes in SceneIR order, retains a
|
||||
bounded shadow-capable prefix and reports every dropped identity with stable
|
||||
`GPU_LIGHT_BUDGET_EXCEEDED`/`GPU_SHADOW_BUDGET_EXCEEDED` issues. Main-thread and
|
||||
Offscreen production viewports publish the same report on the canvas.
|
||||
|
||||
Texture planning covers asset count, maximum dimension, aggregate compressed payload
|
||||
and decoded RGBA GPU bytes before hash/decode/allocation. An over-budget batch leaves
|
||||
the previous texture set alive. This task defines the WebGPU budget contract but does
|
||||
not claim that the still-unbundled Three WebGPU renderer is available.
|
||||
|
||||
## Evidence
|
||||
|
||||
- `WEB_TEST_PORT=5548 npm --prefix web run test:render-resource-budget`: unit 3/3 and
|
||||
Chromium 3/3. Both production viewports requested 20 lights, rendered 14, dropped
|
||||
six, rendered three of 14 requested scene shadow maps and blocked 11; with reserved
|
||||
resources, the main Three scene contained exactly 16 lights and four shadow maps.
|
||||
- A 257-asset batch was rejected before decode in both viewports. A separate browser
|
||||
case first decoded a valid PNG, rejected a 257-asset follow-up (258 including the
|
||||
retained asset), and proved the original texture object/hash remained installed.
|
||||
- M11-02 field roundtrip remained 1/1. Real 4K (64 MiB decoded) and 8K (256 MiB
|
||||
decoded) texture performance cases passed; packed raster main/Offscreen passed 2/2.
|
||||
- Full unit was 159/159. Typecheck, lint, production build (75 modules), local runtime
|
||||
dependency checks and `git diff --check` passed.
|
||||
|
||||
## Implementation Hashes
|
||||
|
||||
- Budget protocol: `d7784690358e38b71c6ad3ccc5baf82869d897714d5257f219bbd00dc7e7b0f7`
|
||||
- PBR adapter: `934874434afa6778eaf783c78650ad221a428352741f3ff7173cb3c17a0c3c14`
|
||||
- Texture store: `0f18f3bcf04c5c99175d4cac8bbf1bc028fc54d635701fb6a92791e06c335fb6`
|
||||
- Main viewport: `dcb502ca892fd5431cbf1a13823aec5d83a2aa0a1b40487cb66fa630c6e461b3`
|
||||
- Offscreen Worker: `c95bce10f0bd73591f002c21415bfbc6f709ecbe61e97a3b5b05bcec2b0e0bef`
|
||||
- Unit: `4bde90788bbf9a94317d83bd398acd321bbcf4e53e26bf40165a889bacff03a2`
|
||||
- Chromium spec: `90834dfff09e61a2d32732d3a8f0db4b9c71414ac4991412d93d322119ef2de7`
|
||||
- Golden: `c312bf5ed8415ad51e5cccb3a2653f65cd9fee46488be2f860e6a5a8d5a7901d`
|
||||
- Package: `c718983c3f3a552f4c68d9390376777e45a3f23e6999afd5cb4ddc786a12a278`
|
||||
|
||||
## Rollback
|
||||
|
||||
Remove the render-budget protocol, planner integration, canvas reports, unit/E2E/
|
||||
golden/package command and this status file; restore the former fixed 1024 shadow
|
||||
configuration and per-asset-only texture checks, then restore M11 to 2/14.
|
||||
Reference in New Issue
Block a user