diff --git a/biome.json b/biome.json index 619e6fc5b1..951e076bb4 100644 --- a/biome.json +++ b/biome.json @@ -43,6 +43,7 @@ "examples/csg-doorway/public/**", "docs/benchmark/sweeps/**", "docs/benchmark/rounds/**", + "docs/benchmark/prd345/shooter-causes1/**", "docs/verification/prd-357-c4-duplicate-inventory.json", "docs/verification/prd-357-c4-duplicate-inventory-before.json", "docs/verification/visuals/**", diff --git a/docs/PRDs/rendering/PRD-345-a-backlit-subject-is-not-a-hole-in-the-sky.md b/docs/PRDs/rendering/PRD-345-a-backlit-subject-is-not-a-hole-in-the-sky.md index c3ba7b4e6e..0456308169 100644 --- a/docs/PRDs/rendering/PRD-345-a-backlit-subject-is-not-a-hole-in-the-sky.md +++ b/docs/PRDs/rendering/PRD-345-a-backlit-subject-is-not-a-hole-in-the-sky.md @@ -4,7 +4,7 @@ prd_contract: v1 # PRD-345 — a backlit subject is not a hole in the sky -**Status:** PARTIAL — generated material defaults integrated across conventional templates; twelve final matched web desktop pairs are palette-stable, including corrected racing. All-template gameplay/full-root/native appearance and rain admission remain open. Originally filed 2026-09-03, measured at `43d03e6a`. Batch: +**Status:** PARTIAL — generated material defaults integrated across conventional templates; twelve final matched web desktop pairs are palette-stable, including corrected racing. A controller-owned shared render graph removes the shooter's per-material-graph performance regression in the isolated causal study (`docs/benchmark/prd345/shooter-causes1/`); integrated gameplay/performance re-qualification, all-template/full-root/native appearance and rain admission remain open. Originally filed 2026-09-03, measured at `43d03e6a`. Batch: [docs/PRDs/AAA-visuals](aaa-visuals-notes.md). **Ships as generated user source, not as a package** — it decides how things look, and rule 1(b) vetoes 1(a) at any size. Source studied: [TheLongSilence](https://github.com/achimala/TheLongSilence) `src/gfx/greeble.js:37`, the @@ -97,12 +97,18 @@ P1, PRD-345. The workbook remains unchanged. ### Phase 2 — admit measured generated defaults - [ ] Apply only qualified conventions to the actual starter/material source and all required templates, preserving per-template appearance, low/mobile/software fallbacks and named overrides. proof: matched per-template screenshots and actual frame/startup cost + - 2026-10-04: the twelve material templates now build **one controller-owned render graph** (`src/render/backlightControls.ts` owns `validateControls`/`resolveKey`; `backlightMaterial.ts` caches one graph per controls object in a `WeakMap` so every converted material references the same graph) instead of a per-material graph. The isolated 21-launch causal study at the unchanged 1920×1080 / 33 ms limit measured per-material current 46.93 ms (0/6 pass) against shared graph 30.43 ms (3/3 pass), with copy-only (29.37 ms) and material-emissive-only (28.90 ms) controls also passing and runtime-zero/compiled-rim-only controls failing. Evidence: `docs/benchmark/prd345/shooter-causes1/` (raw reports, source identities, PNG hashes). Integrated gameplay/performance re-qualification, the snow threshold and native remain open, so this box stays open. - [x] Add the concise convention/override rows to generated instructions with mirrors kept in sync. proof: all thirteen template rows, explicit rain exception, primary-docs/instruction-budget seventeen tests and scaffold/doc eighty-three tests pass; unchanged instruction caps +2026-10-05 PR #440 merged-source checkpoint (`develop` 45565868): independent review identified a second-camera layer error, reproduced by a regression test in the shared key callbacks. The callbacks now pass actual `NodeFrame.camera` to key resolution in all twelve material templates and the matching fixture. The existing test failed before the fix and the camera/matrix/lifecycle suite passes 31/31; merged scaffold/compiler contracts pass 101/101 with all thirteen hashes measured through the real generator. The ordinary JS/DTS build passes. Fresh serial hardware NVIDIA Turing WebGPU difficult-lighting captures pass the unchanged decoded-PNG qualifier: enabled edge/body p99 52/2 versus zero-rim 7/0; fill-black fails only the two intended tone assertions, and omitted reporting fails the marker verifier. Actual camera world/inverse/projection matrices are now recorded. Local evidence is retained at `artifacts/pr440-acceptance/`; images remain unpublished pending the user's sharing decision. Failed startup wrappers and one unobserved black-fill launch remain retained beside its observed retry. This verifies the corrected graph's isolated controls; integrated template gameplay/performance, repeated startup and native admission remain open. + +2026-10-05 integrated checkpoint: all six fresh unchanged 33 ms runs are **RED**: shooter p95 112.9/144.5/88.9 ms, snow 59.8/48.6/51.8 ms; one shooter also fails minimum FPS. Host/resource and source differences prevent code-causality attribution. Typecheck/lint/docs/budgets and 35 latest-base CPU contracts pass. Full root/all-template/startup/native qualification remains open. See [merged-source acceptance and retained report seals](../../verification/prd345/pr440-acceptance-2026-10-05.md). No further timing is admitted until a comparable window is available. + ### Phase 3 — clean starter and platform validation - [ ] Verify generated clean starters/simple scenes and template visual gates including dark environment/no-sun and backlit character controls. proof: `pnpm test:templates`, tone crops and red-green captures - [ ] Complete required root and native qualification without claiming unexecuted targets. proof: `pnpm typecheck && pnpm lint && pnpm test` and targeted native fixture + - 2026-10-04 interim, open: typecheck and lint pass. `pnpm test` stops in runtime-native (21 reds, native host binaries not built here). Root vitest 8007 pass, 4 red under load 35-50: template typecheck passes in isolation, `generated-shooter-input.spec.ts` red twice and not yet attributed. ## Qualification design @@ -331,7 +337,7 @@ source-first architecture requires an explicit coherent policy change before pac via `assert.tone`, that `p1` and `p99` remain separated — a scene lit only by the fill still has range. *Red-green:* set the analytic fill to black; the range assertion goes red. -- [ ] **Every template has both, and says so.** `scripts/__tests__/primary-docs.spec.ts` and the proof: `primary-docs and generated convention rows` +- [x] **Every template has both, and says so.** `scripts/__tests__/primary-docs.spec.ts` and the proof: `primary-docs and generated convention rows; 2026-10-04 primary-docs.spec.ts + instruction-budget.spec.ts 17/17 pass, spec asserts rimGain and fillGain in all 13 template AGENTS.md (rain included, custom shader exception stated)` templates' own gate assert each template's `AGENTS.md` names both conventions and both override names. - [ ] **The templates gate is green on the templates that currently pass it.** Note the known red lane: proof: `complete template gate with explicit lane outcomes` diff --git a/docs/benchmark/prd345/shooter-causes1/README.md b/docs/benchmark/prd345/shooter-causes1/README.md new file mode 100644 index 0000000000..d5598e0859 --- /dev/null +++ b/docs/benchmark/prd345/shooter-causes1/README.md @@ -0,0 +1,11 @@ +Shooter causal diagnostics, frozen before production integration + +The exact 1920×1080 performance scenario retained its 33 ms limit. Three balanced rounds bracketed five controls with the current source, producing 21 fresh launches: six current controls and three launches per other arm. All raw reports are retained as deterministic gzip files; manifest.json records original report and all 42 original PNG hashes. Twelve representative full PNGs are copied unchanged. contact.png scales selected originals to 50% for inspection. No original evidence was deleted. + +Mean frame-time p95: current 46.93 ms (0/6 pass), runtime-zero 51.63 ms (0/3), copy-only 29.37 ms (3/3), material-emissive-only 28.90 ms (3/3), compiled-rim-only 45.87 ms (0/3), shared full graph 30.43 ms (3/3). summary.json records every result, sample count and variance; the 62.7 ms runtime-zero sample is retained. Lower-cost diagnostic arms omit terms and are not default qualification. + +The fixed outer shared lease used /tmp/threenative-playtest-capture, holder PID 2521870. Parent TMPDIR was unset; child temporary data stayed on durable storage with its normal private lease. No own builds ran during timing. Noncooperating external host activity remains uncontrolled. This comparison used the same frozen installed runner for all arms; the later root runner signal repair has a different identity. + +Independent inspection of all three contact pairs and the first full images found consistent facade palette, window and doorway materials, gun/body shading and shadows. HUD/minimap presentation varies. Camera helper source is byte-identical, but the unchanged performance scenario requests player observations and does not establish exact runtime camera-matrix equality. These images support a coarse appearance check, not complete material/lifecycle qualification. + +Shared graph clears the unchanged cost limit in all three launches; fixed-pose causal negatives, multi-material fidelity, live-key/multi-camera behavior, disposal/recycle and repeated startup p95 still require postintegration qualification. The isolated experimental native lane does not admit production native defaults. diff --git a/docs/benchmark/prd345/shooter-causes1/built-source-proof.json b/docs/benchmark/prd345/shooter-causes1/built-source-proof.json new file mode 100644 index 0000000000..74b46ff914 --- /dev/null +++ b/docs/benchmark/prd345/shooter-causes1/built-source-proof.json @@ -0,0 +1,699 @@ +[ + { + "arm": "current", + "source": { + "src/entities/Breakables.ts": "ee61d473c4f78fdc913c11131ffcabd067b7cb3af03e9cd4cbc344c95f96695d", + "src/entities/Enemy.ts": "ddee4661a9bc88f90c1de6b4d12d3851267cbfc418d751fed443fd61e6677c0b", + "src/entities/FpsPlayer.ts": "dc8956e797021cf3006f1b85ccb6cb46799279a745125316f2a0b94bc4f42230", + "src/entities/Rifle.ts": "186a056a26f8b47afbf44f684679d145d2b025e63ad335592865619d0e5a9dbc", + "src/entities/Target.ts": "3113abec565c028645215f19a70efb127c164a52a222e281fd5e7ded6dad4fed", + "src/entities/TouchControls.ts": "6db4b64c7c8c02825ab4026ecde7fe840fa26d16e5eec9c9f4fc81e1d8061c53", + "src/game.ts": "a2ccbada7bf5dc6d02774fcf1271da299ecbda922cf045701e4fe2eba4a6cc7b", + "src/main.ts": "66564d9e54a4e71aa19adc08ebc4db7d49ad77b1b24c8e7295caaad20055d994", + "src/postPhysics.ts": "45a948952bf7693b1db4f148f9194da11bfc4faeb64c7555a51eb9ac100c034a", + "src/render/backlightMaterial.ts": "149652e27c6d6ede66f110a28c7d97b458eeb9d5770b7fddec8ae6533d960c67", + "src/render/camera.ts": "e547a95355a626614ed8312ce5e312f810ab4f67aa1b963a77c0b74ffe68c6b4", + "src/render/decals.ts": "ed399978921abbfc0fdbc881e317ae67e58391af486ecb58a12f8e6f71eaf826", + "src/render/environmentContribution.ts": "25a84b7732d84b7d8bf61b6c3c1a7802fa6601d024ded36a1b31d50e534d1f5a", + "src/render/environmentRadiance.ts": "dd142d5fbf7d1a9a285db02f5cc0d340c6d5b79d3c4bd295eda4220879c0ab2f", + "src/render/environmentSampleCache.ts": "d82b431cc2e65cdc6e108afa73bf32b8b70fe97ad5177e0b6c5f7d14ac7274c6", + "src/render/environmentSampling.ts": "778619877e04bd284847443fb9d7a86e92cc31565978f29dbc09be9d70ddaa6e", + "src/render/environmentSnapshot.ts": "f0e1791a51ccc8b336a5798d0c8d1f2bce02891e8b82d4a408c7b6080da4ee78", + "src/render/facade.ts": "ef650c3239e57d755f18daaea19585bdf0c3bbe49c7367e1360d69da6a0c3e56", + "src/render/gunfx.ts": "7f98780a2a351741c78cce63804ea032064d1395340050d69108207ab98faf30", + "src/render/lighting.ts": "d384fa644e003792ed509ddc4c6a9fee9bf6f380ed12909b3cf9f89c8d84a3f0", + "src/render/loading.ts": "f16feebdcc10bc86234dad70ac3fd781145a00e464896c820f512e8f861ca194", + "src/render/materialAssignments.ts": "fc7ba25b101a5fd520253b1fc5f5aa1d696666c968137798db4880ef7ef58a56", + "src/render/materialLighting.ts": "29f1f60a3953a39d907aad5770d2d5d0a3540bd3ab77a81685d51f1f90ef8c34", + "src/render/materials.ts": "a004080abac188e0e66ecc43909b54510fefa9657e0183d8fbefbd9bac9a8c9a", + "src/render/occlusion.ts": "3d88fb8009c4df4fe43e16fcd46b707376de08d2ca0baabe7beadfc4c509906d", + "src/render/palette.ts": "721b03fae83bd6cabd7e6fe3dc456447957a545d6a2c9d74d9ef9fd9c3534d05", + "src/render/palm.ts": "93ceae977d3ea397fd021313843a42c04b78e0afd78d4c7bc74cea05164d32c7", + "src/render/pooled-billboards.ts": "d1c464831c1fd01aa84ffa6df7fbbc6be4e79f531bc3298ae4789b7b106ad8d6", + "src/render/postprocessing.ts": "8f936d1f491017dca11395b152975ca37436fdca87aec7065d1184baa6497114", + "src/render/quality.ts": "e1838f64933721a9296583c4f989f231a69487aa5c4d4069309ed2c7ed9e1e64", + "src/render/scale.ts": "06d35ea9a15dbb0ca54255127604269e3ce486ec003ff9ac0794cf5057f0156d", + "src/render/shapes.ts": "57cc819b78b2a60dfa179c96f2d687e567739976dae77ab1b901d4ff26fa2449", + "src/render/sky.ts": "72cd7aa1f69dec93ee28d90cb9db7456d21e9a609bbd56404fae7e0361930c22", + "src/render/town-schematic.ts": "a34724a0fa2ed6b68db6341bacde10ed7ac1adfdd08cf9a9e548a27fe1388aa5", + "src/render/town.ts": "995bf31adc90b71db423dc0dc6b6a29c8b8953d374a2e293eb2778447b51969a", + "src/render/townMaterials.ts": "f9c6f139af337816f7eb1867d57e50dd5f6083378a5329fcb5ea12cb672a7c72", + "src/render/vehicles.ts": "6825d96f5b3fc0776ca7ebed933f41a61d7bfeb7e1cbdc69f7f835b227877576", + "src/render/worldEnvironment.ts": "11017185cfa345fffe309ed60e7b2f7dc9bc8948508ab22e6b895fd854926a57", + "src/scenes/Play.ts": "da5321f476fac50d0dd6c5f0111976827d8bc830b6f50f1dbcaddeef4a1bca0a", + "src/state.ts": "fe3aa819af214f8e97a703f4bad84b35b948c344920a1fe3e63864969378c3dd", + "src/style.css": "b7248576b175b133423f5152686da27467f42f4e170a74228c7a3a1425992bae", + "src/surfaces.ts": "5711274cd2269baeb3b7053894946e306d091f516517b1d26de7f74c36b7e747", + "src/ui/App.tsx": "06b349cffb954556236dcdccc3140bb54186ef8f7711617daa91f29bf9935c89", + "src/ui/Crosshair.tsx": "02c5d8e185c0a9a5a64d4e91fa90a53c166201b05d95ac3a595c1cf5da8703bb", + "src/ui/GameUi.tsx": "2cbcdc8383803eb219670b7d3d29500bcff37c307f3fefbf4f2f75bfea8cf1a0", + "src/ui/Hud.tsx": "b6a84cd0811b0b55040a5026c23bd8009ac87be2bfbc29f7b3491ae8ccafe52f", + "src/ui/Minimap.tsx": "6af9ef0ae1510ef0e9a0b923186430f92e1eeff5de89af87888d28ac0aca0df7", + "src/ui/TouchOverlay.tsx": "1857d989e2c51d422902a87ae1cfbea1da5d8c7237604d6155790edc9497f944", + "src/ui/main.tsx": "bfad2dbf1461f09e160f64ce7789cab7777396995b326abf591a2ae6acfe7b69" + }, + "dist": { + "dist/assets/DRACOLoader-DcgK70pb.js": "81fd3473c9d519fbf90aeffb90ad206788fdfe17f12d9895513b5d0f63d4e8ea", + "dist/assets/DRACOLoader-DcgK70pb.js.br": "3995d3dedb7193f1892c2be5f173585804f742968c8400bfa18def5b24fbb97d", + "dist/assets/DRACOLoader-DcgK70pb.js.gz": "c5e9b825a6f476f4b09b4c2987a23333b4c157b71143171abc5a5f639c483eae", + "dist/assets/GLTFLoader-B7vUkNTZ.js": "5a1f3c22bd885af7f2675fbf25d9f5cdbd15581cec59862846569ed914e920bd", + "dist/assets/GLTFLoader-B7vUkNTZ.js.br": "212913594a6ee8d3588b1d4732ca989e280c2cafea84d1d8d7da67d4482547c3", + "dist/assets/GLTFLoader-B7vUkNTZ.js.gz": "913fc3b889f2276336bdaaf6e15ff2fbef0ad087166052cfec0daf1071aea50e", + "dist/assets/KTX2Loader-BKA9FnF4.js": "df2895f58f9d676eb73af45807369021f3f2393d08aa18494f223534bffa0933", + "dist/assets/KTX2Loader-BKA9FnF4.js.br": "0449c167c34be81fc816c324e2ec827507d5b68d8fadbb34c96041b6aa4e8ffb", + "dist/assets/KTX2Loader-BKA9FnF4.js.gz": "e44e8567e6b3f365b416091fdb73da05ecf67489a25959af8dce71e2bae3e9a0", + "dist/assets/index-C7HJRl70.css": "b3845917a30bd9b0ce39a0a18508a7687bb95746714de89e6c42f389bc42085e", + "dist/assets/index-C7HJRl70.css.br": "39b2ac847c8fc4f9ef6ecab3fedf1b880d429f0dfc9ec85b9e0a0c314a95a487", + "dist/assets/index-C7HJRl70.css.gz": "569f7372057006c23c3f5b9db83457565e9bff4e172a075f16c65850ab16d793", + "dist/assets/index-CWUrWKwR.js": "da15a1a8cb88c137e296b3d86830b049620602685080142ef4b031967fd45738", + "dist/assets/index-CWUrWKwR.js.br": "26fb180400f0b974fa3c24a91b252fd58bcb5c81e55ca3cf5fe695cb48c47a13", + "dist/assets/index-CWUrWKwR.js.gz": "f5c01d08694f5b6789c165792b6adea14d0eced6801bf101c3b02d1774282678", + "dist/assets/meshopt_decoder.module-DXTYc6wn.js": "6bf68170d437477fb3411dfb24339df33257d69a4322c3907e14af33cff083c7", + "dist/assets/meshopt_decoder.module-DXTYc6wn.js.br": "b266a2f59fc0d4b0bc89707fc2c9b9fd2941d4ef42c76301488299de0f374b46", + "dist/assets/meshopt_decoder.module-DXTYc6wn.js.gz": "68e3867e131e5df061123b46e8f4eee3e798def0c5b87adc7d0d3858a3caeaf1", + "dist/assets/three.core-C4c1cNCm.js": "a95cddd48670b89b53e1dd316196cb3a0ce511c832e27a1144ea081ae84f8fb1", + "dist/assets/three.core-C4c1cNCm.js.br": "d4dce68aaa0db2726e3efbd99d7275c29c24a873ed0dee770e68de9ba03970d5", + "dist/assets/three.core-C4c1cNCm.js.gz": "327140382a7bc8b37a33786bc5ae814b383996503893a74d0b4939788e621117", + "dist/assets/three.module-C3lD2tUQ.js": "456fca0dcc0c990e9946991e708cc0747fe9f65668598b7d13854674c870f3eb", + "dist/assets/three.module-C3lD2tUQ.js.br": "1ea4e9c50fedf69e49e0952456c143596b18e544779ac6e53136822430d01d10", + "dist/assets/three.module-C3lD2tUQ.js.gz": "cb56d50774feebdb95a8279c0bbc66cc94adcbe6b960e405e27e33bcfc1bd11e", + "dist/assets.manifest.json": "9b0d834ce5e610150ba9913d58e61f5e0621c3a478d8cf70b098536de3507d5a", + "dist/assets.manifest.json.br": "ee18c16e693f188fbdf2caa13906c1ed392140ebe6519ea2e618cc1545e1fbda", + "dist/assets.manifest.json.gz": "9b66eb38e01e9010139b8f56829e18ee7de689362c54982a6aabe01a1b8a9313", + "dist/bake.receipt.json": "9f20a8cf476f00fb24fa5f71aeb08591dd7ed0763bbaadc6f8823a2f2a53febd", + "dist/bake.receipt.json.br": "2584947e58a485fc30bdf3f71fe87ece72c22fdf880caa841a0acc0f49fe28f6", + "dist/bake.receipt.json.gz": "27a197b2d5c15c021ed401adc0c67c5067327cfe79e60e7031ea929c541b20dc", + "dist/basis/basis_transcoder.js": "8478b5b6d6b74e7d3082b89f6417321d8d1dc0307f2b30d4484bb11b441696a1", + "dist/basis/basis_transcoder.js.br": "87efa81dbc0147b1ce0ec8539d5dafd477ad1faf77dec5dfac3afec4adcc722b", + "dist/basis/basis_transcoder.js.gz": "f7226c0b679e03d17995681f38848ca1ecc83f8800699b5cd8f715b33b778dd9", + "dist/basis/basis_transcoder.wasm": "6cf17dc889352c42e9acf8897107978d127005fe3386c36a0e3845e27967630a", + "dist/basis/basis_transcoder.wasm.br": "0f04439c0cbadc9473cb2c113781ee5f38f94a470b4b35b55d84549ce3eb506a", + "dist/basis/basis_transcoder.wasm.gz": "205391fc77f8d94df7aa2b57084fefc490e6abe39c863a26388f8c43d948cb6c", + "dist/favicon.svg": "49f166c4b2b4796be291a782b9c4c567feb11a718b79c39e6df164655cf38f25", + "dist/icon.png": "e6284520e340124d9300889add523251d93705457e7cd8c2d6e05aebd7ed04b7", + "dist/index.html": "746aee2db1eb68d1daf227a3094aa07ae1df37eac48e3843f899913ab5d39fbb", + "dist/manifest.webmanifest": "068a005271fc30b281006bd4d9e676d03789e1a71be3d84b5ee6936d7cb06f0b", + "dist/mannequin-combat.fe514710.glb": "a79378f9862108fca6a977801ce9db16c1f6fe907794d5267b2dc65f09a45823", + "dist/player-viewmodel.dc09c545.glb": "f76a73edc8341d1d5c41c3af51920fbe30494933d87758d7e4d8d83dee7d3556", + "dist/shared/images/025bfeeed32055f1.none.png": "b3b0f7376bbae7bdb56fc22af27e80afbf2e394afecc9610fac3b56d76a816d1", + "dist/shared/images/180a4672d2fb7cf6.etc1s.ktx2": "c26af0b2734328c4758f2e0bbd3de408fbc9d21acbac129cbcdf4d23c3323bd8", + "dist/shared/images/1b211cd5aaf69751.none.jpg": "4ab9c716ed2df301f9ac36e6dfc66b7f3c7e05668fe8bad716be651fc8198fe8", + "dist/shared/images/2bcf108dcd467775.etc1s.ktx2": "e3191efc2fc7d9cd2629645a1d61d9815f58dd7aca96d08214fc577b0b8e140d", + "dist/shared/images/33d4b714973d9063.none.jpg": "d1cabac983deeb2273e513281a1b39751fa29bb68562c3d0367d7b59aeff37f5", + "dist/shared/images/3b14e1c9099ee6f1.none.jpg": "989488b3e0e3a294fc2ef809c6551f8294314e94d42e975ad242d0055264f865", + "dist/shared/images/403ff0ad912b483b.none.jpg": "605f7adee67889d62d68fc0d09942da5cf773177646cc963c4c8fb3de030fbbb", + "dist/shared/images/44ecaa5be101b00b.etc1s.ktx2": "8a310bb9a36f8920b0a86ee297385b09e3c09d772664415c31396c442e3bc96e", + "dist/shared/images/68264455dbaa31ef.none.jpg": "46c2fd794b5a270525d6862b85ac562704d32eb8a58f6a05f2550aba89a4e7ba", + "dist/shared/images/7a2778e86d1c0b88.etc1s.ktx2": "8dcea39039f11f4b5e3da7d726ca342fcd0884644d2716fcd11103250dab686c", + "dist/shared/images/931bd58f1fa4ee01.none.jpg": "ff2ff99151e6a790c2b967631e698ca24f5fa3f604492199bae8771f797ba7b1", + "dist/shared/images/94923e8655cfb48d.none.jpg": "cbf196a0752156a58451f2478be9844c830b7a04375b3267577b8294628a0056", + "dist/shared/images/9cca6ccabb26e170.none.jpg": "30c7cbab0defdbfba13e65b3c47bd92cd23553959edc39c7a845394f048698d5", + "dist/shared/images/a5e59c8e78230cf0.etc1s.ktx2": "4fa7b70fcf2a6a907bc786fc01d64cfaf2bfaae7d158c2cc122a56f11f4e30f6", + "dist/shared/images/c6076cf549fcdfbe.etc1s.ktx2": "bffd3b499654ded356dfd4d40334bdd462590b46cd9cc0628c6b01f45946791b", + "dist/shared/images/d632eac4b35a44ad.none.jpg": "da481ac6220587e8d306b6bce5c062015e5923c1e5f9768ee52f730398217f1f", + "dist/sky.0913654f.jpg": "c1e616ec08d7132f09dd5ce46b780d63934c0df5043ab81d7eeaf16f309c9cc5" + }, + "scenario": "d48fb11263343891eae53d1da926c350397578f29637e079cebd3f4e0aaad552" + }, + { + "arm": "runtime-zero", + "source": { + "src/entities/Breakables.ts": "ee61d473c4f78fdc913c11131ffcabd067b7cb3af03e9cd4cbc344c95f96695d", + "src/entities/Enemy.ts": "ddee4661a9bc88f90c1de6b4d12d3851267cbfc418d751fed443fd61e6677c0b", + "src/entities/FpsPlayer.ts": "dc8956e797021cf3006f1b85ccb6cb46799279a745125316f2a0b94bc4f42230", + "src/entities/Rifle.ts": "186a056a26f8b47afbf44f684679d145d2b025e63ad335592865619d0e5a9dbc", + "src/entities/Target.ts": "3113abec565c028645215f19a70efb127c164a52a222e281fd5e7ded6dad4fed", + "src/entities/TouchControls.ts": "6db4b64c7c8c02825ab4026ecde7fe840fa26d16e5eec9c9f4fc81e1d8061c53", + "src/game.ts": "a2ccbada7bf5dc6d02774fcf1271da299ecbda922cf045701e4fe2eba4a6cc7b", + "src/main.ts": "66564d9e54a4e71aa19adc08ebc4db7d49ad77b1b24c8e7295caaad20055d994", + "src/postPhysics.ts": "45a948952bf7693b1db4f148f9194da11bfc4faeb64c7555a51eb9ac100c034a", + "src/render/backlightMaterial.ts": "366f1b28456aace8f9d096d74772166bc41b141c6ee2f94129b6d8d0d9a021f8", + "src/render/camera.ts": "e547a95355a626614ed8312ce5e312f810ab4f67aa1b963a77c0b74ffe68c6b4", + "src/render/decals.ts": "ed399978921abbfc0fdbc881e317ae67e58391af486ecb58a12f8e6f71eaf826", + "src/render/environmentContribution.ts": "25a84b7732d84b7d8bf61b6c3c1a7802fa6601d024ded36a1b31d50e534d1f5a", + "src/render/environmentRadiance.ts": "dd142d5fbf7d1a9a285db02f5cc0d340c6d5b79d3c4bd295eda4220879c0ab2f", + "src/render/environmentSampleCache.ts": "d82b431cc2e65cdc6e108afa73bf32b8b70fe97ad5177e0b6c5f7d14ac7274c6", + "src/render/environmentSampling.ts": "778619877e04bd284847443fb9d7a86e92cc31565978f29dbc09be9d70ddaa6e", + "src/render/environmentSnapshot.ts": "f0e1791a51ccc8b336a5798d0c8d1f2bce02891e8b82d4a408c7b6080da4ee78", + "src/render/facade.ts": "ef650c3239e57d755f18daaea19585bdf0c3bbe49c7367e1360d69da6a0c3e56", + "src/render/gunfx.ts": "7f98780a2a351741c78cce63804ea032064d1395340050d69108207ab98faf30", + "src/render/lighting.ts": "d384fa644e003792ed509ddc4c6a9fee9bf6f380ed12909b3cf9f89c8d84a3f0", + "src/render/loading.ts": "f16feebdcc10bc86234dad70ac3fd781145a00e464896c820f512e8f861ca194", + "src/render/materialAssignments.ts": "fc7ba25b101a5fd520253b1fc5f5aa1d696666c968137798db4880ef7ef58a56", + "src/render/materialLighting.ts": "29f1f60a3953a39d907aad5770d2d5d0a3540bd3ab77a81685d51f1f90ef8c34", + "src/render/materials.ts": "a004080abac188e0e66ecc43909b54510fefa9657e0183d8fbefbd9bac9a8c9a", + "src/render/occlusion.ts": "3d88fb8009c4df4fe43e16fcd46b707376de08d2ca0baabe7beadfc4c509906d", + "src/render/palette.ts": "721b03fae83bd6cabd7e6fe3dc456447957a545d6a2c9d74d9ef9fd9c3534d05", + "src/render/palm.ts": "93ceae977d3ea397fd021313843a42c04b78e0afd78d4c7bc74cea05164d32c7", + "src/render/pooled-billboards.ts": "d1c464831c1fd01aa84ffa6df7fbbc6be4e79f531bc3298ae4789b7b106ad8d6", + "src/render/postprocessing.ts": "8f936d1f491017dca11395b152975ca37436fdca87aec7065d1184baa6497114", + "src/render/quality.ts": "e1838f64933721a9296583c4f989f231a69487aa5c4d4069309ed2c7ed9e1e64", + "src/render/scale.ts": "06d35ea9a15dbb0ca54255127604269e3ce486ec003ff9ac0794cf5057f0156d", + "src/render/shapes.ts": "57cc819b78b2a60dfa179c96f2d687e567739976dae77ab1b901d4ff26fa2449", + "src/render/sky.ts": "72cd7aa1f69dec93ee28d90cb9db7456d21e9a609bbd56404fae7e0361930c22", + "src/render/town-schematic.ts": "a34724a0fa2ed6b68db6341bacde10ed7ac1adfdd08cf9a9e548a27fe1388aa5", + "src/render/town.ts": "995bf31adc90b71db423dc0dc6b6a29c8b8953d374a2e293eb2778447b51969a", + "src/render/townMaterials.ts": "f9c6f139af337816f7eb1867d57e50dd5f6083378a5329fcb5ea12cb672a7c72", + "src/render/vehicles.ts": "6825d96f5b3fc0776ca7ebed933f41a61d7bfeb7e1cbdc69f7f835b227877576", + "src/render/worldEnvironment.ts": "11017185cfa345fffe309ed60e7b2f7dc9bc8948508ab22e6b895fd854926a57", + "src/scenes/Play.ts": "da5321f476fac50d0dd6c5f0111976827d8bc830b6f50f1dbcaddeef4a1bca0a", + "src/state.ts": "fe3aa819af214f8e97a703f4bad84b35b948c344920a1fe3e63864969378c3dd", + "src/style.css": "b7248576b175b133423f5152686da27467f42f4e170a74228c7a3a1425992bae", + "src/surfaces.ts": "5711274cd2269baeb3b7053894946e306d091f516517b1d26de7f74c36b7e747", + "src/ui/App.tsx": "06b349cffb954556236dcdccc3140bb54186ef8f7711617daa91f29bf9935c89", + "src/ui/Crosshair.tsx": "02c5d8e185c0a9a5a64d4e91fa90a53c166201b05d95ac3a595c1cf5da8703bb", + "src/ui/GameUi.tsx": "2cbcdc8383803eb219670b7d3d29500bcff37c307f3fefbf4f2f75bfea8cf1a0", + "src/ui/Hud.tsx": "b6a84cd0811b0b55040a5026c23bd8009ac87be2bfbc29f7b3491ae8ccafe52f", + "src/ui/Minimap.tsx": "6af9ef0ae1510ef0e9a0b923186430f92e1eeff5de89af87888d28ac0aca0df7", + "src/ui/TouchOverlay.tsx": "1857d989e2c51d422902a87ae1cfbea1da5d8c7237604d6155790edc9497f944", + "src/ui/main.tsx": "bfad2dbf1461f09e160f64ce7789cab7777396995b326abf591a2ae6acfe7b69" + }, + "dist": { + "dist/assets/DRACOLoader-DcgK70pb.js": "81fd3473c9d519fbf90aeffb90ad206788fdfe17f12d9895513b5d0f63d4e8ea", + "dist/assets/DRACOLoader-DcgK70pb.js.br": "3995d3dedb7193f1892c2be5f173585804f742968c8400bfa18def5b24fbb97d", + "dist/assets/DRACOLoader-DcgK70pb.js.gz": "c5e9b825a6f476f4b09b4c2987a23333b4c157b71143171abc5a5f639c483eae", + "dist/assets/GLTFLoader-Dnu1l-V2.js": "765607179908f8d86247f4d892635e59c10579a77f5700bc84d2455510e6bc93", + "dist/assets/GLTFLoader-Dnu1l-V2.js.br": "4949ccb7f6d5fabd8a483fc8e31256f87e340e6624170e9ea13e143b9a1612b8", + "dist/assets/GLTFLoader-Dnu1l-V2.js.gz": "691fff976b877927e0b3cba427cbc049152e6521609a1e77872fa63e748d6c25", + "dist/assets/KTX2Loader-BKA9FnF4.js": "df2895f58f9d676eb73af45807369021f3f2393d08aa18494f223534bffa0933", + "dist/assets/KTX2Loader-BKA9FnF4.js.br": "0449c167c34be81fc816c324e2ec827507d5b68d8fadbb34c96041b6aa4e8ffb", + "dist/assets/KTX2Loader-BKA9FnF4.js.gz": "e44e8567e6b3f365b416091fdb73da05ecf67489a25959af8dce71e2bae3e9a0", + "dist/assets/index-C7HJRl70.css": "b3845917a30bd9b0ce39a0a18508a7687bb95746714de89e6c42f389bc42085e", + "dist/assets/index-C7HJRl70.css.br": "39b2ac847c8fc4f9ef6ecab3fedf1b880d429f0dfc9ec85b9e0a0c314a95a487", + "dist/assets/index-C7HJRl70.css.gz": "569f7372057006c23c3f5b9db83457565e9bff4e172a075f16c65850ab16d793", + "dist/assets/index-CWVJ2ZaW.js": "4442b5da4d7f2f4fb65de87d487b60a26ef0011e14af465603261e137fd30d1f", + "dist/assets/index-CWVJ2ZaW.js.br": "ee5fa0e83bc3bf5b255f3e82e08a926301efc605154bfc215e509356ce3627ef", + "dist/assets/index-CWVJ2ZaW.js.gz": "d6d40dd4836af1fa164a09d3a641a3661481375e19c581dff8d105dae85ad4b0", + "dist/assets/meshopt_decoder.module-DXTYc6wn.js": "6bf68170d437477fb3411dfb24339df33257d69a4322c3907e14af33cff083c7", + "dist/assets/meshopt_decoder.module-DXTYc6wn.js.br": "b266a2f59fc0d4b0bc89707fc2c9b9fd2941d4ef42c76301488299de0f374b46", + "dist/assets/meshopt_decoder.module-DXTYc6wn.js.gz": "68e3867e131e5df061123b46e8f4eee3e798def0c5b87adc7d0d3858a3caeaf1", + "dist/assets/three.core-C4c1cNCm.js": "a95cddd48670b89b53e1dd316196cb3a0ce511c832e27a1144ea081ae84f8fb1", + "dist/assets/three.core-C4c1cNCm.js.br": "d4dce68aaa0db2726e3efbd99d7275c29c24a873ed0dee770e68de9ba03970d5", + "dist/assets/three.core-C4c1cNCm.js.gz": "327140382a7bc8b37a33786bc5ae814b383996503893a74d0b4939788e621117", + "dist/assets/three.module-C3lD2tUQ.js": "456fca0dcc0c990e9946991e708cc0747fe9f65668598b7d13854674c870f3eb", + "dist/assets/three.module-C3lD2tUQ.js.br": "1ea4e9c50fedf69e49e0952456c143596b18e544779ac6e53136822430d01d10", + "dist/assets/three.module-C3lD2tUQ.js.gz": "cb56d50774feebdb95a8279c0bbc66cc94adcbe6b960e405e27e33bcfc1bd11e", + "dist/assets.manifest.json": "9b0d834ce5e610150ba9913d58e61f5e0621c3a478d8cf70b098536de3507d5a", + "dist/assets.manifest.json.br": "ee18c16e693f188fbdf2caa13906c1ed392140ebe6519ea2e618cc1545e1fbda", + "dist/assets.manifest.json.gz": "9b66eb38e01e9010139b8f56829e18ee7de689362c54982a6aabe01a1b8a9313", + "dist/bake.receipt.json": "9f20a8cf476f00fb24fa5f71aeb08591dd7ed0763bbaadc6f8823a2f2a53febd", + "dist/bake.receipt.json.br": "2584947e58a485fc30bdf3f71fe87ece72c22fdf880caa841a0acc0f49fe28f6", + "dist/bake.receipt.json.gz": "27a197b2d5c15c021ed401adc0c67c5067327cfe79e60e7031ea929c541b20dc", + "dist/basis/basis_transcoder.js": "8478b5b6d6b74e7d3082b89f6417321d8d1dc0307f2b30d4484bb11b441696a1", + "dist/basis/basis_transcoder.js.br": "87efa81dbc0147b1ce0ec8539d5dafd477ad1faf77dec5dfac3afec4adcc722b", + "dist/basis/basis_transcoder.js.gz": "f7226c0b679e03d17995681f38848ca1ecc83f8800699b5cd8f715b33b778dd9", + "dist/basis/basis_transcoder.wasm": "6cf17dc889352c42e9acf8897107978d127005fe3386c36a0e3845e27967630a", + "dist/basis/basis_transcoder.wasm.br": "0f04439c0cbadc9473cb2c113781ee5f38f94a470b4b35b55d84549ce3eb506a", + "dist/basis/basis_transcoder.wasm.gz": "205391fc77f8d94df7aa2b57084fefc490e6abe39c863a26388f8c43d948cb6c", + "dist/favicon.svg": "49f166c4b2b4796be291a782b9c4c567feb11a718b79c39e6df164655cf38f25", + "dist/icon.png": "e6284520e340124d9300889add523251d93705457e7cd8c2d6e05aebd7ed04b7", + "dist/index.html": "6cca9f577785882c6fce91e640ffdf24635db8d4174cb9c608367f3add9c2824", + "dist/manifest.webmanifest": "068a005271fc30b281006bd4d9e676d03789e1a71be3d84b5ee6936d7cb06f0b", + "dist/mannequin-combat.fe514710.glb": "a79378f9862108fca6a977801ce9db16c1f6fe907794d5267b2dc65f09a45823", + "dist/player-viewmodel.dc09c545.glb": "f76a73edc8341d1d5c41c3af51920fbe30494933d87758d7e4d8d83dee7d3556", + "dist/shared/images/025bfeeed32055f1.none.png": "b3b0f7376bbae7bdb56fc22af27e80afbf2e394afecc9610fac3b56d76a816d1", + "dist/shared/images/180a4672d2fb7cf6.etc1s.ktx2": "c26af0b2734328c4758f2e0bbd3de408fbc9d21acbac129cbcdf4d23c3323bd8", + "dist/shared/images/1b211cd5aaf69751.none.jpg": "4ab9c716ed2df301f9ac36e6dfc66b7f3c7e05668fe8bad716be651fc8198fe8", + "dist/shared/images/2bcf108dcd467775.etc1s.ktx2": "e3191efc2fc7d9cd2629645a1d61d9815f58dd7aca96d08214fc577b0b8e140d", + "dist/shared/images/33d4b714973d9063.none.jpg": "d1cabac983deeb2273e513281a1b39751fa29bb68562c3d0367d7b59aeff37f5", + "dist/shared/images/3b14e1c9099ee6f1.none.jpg": "989488b3e0e3a294fc2ef809c6551f8294314e94d42e975ad242d0055264f865", + "dist/shared/images/403ff0ad912b483b.none.jpg": "605f7adee67889d62d68fc0d09942da5cf773177646cc963c4c8fb3de030fbbb", + "dist/shared/images/44ecaa5be101b00b.etc1s.ktx2": "8a310bb9a36f8920b0a86ee297385b09e3c09d772664415c31396c442e3bc96e", + "dist/shared/images/68264455dbaa31ef.none.jpg": "46c2fd794b5a270525d6862b85ac562704d32eb8a58f6a05f2550aba89a4e7ba", + "dist/shared/images/7a2778e86d1c0b88.etc1s.ktx2": "8dcea39039f11f4b5e3da7d726ca342fcd0884644d2716fcd11103250dab686c", + "dist/shared/images/931bd58f1fa4ee01.none.jpg": "ff2ff99151e6a790c2b967631e698ca24f5fa3f604492199bae8771f797ba7b1", + "dist/shared/images/94923e8655cfb48d.none.jpg": "cbf196a0752156a58451f2478be9844c830b7a04375b3267577b8294628a0056", + "dist/shared/images/9cca6ccabb26e170.none.jpg": "30c7cbab0defdbfba13e65b3c47bd92cd23553959edc39c7a845394f048698d5", + "dist/shared/images/a5e59c8e78230cf0.etc1s.ktx2": "4fa7b70fcf2a6a907bc786fc01d64cfaf2bfaae7d158c2cc122a56f11f4e30f6", + "dist/shared/images/c6076cf549fcdfbe.etc1s.ktx2": "bffd3b499654ded356dfd4d40334bdd462590b46cd9cc0628c6b01f45946791b", + "dist/shared/images/d632eac4b35a44ad.none.jpg": "da481ac6220587e8d306b6bce5c062015e5923c1e5f9768ee52f730398217f1f", + "dist/sky.0913654f.jpg": "c1e616ec08d7132f09dd5ce46b780d63934c0df5043ab81d7eeaf16f309c9cc5" + }, + "scenario": "d48fb11263343891eae53d1da926c350397578f29637e079cebd3f4e0aaad552" + }, + { + "arm": "copy-only", + "source": { + "src/entities/Breakables.ts": "ee61d473c4f78fdc913c11131ffcabd067b7cb3af03e9cd4cbc344c95f96695d", + "src/entities/Enemy.ts": "ddee4661a9bc88f90c1de6b4d12d3851267cbfc418d751fed443fd61e6677c0b", + "src/entities/FpsPlayer.ts": "dc8956e797021cf3006f1b85ccb6cb46799279a745125316f2a0b94bc4f42230", + "src/entities/Rifle.ts": "186a056a26f8b47afbf44f684679d145d2b025e63ad335592865619d0e5a9dbc", + "src/entities/Target.ts": "3113abec565c028645215f19a70efb127c164a52a222e281fd5e7ded6dad4fed", + "src/entities/TouchControls.ts": "6db4b64c7c8c02825ab4026ecde7fe840fa26d16e5eec9c9f4fc81e1d8061c53", + "src/game.ts": "a2ccbada7bf5dc6d02774fcf1271da299ecbda922cf045701e4fe2eba4a6cc7b", + "src/main.ts": "66564d9e54a4e71aa19adc08ebc4db7d49ad77b1b24c8e7295caaad20055d994", + "src/postPhysics.ts": "45a948952bf7693b1db4f148f9194da11bfc4faeb64c7555a51eb9ac100c034a", + "src/render/backlightMaterial.ts": "3397d1e3930200f30acc63788f8d2a7ee5649f48a4a77452a7b251a34a34fa13", + "src/render/camera.ts": "e547a95355a626614ed8312ce5e312f810ab4f67aa1b963a77c0b74ffe68c6b4", + "src/render/decals.ts": "ed399978921abbfc0fdbc881e317ae67e58391af486ecb58a12f8e6f71eaf826", + "src/render/environmentContribution.ts": "25a84b7732d84b7d8bf61b6c3c1a7802fa6601d024ded36a1b31d50e534d1f5a", + "src/render/environmentRadiance.ts": "dd142d5fbf7d1a9a285db02f5cc0d340c6d5b79d3c4bd295eda4220879c0ab2f", + "src/render/environmentSampleCache.ts": "d82b431cc2e65cdc6e108afa73bf32b8b70fe97ad5177e0b6c5f7d14ac7274c6", + "src/render/environmentSampling.ts": "778619877e04bd284847443fb9d7a86e92cc31565978f29dbc09be9d70ddaa6e", + "src/render/environmentSnapshot.ts": "f0e1791a51ccc8b336a5798d0c8d1f2bce02891e8b82d4a408c7b6080da4ee78", + "src/render/facade.ts": "ef650c3239e57d755f18daaea19585bdf0c3bbe49c7367e1360d69da6a0c3e56", + "src/render/gunfx.ts": "7f98780a2a351741c78cce63804ea032064d1395340050d69108207ab98faf30", + "src/render/lighting.ts": "d384fa644e003792ed509ddc4c6a9fee9bf6f380ed12909b3cf9f89c8d84a3f0", + "src/render/loading.ts": "f16feebdcc10bc86234dad70ac3fd781145a00e464896c820f512e8f861ca194", + "src/render/materialAssignments.ts": "fc7ba25b101a5fd520253b1fc5f5aa1d696666c968137798db4880ef7ef58a56", + "src/render/materialLighting.ts": "29f1f60a3953a39d907aad5770d2d5d0a3540bd3ab77a81685d51f1f90ef8c34", + "src/render/materials.ts": "a004080abac188e0e66ecc43909b54510fefa9657e0183d8fbefbd9bac9a8c9a", + "src/render/occlusion.ts": "3d88fb8009c4df4fe43e16fcd46b707376de08d2ca0baabe7beadfc4c509906d", + "src/render/palette.ts": "721b03fae83bd6cabd7e6fe3dc456447957a545d6a2c9d74d9ef9fd9c3534d05", + "src/render/palm.ts": "93ceae977d3ea397fd021313843a42c04b78e0afd78d4c7bc74cea05164d32c7", + "src/render/pooled-billboards.ts": "d1c464831c1fd01aa84ffa6df7fbbc6be4e79f531bc3298ae4789b7b106ad8d6", + "src/render/postprocessing.ts": "8f936d1f491017dca11395b152975ca37436fdca87aec7065d1184baa6497114", + "src/render/quality.ts": "e1838f64933721a9296583c4f989f231a69487aa5c4d4069309ed2c7ed9e1e64", + "src/render/scale.ts": "06d35ea9a15dbb0ca54255127604269e3ce486ec003ff9ac0794cf5057f0156d", + "src/render/shapes.ts": "57cc819b78b2a60dfa179c96f2d687e567739976dae77ab1b901d4ff26fa2449", + "src/render/sky.ts": "72cd7aa1f69dec93ee28d90cb9db7456d21e9a609bbd56404fae7e0361930c22", + "src/render/town-schematic.ts": "a34724a0fa2ed6b68db6341bacde10ed7ac1adfdd08cf9a9e548a27fe1388aa5", + "src/render/town.ts": "995bf31adc90b71db423dc0dc6b6a29c8b8953d374a2e293eb2778447b51969a", + "src/render/townMaterials.ts": "f9c6f139af337816f7eb1867d57e50dd5f6083378a5329fcb5ea12cb672a7c72", + "src/render/vehicles.ts": "6825d96f5b3fc0776ca7ebed933f41a61d7bfeb7e1cbdc69f7f835b227877576", + "src/render/worldEnvironment.ts": "11017185cfa345fffe309ed60e7b2f7dc9bc8948508ab22e6b895fd854926a57", + "src/scenes/Play.ts": "da5321f476fac50d0dd6c5f0111976827d8bc830b6f50f1dbcaddeef4a1bca0a", + "src/state.ts": "fe3aa819af214f8e97a703f4bad84b35b948c344920a1fe3e63864969378c3dd", + "src/style.css": "b7248576b175b133423f5152686da27467f42f4e170a74228c7a3a1425992bae", + "src/surfaces.ts": "5711274cd2269baeb3b7053894946e306d091f516517b1d26de7f74c36b7e747", + "src/ui/App.tsx": "06b349cffb954556236dcdccc3140bb54186ef8f7711617daa91f29bf9935c89", + "src/ui/Crosshair.tsx": "02c5d8e185c0a9a5a64d4e91fa90a53c166201b05d95ac3a595c1cf5da8703bb", + "src/ui/GameUi.tsx": "2cbcdc8383803eb219670b7d3d29500bcff37c307f3fefbf4f2f75bfea8cf1a0", + "src/ui/Hud.tsx": "b6a84cd0811b0b55040a5026c23bd8009ac87be2bfbc29f7b3491ae8ccafe52f", + "src/ui/Minimap.tsx": "6af9ef0ae1510ef0e9a0b923186430f92e1eeff5de89af87888d28ac0aca0df7", + "src/ui/TouchOverlay.tsx": "1857d989e2c51d422902a87ae1cfbea1da5d8c7237604d6155790edc9497f944", + "src/ui/main.tsx": "bfad2dbf1461f09e160f64ce7789cab7777396995b326abf591a2ae6acfe7b69" + }, + "dist": { + "dist/assets/DRACOLoader-DcgK70pb.js": "81fd3473c9d519fbf90aeffb90ad206788fdfe17f12d9895513b5d0f63d4e8ea", + "dist/assets/DRACOLoader-DcgK70pb.js.br": "3995d3dedb7193f1892c2be5f173585804f742968c8400bfa18def5b24fbb97d", + "dist/assets/DRACOLoader-DcgK70pb.js.gz": "c5e9b825a6f476f4b09b4c2987a23333b4c157b71143171abc5a5f639c483eae", + "dist/assets/GLTFLoader-DT0FodXB.js": "8815a4c13599dd4531e8d3255208ebd4cada37cb84e4758caacad1bc04c0b2a9", + "dist/assets/GLTFLoader-DT0FodXB.js.br": "1a22ed0c660a840159e6d56716897177e33f89168265ff62068aa6dd8407ec81", + "dist/assets/GLTFLoader-DT0FodXB.js.gz": "0ad759981a8ccd93e8e725d4a72bc49b5dd0280fdc99c3fc250f35394c0547fe", + "dist/assets/KTX2Loader-BKA9FnF4.js": "df2895f58f9d676eb73af45807369021f3f2393d08aa18494f223534bffa0933", + "dist/assets/KTX2Loader-BKA9FnF4.js.br": "0449c167c34be81fc816c324e2ec827507d5b68d8fadbb34c96041b6aa4e8ffb", + "dist/assets/KTX2Loader-BKA9FnF4.js.gz": "e44e8567e6b3f365b416091fdb73da05ecf67489a25959af8dce71e2bae3e9a0", + "dist/assets/index-B9PJxK4e.js": "dd172c4d4027c73b46faf6776cdcfc10c3f0a14497dc3cb03b3e7f39e8641893", + "dist/assets/index-B9PJxK4e.js.br": "574d9f16283eb94ee95ffd60402f71f8109d63b462d1607f8c090bddc97bbe70", + "dist/assets/index-B9PJxK4e.js.gz": "faa9978fa695a79fedcc302db9bd4a39cbf1f6bbcc575e338d6d670522e2d536", + "dist/assets/index-C7HJRl70.css": "b3845917a30bd9b0ce39a0a18508a7687bb95746714de89e6c42f389bc42085e", + "dist/assets/index-C7HJRl70.css.br": "39b2ac847c8fc4f9ef6ecab3fedf1b880d429f0dfc9ec85b9e0a0c314a95a487", + "dist/assets/index-C7HJRl70.css.gz": "569f7372057006c23c3f5b9db83457565e9bff4e172a075f16c65850ab16d793", + "dist/assets/meshopt_decoder.module-DXTYc6wn.js": "6bf68170d437477fb3411dfb24339df33257d69a4322c3907e14af33cff083c7", + "dist/assets/meshopt_decoder.module-DXTYc6wn.js.br": "b266a2f59fc0d4b0bc89707fc2c9b9fd2941d4ef42c76301488299de0f374b46", + "dist/assets/meshopt_decoder.module-DXTYc6wn.js.gz": "68e3867e131e5df061123b46e8f4eee3e798def0c5b87adc7d0d3858a3caeaf1", + "dist/assets/three.core-C4c1cNCm.js": "a95cddd48670b89b53e1dd316196cb3a0ce511c832e27a1144ea081ae84f8fb1", + "dist/assets/three.core-C4c1cNCm.js.br": "d4dce68aaa0db2726e3efbd99d7275c29c24a873ed0dee770e68de9ba03970d5", + "dist/assets/three.core-C4c1cNCm.js.gz": "327140382a7bc8b37a33786bc5ae814b383996503893a74d0b4939788e621117", + "dist/assets/three.module-C3lD2tUQ.js": "456fca0dcc0c990e9946991e708cc0747fe9f65668598b7d13854674c870f3eb", + "dist/assets/three.module-C3lD2tUQ.js.br": "1ea4e9c50fedf69e49e0952456c143596b18e544779ac6e53136822430d01d10", + "dist/assets/three.module-C3lD2tUQ.js.gz": "cb56d50774feebdb95a8279c0bbc66cc94adcbe6b960e405e27e33bcfc1bd11e", + "dist/assets.manifest.json": "9b0d834ce5e610150ba9913d58e61f5e0621c3a478d8cf70b098536de3507d5a", + "dist/assets.manifest.json.br": "ee18c16e693f188fbdf2caa13906c1ed392140ebe6519ea2e618cc1545e1fbda", + "dist/assets.manifest.json.gz": "9b66eb38e01e9010139b8f56829e18ee7de689362c54982a6aabe01a1b8a9313", + "dist/bake.receipt.json": "9f20a8cf476f00fb24fa5f71aeb08591dd7ed0763bbaadc6f8823a2f2a53febd", + "dist/bake.receipt.json.br": "2584947e58a485fc30bdf3f71fe87ece72c22fdf880caa841a0acc0f49fe28f6", + "dist/bake.receipt.json.gz": "27a197b2d5c15c021ed401adc0c67c5067327cfe79e60e7031ea929c541b20dc", + "dist/basis/basis_transcoder.js": "8478b5b6d6b74e7d3082b89f6417321d8d1dc0307f2b30d4484bb11b441696a1", + "dist/basis/basis_transcoder.js.br": "87efa81dbc0147b1ce0ec8539d5dafd477ad1faf77dec5dfac3afec4adcc722b", + "dist/basis/basis_transcoder.js.gz": "f7226c0b679e03d17995681f38848ca1ecc83f8800699b5cd8f715b33b778dd9", + "dist/basis/basis_transcoder.wasm": "6cf17dc889352c42e9acf8897107978d127005fe3386c36a0e3845e27967630a", + "dist/basis/basis_transcoder.wasm.br": "0f04439c0cbadc9473cb2c113781ee5f38f94a470b4b35b55d84549ce3eb506a", + "dist/basis/basis_transcoder.wasm.gz": "205391fc77f8d94df7aa2b57084fefc490e6abe39c863a26388f8c43d948cb6c", + "dist/favicon.svg": "49f166c4b2b4796be291a782b9c4c567feb11a718b79c39e6df164655cf38f25", + "dist/icon.png": "e6284520e340124d9300889add523251d93705457e7cd8c2d6e05aebd7ed04b7", + "dist/index.html": "320bca69a37c72acfae996409cb1d62f5d39592671c9dbe48e6ca4a41d3681b0", + "dist/manifest.webmanifest": "068a005271fc30b281006bd4d9e676d03789e1a71be3d84b5ee6936d7cb06f0b", + "dist/mannequin-combat.fe514710.glb": "a79378f9862108fca6a977801ce9db16c1f6fe907794d5267b2dc65f09a45823", + "dist/player-viewmodel.dc09c545.glb": "f76a73edc8341d1d5c41c3af51920fbe30494933d87758d7e4d8d83dee7d3556", + "dist/shared/images/025bfeeed32055f1.none.png": "b3b0f7376bbae7bdb56fc22af27e80afbf2e394afecc9610fac3b56d76a816d1", + "dist/shared/images/180a4672d2fb7cf6.etc1s.ktx2": "c26af0b2734328c4758f2e0bbd3de408fbc9d21acbac129cbcdf4d23c3323bd8", + "dist/shared/images/1b211cd5aaf69751.none.jpg": "4ab9c716ed2df301f9ac36e6dfc66b7f3c7e05668fe8bad716be651fc8198fe8", + "dist/shared/images/2bcf108dcd467775.etc1s.ktx2": "e3191efc2fc7d9cd2629645a1d61d9815f58dd7aca96d08214fc577b0b8e140d", + "dist/shared/images/33d4b714973d9063.none.jpg": "d1cabac983deeb2273e513281a1b39751fa29bb68562c3d0367d7b59aeff37f5", + "dist/shared/images/3b14e1c9099ee6f1.none.jpg": "989488b3e0e3a294fc2ef809c6551f8294314e94d42e975ad242d0055264f865", + "dist/shared/images/403ff0ad912b483b.none.jpg": "605f7adee67889d62d68fc0d09942da5cf773177646cc963c4c8fb3de030fbbb", + "dist/shared/images/44ecaa5be101b00b.etc1s.ktx2": "8a310bb9a36f8920b0a86ee297385b09e3c09d772664415c31396c442e3bc96e", + "dist/shared/images/68264455dbaa31ef.none.jpg": "46c2fd794b5a270525d6862b85ac562704d32eb8a58f6a05f2550aba89a4e7ba", + "dist/shared/images/7a2778e86d1c0b88.etc1s.ktx2": "8dcea39039f11f4b5e3da7d726ca342fcd0884644d2716fcd11103250dab686c", + "dist/shared/images/931bd58f1fa4ee01.none.jpg": "ff2ff99151e6a790c2b967631e698ca24f5fa3f604492199bae8771f797ba7b1", + "dist/shared/images/94923e8655cfb48d.none.jpg": "cbf196a0752156a58451f2478be9844c830b7a04375b3267577b8294628a0056", + "dist/shared/images/9cca6ccabb26e170.none.jpg": "30c7cbab0defdbfba13e65b3c47bd92cd23553959edc39c7a845394f048698d5", + "dist/shared/images/a5e59c8e78230cf0.etc1s.ktx2": "4fa7b70fcf2a6a907bc786fc01d64cfaf2bfaae7d158c2cc122a56f11f4e30f6", + "dist/shared/images/c6076cf549fcdfbe.etc1s.ktx2": "bffd3b499654ded356dfd4d40334bdd462590b46cd9cc0628c6b01f45946791b", + "dist/shared/images/d632eac4b35a44ad.none.jpg": "da481ac6220587e8d306b6bce5c062015e5923c1e5f9768ee52f730398217f1f", + "dist/sky.0913654f.jpg": "c1e616ec08d7132f09dd5ce46b780d63934c0df5043ab81d7eeaf16f309c9cc5" + }, + "scenario": "d48fb11263343891eae53d1da926c350397578f29637e079cebd3f4e0aaad552" + }, + { + "arm": "material-emissive", + "source": { + "src/entities/Breakables.ts": "ee61d473c4f78fdc913c11131ffcabd067b7cb3af03e9cd4cbc344c95f96695d", + "src/entities/Enemy.ts": "ddee4661a9bc88f90c1de6b4d12d3851267cbfc418d751fed443fd61e6677c0b", + "src/entities/FpsPlayer.ts": "dc8956e797021cf3006f1b85ccb6cb46799279a745125316f2a0b94bc4f42230", + "src/entities/Rifle.ts": "186a056a26f8b47afbf44f684679d145d2b025e63ad335592865619d0e5a9dbc", + "src/entities/Target.ts": "3113abec565c028645215f19a70efb127c164a52a222e281fd5e7ded6dad4fed", + "src/entities/TouchControls.ts": "6db4b64c7c8c02825ab4026ecde7fe840fa26d16e5eec9c9f4fc81e1d8061c53", + "src/game.ts": "a2ccbada7bf5dc6d02774fcf1271da299ecbda922cf045701e4fe2eba4a6cc7b", + "src/main.ts": "66564d9e54a4e71aa19adc08ebc4db7d49ad77b1b24c8e7295caaad20055d994", + "src/postPhysics.ts": "45a948952bf7693b1db4f148f9194da11bfc4faeb64c7555a51eb9ac100c034a", + "src/render/backlightMaterial.ts": "d1102b1dfbdcc277a39d59196429d0d0771ecc0a76535f6305dbebceec01c4f5", + "src/render/camera.ts": "e547a95355a626614ed8312ce5e312f810ab4f67aa1b963a77c0b74ffe68c6b4", + "src/render/decals.ts": "ed399978921abbfc0fdbc881e317ae67e58391af486ecb58a12f8e6f71eaf826", + "src/render/environmentContribution.ts": "25a84b7732d84b7d8bf61b6c3c1a7802fa6601d024ded36a1b31d50e534d1f5a", + "src/render/environmentRadiance.ts": "dd142d5fbf7d1a9a285db02f5cc0d340c6d5b79d3c4bd295eda4220879c0ab2f", + "src/render/environmentSampleCache.ts": "d82b431cc2e65cdc6e108afa73bf32b8b70fe97ad5177e0b6c5f7d14ac7274c6", + "src/render/environmentSampling.ts": "778619877e04bd284847443fb9d7a86e92cc31565978f29dbc09be9d70ddaa6e", + "src/render/environmentSnapshot.ts": "f0e1791a51ccc8b336a5798d0c8d1f2bce02891e8b82d4a408c7b6080da4ee78", + "src/render/facade.ts": "ef650c3239e57d755f18daaea19585bdf0c3bbe49c7367e1360d69da6a0c3e56", + "src/render/gunfx.ts": "7f98780a2a351741c78cce63804ea032064d1395340050d69108207ab98faf30", + "src/render/lighting.ts": "d384fa644e003792ed509ddc4c6a9fee9bf6f380ed12909b3cf9f89c8d84a3f0", + "src/render/loading.ts": "f16feebdcc10bc86234dad70ac3fd781145a00e464896c820f512e8f861ca194", + "src/render/materialAssignments.ts": "fc7ba25b101a5fd520253b1fc5f5aa1d696666c968137798db4880ef7ef58a56", + "src/render/materialLighting.ts": "29f1f60a3953a39d907aad5770d2d5d0a3540bd3ab77a81685d51f1f90ef8c34", + "src/render/materials.ts": "a004080abac188e0e66ecc43909b54510fefa9657e0183d8fbefbd9bac9a8c9a", + "src/render/occlusion.ts": "3d88fb8009c4df4fe43e16fcd46b707376de08d2ca0baabe7beadfc4c509906d", + "src/render/palette.ts": "721b03fae83bd6cabd7e6fe3dc456447957a545d6a2c9d74d9ef9fd9c3534d05", + "src/render/palm.ts": "93ceae977d3ea397fd021313843a42c04b78e0afd78d4c7bc74cea05164d32c7", + "src/render/pooled-billboards.ts": "d1c464831c1fd01aa84ffa6df7fbbc6be4e79f531bc3298ae4789b7b106ad8d6", + "src/render/postprocessing.ts": "8f936d1f491017dca11395b152975ca37436fdca87aec7065d1184baa6497114", + "src/render/quality.ts": "e1838f64933721a9296583c4f989f231a69487aa5c4d4069309ed2c7ed9e1e64", + "src/render/scale.ts": "06d35ea9a15dbb0ca54255127604269e3ce486ec003ff9ac0794cf5057f0156d", + "src/render/shapes.ts": "57cc819b78b2a60dfa179c96f2d687e567739976dae77ab1b901d4ff26fa2449", + "src/render/sky.ts": "72cd7aa1f69dec93ee28d90cb9db7456d21e9a609bbd56404fae7e0361930c22", + "src/render/town-schematic.ts": "a34724a0fa2ed6b68db6341bacde10ed7ac1adfdd08cf9a9e548a27fe1388aa5", + "src/render/town.ts": "995bf31adc90b71db423dc0dc6b6a29c8b8953d374a2e293eb2778447b51969a", + "src/render/townMaterials.ts": "f9c6f139af337816f7eb1867d57e50dd5f6083378a5329fcb5ea12cb672a7c72", + "src/render/vehicles.ts": "6825d96f5b3fc0776ca7ebed933f41a61d7bfeb7e1cbdc69f7f835b227877576", + "src/render/worldEnvironment.ts": "11017185cfa345fffe309ed60e7b2f7dc9bc8948508ab22e6b895fd854926a57", + "src/scenes/Play.ts": "da5321f476fac50d0dd6c5f0111976827d8bc830b6f50f1dbcaddeef4a1bca0a", + "src/state.ts": "fe3aa819af214f8e97a703f4bad84b35b948c344920a1fe3e63864969378c3dd", + "src/style.css": "b7248576b175b133423f5152686da27467f42f4e170a74228c7a3a1425992bae", + "src/surfaces.ts": "5711274cd2269baeb3b7053894946e306d091f516517b1d26de7f74c36b7e747", + "src/ui/App.tsx": "06b349cffb954556236dcdccc3140bb54186ef8f7711617daa91f29bf9935c89", + "src/ui/Crosshair.tsx": "02c5d8e185c0a9a5a64d4e91fa90a53c166201b05d95ac3a595c1cf5da8703bb", + "src/ui/GameUi.tsx": "2cbcdc8383803eb219670b7d3d29500bcff37c307f3fefbf4f2f75bfea8cf1a0", + "src/ui/Hud.tsx": "b6a84cd0811b0b55040a5026c23bd8009ac87be2bfbc29f7b3491ae8ccafe52f", + "src/ui/Minimap.tsx": "6af9ef0ae1510ef0e9a0b923186430f92e1eeff5de89af87888d28ac0aca0df7", + "src/ui/TouchOverlay.tsx": "1857d989e2c51d422902a87ae1cfbea1da5d8c7237604d6155790edc9497f944", + "src/ui/main.tsx": "bfad2dbf1461f09e160f64ce7789cab7777396995b326abf591a2ae6acfe7b69" + }, + "dist": { + "dist/assets/DRACOLoader-DcgK70pb.js": "81fd3473c9d519fbf90aeffb90ad206788fdfe17f12d9895513b5d0f63d4e8ea", + "dist/assets/DRACOLoader-DcgK70pb.js.br": "3995d3dedb7193f1892c2be5f173585804f742968c8400bfa18def5b24fbb97d", + "dist/assets/DRACOLoader-DcgK70pb.js.gz": "c5e9b825a6f476f4b09b4c2987a23333b4c157b71143171abc5a5f639c483eae", + "dist/assets/GLTFLoader-Dawfa3Nw.js": "fa834b96e896dbe7e5709344e32066b92aadc779fad468662d1065874e5216de", + "dist/assets/GLTFLoader-Dawfa3Nw.js.br": "b413f69c25c72b6a33f30dfe127088739ca772511b7ab46dcab72ac9101c0f74", + "dist/assets/GLTFLoader-Dawfa3Nw.js.gz": "f7d4bfe93c1ca8c35196e3061a36ae08601b3f59fecd4a107c98d9da4a94f148", + "dist/assets/KTX2Loader-BKA9FnF4.js": "df2895f58f9d676eb73af45807369021f3f2393d08aa18494f223534bffa0933", + "dist/assets/KTX2Loader-BKA9FnF4.js.br": "0449c167c34be81fc816c324e2ec827507d5b68d8fadbb34c96041b6aa4e8ffb", + "dist/assets/KTX2Loader-BKA9FnF4.js.gz": "e44e8567e6b3f365b416091fdb73da05ecf67489a25959af8dce71e2bae3e9a0", + "dist/assets/index-C7HJRl70.css": "b3845917a30bd9b0ce39a0a18508a7687bb95746714de89e6c42f389bc42085e", + "dist/assets/index-C7HJRl70.css.br": "39b2ac847c8fc4f9ef6ecab3fedf1b880d429f0dfc9ec85b9e0a0c314a95a487", + "dist/assets/index-C7HJRl70.css.gz": "569f7372057006c23c3f5b9db83457565e9bff4e172a075f16c65850ab16d793", + "dist/assets/index-__iUEM-t.js": "8ece0dce3279467dcfea92f014ba171edeb6ed1cb13a8b33e9f4e447d8c1a6dc", + "dist/assets/index-__iUEM-t.js.br": "806640d6cfab31c415e0ffbe914cb9dd88fb338d06dd2505ff6b6c4cfab45f94", + "dist/assets/index-__iUEM-t.js.gz": "30f4835d37358259ef6917f2ed8eb68d49941086a6d47b7878b090d87ad3ac73", + "dist/assets/meshopt_decoder.module-DXTYc6wn.js": "6bf68170d437477fb3411dfb24339df33257d69a4322c3907e14af33cff083c7", + "dist/assets/meshopt_decoder.module-DXTYc6wn.js.br": "b266a2f59fc0d4b0bc89707fc2c9b9fd2941d4ef42c76301488299de0f374b46", + "dist/assets/meshopt_decoder.module-DXTYc6wn.js.gz": "68e3867e131e5df061123b46e8f4eee3e798def0c5b87adc7d0d3858a3caeaf1", + "dist/assets/three.core-C4c1cNCm.js": "a95cddd48670b89b53e1dd316196cb3a0ce511c832e27a1144ea081ae84f8fb1", + "dist/assets/three.core-C4c1cNCm.js.br": "d4dce68aaa0db2726e3efbd99d7275c29c24a873ed0dee770e68de9ba03970d5", + "dist/assets/three.core-C4c1cNCm.js.gz": "327140382a7bc8b37a33786bc5ae814b383996503893a74d0b4939788e621117", + "dist/assets/three.module-C3lD2tUQ.js": "456fca0dcc0c990e9946991e708cc0747fe9f65668598b7d13854674c870f3eb", + "dist/assets/three.module-C3lD2tUQ.js.br": "1ea4e9c50fedf69e49e0952456c143596b18e544779ac6e53136822430d01d10", + "dist/assets/three.module-C3lD2tUQ.js.gz": "cb56d50774feebdb95a8279c0bbc66cc94adcbe6b960e405e27e33bcfc1bd11e", + "dist/assets.manifest.json": "9b0d834ce5e610150ba9913d58e61f5e0621c3a478d8cf70b098536de3507d5a", + "dist/assets.manifest.json.br": "ee18c16e693f188fbdf2caa13906c1ed392140ebe6519ea2e618cc1545e1fbda", + "dist/assets.manifest.json.gz": "9b66eb38e01e9010139b8f56829e18ee7de689362c54982a6aabe01a1b8a9313", + "dist/bake.receipt.json": "9f20a8cf476f00fb24fa5f71aeb08591dd7ed0763bbaadc6f8823a2f2a53febd", + "dist/bake.receipt.json.br": "2584947e58a485fc30bdf3f71fe87ece72c22fdf880caa841a0acc0f49fe28f6", + "dist/bake.receipt.json.gz": "27a197b2d5c15c021ed401adc0c67c5067327cfe79e60e7031ea929c541b20dc", + "dist/basis/basis_transcoder.js": "8478b5b6d6b74e7d3082b89f6417321d8d1dc0307f2b30d4484bb11b441696a1", + "dist/basis/basis_transcoder.js.br": "87efa81dbc0147b1ce0ec8539d5dafd477ad1faf77dec5dfac3afec4adcc722b", + "dist/basis/basis_transcoder.js.gz": "f7226c0b679e03d17995681f38848ca1ecc83f8800699b5cd8f715b33b778dd9", + "dist/basis/basis_transcoder.wasm": "6cf17dc889352c42e9acf8897107978d127005fe3386c36a0e3845e27967630a", + "dist/basis/basis_transcoder.wasm.br": "0f04439c0cbadc9473cb2c113781ee5f38f94a470b4b35b55d84549ce3eb506a", + "dist/basis/basis_transcoder.wasm.gz": "205391fc77f8d94df7aa2b57084fefc490e6abe39c863a26388f8c43d948cb6c", + "dist/favicon.svg": "49f166c4b2b4796be291a782b9c4c567feb11a718b79c39e6df164655cf38f25", + "dist/icon.png": "e6284520e340124d9300889add523251d93705457e7cd8c2d6e05aebd7ed04b7", + "dist/index.html": "1d9a0924ccd185d8c02cfda354321c1a3fd69a168cf67d49b26a88b6db760ba8", + "dist/manifest.webmanifest": "068a005271fc30b281006bd4d9e676d03789e1a71be3d84b5ee6936d7cb06f0b", + "dist/mannequin-combat.fe514710.glb": "a79378f9862108fca6a977801ce9db16c1f6fe907794d5267b2dc65f09a45823", + "dist/player-viewmodel.dc09c545.glb": "f76a73edc8341d1d5c41c3af51920fbe30494933d87758d7e4d8d83dee7d3556", + "dist/shared/images/025bfeeed32055f1.none.png": "b3b0f7376bbae7bdb56fc22af27e80afbf2e394afecc9610fac3b56d76a816d1", + "dist/shared/images/180a4672d2fb7cf6.etc1s.ktx2": "c26af0b2734328c4758f2e0bbd3de408fbc9d21acbac129cbcdf4d23c3323bd8", + "dist/shared/images/1b211cd5aaf69751.none.jpg": "4ab9c716ed2df301f9ac36e6dfc66b7f3c7e05668fe8bad716be651fc8198fe8", + "dist/shared/images/2bcf108dcd467775.etc1s.ktx2": "e3191efc2fc7d9cd2629645a1d61d9815f58dd7aca96d08214fc577b0b8e140d", + "dist/shared/images/33d4b714973d9063.none.jpg": "d1cabac983deeb2273e513281a1b39751fa29bb68562c3d0367d7b59aeff37f5", + "dist/shared/images/3b14e1c9099ee6f1.none.jpg": "989488b3e0e3a294fc2ef809c6551f8294314e94d42e975ad242d0055264f865", + "dist/shared/images/403ff0ad912b483b.none.jpg": "605f7adee67889d62d68fc0d09942da5cf773177646cc963c4c8fb3de030fbbb", + "dist/shared/images/44ecaa5be101b00b.etc1s.ktx2": "8a310bb9a36f8920b0a86ee297385b09e3c09d772664415c31396c442e3bc96e", + "dist/shared/images/68264455dbaa31ef.none.jpg": "46c2fd794b5a270525d6862b85ac562704d32eb8a58f6a05f2550aba89a4e7ba", + "dist/shared/images/7a2778e86d1c0b88.etc1s.ktx2": "8dcea39039f11f4b5e3da7d726ca342fcd0884644d2716fcd11103250dab686c", + "dist/shared/images/931bd58f1fa4ee01.none.jpg": "ff2ff99151e6a790c2b967631e698ca24f5fa3f604492199bae8771f797ba7b1", + "dist/shared/images/94923e8655cfb48d.none.jpg": "cbf196a0752156a58451f2478be9844c830b7a04375b3267577b8294628a0056", + "dist/shared/images/9cca6ccabb26e170.none.jpg": "30c7cbab0defdbfba13e65b3c47bd92cd23553959edc39c7a845394f048698d5", + "dist/shared/images/a5e59c8e78230cf0.etc1s.ktx2": "4fa7b70fcf2a6a907bc786fc01d64cfaf2bfaae7d158c2cc122a56f11f4e30f6", + "dist/shared/images/c6076cf549fcdfbe.etc1s.ktx2": "bffd3b499654ded356dfd4d40334bdd462590b46cd9cc0628c6b01f45946791b", + "dist/shared/images/d632eac4b35a44ad.none.jpg": "da481ac6220587e8d306b6bce5c062015e5923c1e5f9768ee52f730398217f1f", + "dist/sky.0913654f.jpg": "c1e616ec08d7132f09dd5ce46b780d63934c0df5043ab81d7eeaf16f309c9cc5" + }, + "scenario": "d48fb11263343891eae53d1da926c350397578f29637e079cebd3f4e0aaad552" + }, + { + "arm": "compiled-rim-only", + "source": { + "src/entities/Breakables.ts": "ee61d473c4f78fdc913c11131ffcabd067b7cb3af03e9cd4cbc344c95f96695d", + "src/entities/Enemy.ts": "ddee4661a9bc88f90c1de6b4d12d3851267cbfc418d751fed443fd61e6677c0b", + "src/entities/FpsPlayer.ts": "dc8956e797021cf3006f1b85ccb6cb46799279a745125316f2a0b94bc4f42230", + "src/entities/Rifle.ts": "186a056a26f8b47afbf44f684679d145d2b025e63ad335592865619d0e5a9dbc", + "src/entities/Target.ts": "3113abec565c028645215f19a70efb127c164a52a222e281fd5e7ded6dad4fed", + "src/entities/TouchControls.ts": "6db4b64c7c8c02825ab4026ecde7fe840fa26d16e5eec9c9f4fc81e1d8061c53", + "src/game.ts": "a2ccbada7bf5dc6d02774fcf1271da299ecbda922cf045701e4fe2eba4a6cc7b", + "src/main.ts": "66564d9e54a4e71aa19adc08ebc4db7d49ad77b1b24c8e7295caaad20055d994", + "src/postPhysics.ts": "45a948952bf7693b1db4f148f9194da11bfc4faeb64c7555a51eb9ac100c034a", + "src/render/backlightMaterial.ts": "a2972789d74f196f0aeb2fe9860cf64597f033f6d7280e73faa33aa4d8f8fcfe", + "src/render/camera.ts": "e547a95355a626614ed8312ce5e312f810ab4f67aa1b963a77c0b74ffe68c6b4", + "src/render/decals.ts": "ed399978921abbfc0fdbc881e317ae67e58391af486ecb58a12f8e6f71eaf826", + "src/render/environmentContribution.ts": "25a84b7732d84b7d8bf61b6c3c1a7802fa6601d024ded36a1b31d50e534d1f5a", + "src/render/environmentRadiance.ts": "dd142d5fbf7d1a9a285db02f5cc0d340c6d5b79d3c4bd295eda4220879c0ab2f", + "src/render/environmentSampleCache.ts": "d82b431cc2e65cdc6e108afa73bf32b8b70fe97ad5177e0b6c5f7d14ac7274c6", + "src/render/environmentSampling.ts": "778619877e04bd284847443fb9d7a86e92cc31565978f29dbc09be9d70ddaa6e", + "src/render/environmentSnapshot.ts": "f0e1791a51ccc8b336a5798d0c8d1f2bce02891e8b82d4a408c7b6080da4ee78", + "src/render/facade.ts": "ef650c3239e57d755f18daaea19585bdf0c3bbe49c7367e1360d69da6a0c3e56", + "src/render/gunfx.ts": "7f98780a2a351741c78cce63804ea032064d1395340050d69108207ab98faf30", + "src/render/lighting.ts": "d384fa644e003792ed509ddc4c6a9fee9bf6f380ed12909b3cf9f89c8d84a3f0", + "src/render/loading.ts": "f16feebdcc10bc86234dad70ac3fd781145a00e464896c820f512e8f861ca194", + "src/render/materialAssignments.ts": "fc7ba25b101a5fd520253b1fc5f5aa1d696666c968137798db4880ef7ef58a56", + "src/render/materialLighting.ts": "29f1f60a3953a39d907aad5770d2d5d0a3540bd3ab77a81685d51f1f90ef8c34", + "src/render/materials.ts": "a004080abac188e0e66ecc43909b54510fefa9657e0183d8fbefbd9bac9a8c9a", + "src/render/occlusion.ts": "3d88fb8009c4df4fe43e16fcd46b707376de08d2ca0baabe7beadfc4c509906d", + "src/render/palette.ts": "721b03fae83bd6cabd7e6fe3dc456447957a545d6a2c9d74d9ef9fd9c3534d05", + "src/render/palm.ts": "93ceae977d3ea397fd021313843a42c04b78e0afd78d4c7bc74cea05164d32c7", + "src/render/pooled-billboards.ts": "d1c464831c1fd01aa84ffa6df7fbbc6be4e79f531bc3298ae4789b7b106ad8d6", + "src/render/postprocessing.ts": "8f936d1f491017dca11395b152975ca37436fdca87aec7065d1184baa6497114", + "src/render/quality.ts": "e1838f64933721a9296583c4f989f231a69487aa5c4d4069309ed2c7ed9e1e64", + "src/render/scale.ts": "06d35ea9a15dbb0ca54255127604269e3ce486ec003ff9ac0794cf5057f0156d", + "src/render/shapes.ts": "57cc819b78b2a60dfa179c96f2d687e567739976dae77ab1b901d4ff26fa2449", + "src/render/sky.ts": "72cd7aa1f69dec93ee28d90cb9db7456d21e9a609bbd56404fae7e0361930c22", + "src/render/town-schematic.ts": "a34724a0fa2ed6b68db6341bacde10ed7ac1adfdd08cf9a9e548a27fe1388aa5", + "src/render/town.ts": "995bf31adc90b71db423dc0dc6b6a29c8b8953d374a2e293eb2778447b51969a", + "src/render/townMaterials.ts": "f9c6f139af337816f7eb1867d57e50dd5f6083378a5329fcb5ea12cb672a7c72", + "src/render/vehicles.ts": "6825d96f5b3fc0776ca7ebed933f41a61d7bfeb7e1cbdc69f7f835b227877576", + "src/render/worldEnvironment.ts": "11017185cfa345fffe309ed60e7b2f7dc9bc8948508ab22e6b895fd854926a57", + "src/scenes/Play.ts": "da5321f476fac50d0dd6c5f0111976827d8bc830b6f50f1dbcaddeef4a1bca0a", + "src/state.ts": "fe3aa819af214f8e97a703f4bad84b35b948c344920a1fe3e63864969378c3dd", + "src/style.css": "b7248576b175b133423f5152686da27467f42f4e170a74228c7a3a1425992bae", + "src/surfaces.ts": "5711274cd2269baeb3b7053894946e306d091f516517b1d26de7f74c36b7e747", + "src/ui/App.tsx": "06b349cffb954556236dcdccc3140bb54186ef8f7711617daa91f29bf9935c89", + "src/ui/Crosshair.tsx": "02c5d8e185c0a9a5a64d4e91fa90a53c166201b05d95ac3a595c1cf5da8703bb", + "src/ui/GameUi.tsx": "2cbcdc8383803eb219670b7d3d29500bcff37c307f3fefbf4f2f75bfea8cf1a0", + "src/ui/Hud.tsx": "b6a84cd0811b0b55040a5026c23bd8009ac87be2bfbc29f7b3491ae8ccafe52f", + "src/ui/Minimap.tsx": "6af9ef0ae1510ef0e9a0b923186430f92e1eeff5de89af87888d28ac0aca0df7", + "src/ui/TouchOverlay.tsx": "1857d989e2c51d422902a87ae1cfbea1da5d8c7237604d6155790edc9497f944", + "src/ui/main.tsx": "bfad2dbf1461f09e160f64ce7789cab7777396995b326abf591a2ae6acfe7b69" + }, + "dist": { + "dist/assets/DRACOLoader-DcgK70pb.js": "81fd3473c9d519fbf90aeffb90ad206788fdfe17f12d9895513b5d0f63d4e8ea", + "dist/assets/DRACOLoader-DcgK70pb.js.br": "3995d3dedb7193f1892c2be5f173585804f742968c8400bfa18def5b24fbb97d", + "dist/assets/DRACOLoader-DcgK70pb.js.gz": "c5e9b825a6f476f4b09b4c2987a23333b4c157b71143171abc5a5f639c483eae", + "dist/assets/GLTFLoader-BC1pk3Qi.js": "29475f9f760bad079c10d246c689052bcb59dda176aa62e9e991289cfeea5654", + "dist/assets/GLTFLoader-BC1pk3Qi.js.br": "f57e3083f8d0e1d4f9eccb9c9ead4bb67ba1a5a22293b61d551c5856c420fdd1", + "dist/assets/GLTFLoader-BC1pk3Qi.js.gz": "3e3e69354fbb4083608be4ebd52a901fa8716135f6af18f27c84f35251257fdd", + "dist/assets/KTX2Loader-BKA9FnF4.js": "df2895f58f9d676eb73af45807369021f3f2393d08aa18494f223534bffa0933", + "dist/assets/KTX2Loader-BKA9FnF4.js.br": "0449c167c34be81fc816c324e2ec827507d5b68d8fadbb34c96041b6aa4e8ffb", + "dist/assets/KTX2Loader-BKA9FnF4.js.gz": "e44e8567e6b3f365b416091fdb73da05ecf67489a25959af8dce71e2bae3e9a0", + "dist/assets/index-BlNOCoWi.js": "8e2ce0ff5a721414e3e3d7f14fdb95f163bdae31674bd39a17c36af83feab379", + "dist/assets/index-BlNOCoWi.js.br": "2f89e7fa436019a12d8d1e5cde7b16f53fb3bfc616b5011ff4cbcdba3337a040", + "dist/assets/index-BlNOCoWi.js.gz": "17c98bd9ec1e4d1b325ab6776afce1b964ad33b2b98c5f667ad181145beff238", + "dist/assets/index-C7HJRl70.css": "b3845917a30bd9b0ce39a0a18508a7687bb95746714de89e6c42f389bc42085e", + "dist/assets/index-C7HJRl70.css.br": "39b2ac847c8fc4f9ef6ecab3fedf1b880d429f0dfc9ec85b9e0a0c314a95a487", + "dist/assets/index-C7HJRl70.css.gz": "569f7372057006c23c3f5b9db83457565e9bff4e172a075f16c65850ab16d793", + "dist/assets/meshopt_decoder.module-DXTYc6wn.js": "6bf68170d437477fb3411dfb24339df33257d69a4322c3907e14af33cff083c7", + "dist/assets/meshopt_decoder.module-DXTYc6wn.js.br": "b266a2f59fc0d4b0bc89707fc2c9b9fd2941d4ef42c76301488299de0f374b46", + "dist/assets/meshopt_decoder.module-DXTYc6wn.js.gz": "68e3867e131e5df061123b46e8f4eee3e798def0c5b87adc7d0d3858a3caeaf1", + "dist/assets/three.core-C4c1cNCm.js": "a95cddd48670b89b53e1dd316196cb3a0ce511c832e27a1144ea081ae84f8fb1", + "dist/assets/three.core-C4c1cNCm.js.br": "d4dce68aaa0db2726e3efbd99d7275c29c24a873ed0dee770e68de9ba03970d5", + "dist/assets/three.core-C4c1cNCm.js.gz": "327140382a7bc8b37a33786bc5ae814b383996503893a74d0b4939788e621117", + "dist/assets/three.module-C3lD2tUQ.js": "456fca0dcc0c990e9946991e708cc0747fe9f65668598b7d13854674c870f3eb", + "dist/assets/three.module-C3lD2tUQ.js.br": "1ea4e9c50fedf69e49e0952456c143596b18e544779ac6e53136822430d01d10", + "dist/assets/three.module-C3lD2tUQ.js.gz": "cb56d50774feebdb95a8279c0bbc66cc94adcbe6b960e405e27e33bcfc1bd11e", + "dist/assets.manifest.json": "9b0d834ce5e610150ba9913d58e61f5e0621c3a478d8cf70b098536de3507d5a", + "dist/assets.manifest.json.br": "ee18c16e693f188fbdf2caa13906c1ed392140ebe6519ea2e618cc1545e1fbda", + "dist/assets.manifest.json.gz": "9b66eb38e01e9010139b8f56829e18ee7de689362c54982a6aabe01a1b8a9313", + "dist/bake.receipt.json": "9f20a8cf476f00fb24fa5f71aeb08591dd7ed0763bbaadc6f8823a2f2a53febd", + "dist/bake.receipt.json.br": "2584947e58a485fc30bdf3f71fe87ece72c22fdf880caa841a0acc0f49fe28f6", + "dist/bake.receipt.json.gz": "27a197b2d5c15c021ed401adc0c67c5067327cfe79e60e7031ea929c541b20dc", + "dist/basis/basis_transcoder.js": "8478b5b6d6b74e7d3082b89f6417321d8d1dc0307f2b30d4484bb11b441696a1", + "dist/basis/basis_transcoder.js.br": "87efa81dbc0147b1ce0ec8539d5dafd477ad1faf77dec5dfac3afec4adcc722b", + "dist/basis/basis_transcoder.js.gz": "f7226c0b679e03d17995681f38848ca1ecc83f8800699b5cd8f715b33b778dd9", + "dist/basis/basis_transcoder.wasm": "6cf17dc889352c42e9acf8897107978d127005fe3386c36a0e3845e27967630a", + "dist/basis/basis_transcoder.wasm.br": "0f04439c0cbadc9473cb2c113781ee5f38f94a470b4b35b55d84549ce3eb506a", + "dist/basis/basis_transcoder.wasm.gz": "205391fc77f8d94df7aa2b57084fefc490e6abe39c863a26388f8c43d948cb6c", + "dist/favicon.svg": "49f166c4b2b4796be291a782b9c4c567feb11a718b79c39e6df164655cf38f25", + "dist/icon.png": "e6284520e340124d9300889add523251d93705457e7cd8c2d6e05aebd7ed04b7", + "dist/index.html": "461b37db5cf58306c84970a3a3aae6b51643c9254f7e9b1f3e8e518148ba26e4", + "dist/manifest.webmanifest": "068a005271fc30b281006bd4d9e676d03789e1a71be3d84b5ee6936d7cb06f0b", + "dist/mannequin-combat.fe514710.glb": "a79378f9862108fca6a977801ce9db16c1f6fe907794d5267b2dc65f09a45823", + "dist/player-viewmodel.dc09c545.glb": "f76a73edc8341d1d5c41c3af51920fbe30494933d87758d7e4d8d83dee7d3556", + "dist/shared/images/025bfeeed32055f1.none.png": "b3b0f7376bbae7bdb56fc22af27e80afbf2e394afecc9610fac3b56d76a816d1", + "dist/shared/images/180a4672d2fb7cf6.etc1s.ktx2": "c26af0b2734328c4758f2e0bbd3de408fbc9d21acbac129cbcdf4d23c3323bd8", + "dist/shared/images/1b211cd5aaf69751.none.jpg": "4ab9c716ed2df301f9ac36e6dfc66b7f3c7e05668fe8bad716be651fc8198fe8", + "dist/shared/images/2bcf108dcd467775.etc1s.ktx2": "e3191efc2fc7d9cd2629645a1d61d9815f58dd7aca96d08214fc577b0b8e140d", + "dist/shared/images/33d4b714973d9063.none.jpg": "d1cabac983deeb2273e513281a1b39751fa29bb68562c3d0367d7b59aeff37f5", + "dist/shared/images/3b14e1c9099ee6f1.none.jpg": "989488b3e0e3a294fc2ef809c6551f8294314e94d42e975ad242d0055264f865", + "dist/shared/images/403ff0ad912b483b.none.jpg": "605f7adee67889d62d68fc0d09942da5cf773177646cc963c4c8fb3de030fbbb", + "dist/shared/images/44ecaa5be101b00b.etc1s.ktx2": "8a310bb9a36f8920b0a86ee297385b09e3c09d772664415c31396c442e3bc96e", + "dist/shared/images/68264455dbaa31ef.none.jpg": "46c2fd794b5a270525d6862b85ac562704d32eb8a58f6a05f2550aba89a4e7ba", + "dist/shared/images/7a2778e86d1c0b88.etc1s.ktx2": "8dcea39039f11f4b5e3da7d726ca342fcd0884644d2716fcd11103250dab686c", + "dist/shared/images/931bd58f1fa4ee01.none.jpg": "ff2ff99151e6a790c2b967631e698ca24f5fa3f604492199bae8771f797ba7b1", + "dist/shared/images/94923e8655cfb48d.none.jpg": "cbf196a0752156a58451f2478be9844c830b7a04375b3267577b8294628a0056", + "dist/shared/images/9cca6ccabb26e170.none.jpg": "30c7cbab0defdbfba13e65b3c47bd92cd23553959edc39c7a845394f048698d5", + "dist/shared/images/a5e59c8e78230cf0.etc1s.ktx2": "4fa7b70fcf2a6a907bc786fc01d64cfaf2bfaae7d158c2cc122a56f11f4e30f6", + "dist/shared/images/c6076cf549fcdfbe.etc1s.ktx2": "bffd3b499654ded356dfd4d40334bdd462590b46cd9cc0628c6b01f45946791b", + "dist/shared/images/d632eac4b35a44ad.none.jpg": "da481ac6220587e8d306b6bce5c062015e5923c1e5f9768ee52f730398217f1f", + "dist/sky.0913654f.jpg": "c1e616ec08d7132f09dd5ce46b780d63934c0df5043ab81d7eeaf16f309c9cc5" + }, + "scenario": "d48fb11263343891eae53d1da926c350397578f29637e079cebd3f4e0aaad552" + }, + { + "arm": "shared-graph", + "source": { + "src/entities/Breakables.ts": "ee61d473c4f78fdc913c11131ffcabd067b7cb3af03e9cd4cbc344c95f96695d", + "src/entities/Enemy.ts": "ddee4661a9bc88f90c1de6b4d12d3851267cbfc418d751fed443fd61e6677c0b", + "src/entities/FpsPlayer.ts": "dc8956e797021cf3006f1b85ccb6cb46799279a745125316f2a0b94bc4f42230", + "src/entities/Rifle.ts": "186a056a26f8b47afbf44f684679d145d2b025e63ad335592865619d0e5a9dbc", + "src/entities/Target.ts": "3113abec565c028645215f19a70efb127c164a52a222e281fd5e7ded6dad4fed", + "src/entities/TouchControls.ts": "6db4b64c7c8c02825ab4026ecde7fe840fa26d16e5eec9c9f4fc81e1d8061c53", + "src/game.ts": "a2ccbada7bf5dc6d02774fcf1271da299ecbda922cf045701e4fe2eba4a6cc7b", + "src/main.ts": "66564d9e54a4e71aa19adc08ebc4db7d49ad77b1b24c8e7295caaad20055d994", + "src/postPhysics.ts": "45a948952bf7693b1db4f148f9194da11bfc4faeb64c7555a51eb9ac100c034a", + "src/render/backlightControls.ts": "955c67c8f77130c7af85709a80a957c80b67d05282b286adf2e1b2dcaf9dc6d3", + "src/render/backlightMaterial.ts": "4ab922b740fa53c57f5130c36d651a63dbc8b5d399a1a50cb8277a204efdeaed", + "src/render/camera.ts": "e547a95355a626614ed8312ce5e312f810ab4f67aa1b963a77c0b74ffe68c6b4", + "src/render/decals.ts": "ed399978921abbfc0fdbc881e317ae67e58391af486ecb58a12f8e6f71eaf826", + "src/render/environmentContribution.ts": "25a84b7732d84b7d8bf61b6c3c1a7802fa6601d024ded36a1b31d50e534d1f5a", + "src/render/environmentRadiance.ts": "dd142d5fbf7d1a9a285db02f5cc0d340c6d5b79d3c4bd295eda4220879c0ab2f", + "src/render/environmentSampleCache.ts": "d82b431cc2e65cdc6e108afa73bf32b8b70fe97ad5177e0b6c5f7d14ac7274c6", + "src/render/environmentSampling.ts": "778619877e04bd284847443fb9d7a86e92cc31565978f29dbc09be9d70ddaa6e", + "src/render/environmentSnapshot.ts": "f0e1791a51ccc8b336a5798d0c8d1f2bce02891e8b82d4a408c7b6080da4ee78", + "src/render/facade.ts": "ef650c3239e57d755f18daaea19585bdf0c3bbe49c7367e1360d69da6a0c3e56", + "src/render/gunfx.ts": "7f98780a2a351741c78cce63804ea032064d1395340050d69108207ab98faf30", + "src/render/lighting.ts": "d384fa644e003792ed509ddc4c6a9fee9bf6f380ed12909b3cf9f89c8d84a3f0", + "src/render/loading.ts": "f16feebdcc10bc86234dad70ac3fd781145a00e464896c820f512e8f861ca194", + "src/render/materialAssignments.ts": "fc7ba25b101a5fd520253b1fc5f5aa1d696666c968137798db4880ef7ef58a56", + "src/render/materialLighting.ts": "29f1f60a3953a39d907aad5770d2d5d0a3540bd3ab77a81685d51f1f90ef8c34", + "src/render/materials.ts": "a004080abac188e0e66ecc43909b54510fefa9657e0183d8fbefbd9bac9a8c9a", + "src/render/occlusion.ts": "3d88fb8009c4df4fe43e16fcd46b707376de08d2ca0baabe7beadfc4c509906d", + "src/render/palette.ts": "721b03fae83bd6cabd7e6fe3dc456447957a545d6a2c9d74d9ef9fd9c3534d05", + "src/render/palm.ts": "93ceae977d3ea397fd021313843a42c04b78e0afd78d4c7bc74cea05164d32c7", + "src/render/pooled-billboards.ts": "d1c464831c1fd01aa84ffa6df7fbbc6be4e79f531bc3298ae4789b7b106ad8d6", + "src/render/postprocessing.ts": "8f936d1f491017dca11395b152975ca37436fdca87aec7065d1184baa6497114", + "src/render/quality.ts": "e1838f64933721a9296583c4f989f231a69487aa5c4d4069309ed2c7ed9e1e64", + "src/render/scale.ts": "06d35ea9a15dbb0ca54255127604269e3ce486ec003ff9ac0794cf5057f0156d", + "src/render/shapes.ts": "57cc819b78b2a60dfa179c96f2d687e567739976dae77ab1b901d4ff26fa2449", + "src/render/sky.ts": "72cd7aa1f69dec93ee28d90cb9db7456d21e9a609bbd56404fae7e0361930c22", + "src/render/town-schematic.ts": "a34724a0fa2ed6b68db6341bacde10ed7ac1adfdd08cf9a9e548a27fe1388aa5", + "src/render/town.ts": "995bf31adc90b71db423dc0dc6b6a29c8b8953d374a2e293eb2778447b51969a", + "src/render/townMaterials.ts": "f9c6f139af337816f7eb1867d57e50dd5f6083378a5329fcb5ea12cb672a7c72", + "src/render/vehicles.ts": "6825d96f5b3fc0776ca7ebed933f41a61d7bfeb7e1cbdc69f7f835b227877576", + "src/render/worldEnvironment.ts": "11017185cfa345fffe309ed60e7b2f7dc9bc8948508ab22e6b895fd854926a57", + "src/scenes/Play.ts": "da5321f476fac50d0dd6c5f0111976827d8bc830b6f50f1dbcaddeef4a1bca0a", + "src/state.ts": "fe3aa819af214f8e97a703f4bad84b35b948c344920a1fe3e63864969378c3dd", + "src/style.css": "b7248576b175b133423f5152686da27467f42f4e170a74228c7a3a1425992bae", + "src/surfaces.ts": "5711274cd2269baeb3b7053894946e306d091f516517b1d26de7f74c36b7e747", + "src/ui/App.tsx": "06b349cffb954556236dcdccc3140bb54186ef8f7711617daa91f29bf9935c89", + "src/ui/Crosshair.tsx": "02c5d8e185c0a9a5a64d4e91fa90a53c166201b05d95ac3a595c1cf5da8703bb", + "src/ui/GameUi.tsx": "2cbcdc8383803eb219670b7d3d29500bcff37c307f3fefbf4f2f75bfea8cf1a0", + "src/ui/Hud.tsx": "b6a84cd0811b0b55040a5026c23bd8009ac87be2bfbc29f7b3491ae8ccafe52f", + "src/ui/Minimap.tsx": "6af9ef0ae1510ef0e9a0b923186430f92e1eeff5de89af87888d28ac0aca0df7", + "src/ui/TouchOverlay.tsx": "1857d989e2c51d422902a87ae1cfbea1da5d8c7237604d6155790edc9497f944", + "src/ui/main.tsx": "bfad2dbf1461f09e160f64ce7789cab7777396995b326abf591a2ae6acfe7b69" + }, + "dist": { + "dist/assets/DRACOLoader-DcgK70pb.js": "81fd3473c9d519fbf90aeffb90ad206788fdfe17f12d9895513b5d0f63d4e8ea", + "dist/assets/DRACOLoader-DcgK70pb.js.br": "3995d3dedb7193f1892c2be5f173585804f742968c8400bfa18def5b24fbb97d", + "dist/assets/DRACOLoader-DcgK70pb.js.gz": "c5e9b825a6f476f4b09b4c2987a23333b4c157b71143171abc5a5f639c483eae", + "dist/assets/GLTFLoader-BN5pDBxR.js": "7c5a93f615d1e56ebb260153779161c66ed234bb395b2816f334aaebaa41ac0f", + "dist/assets/GLTFLoader-BN5pDBxR.js.br": "2c872125e4d1d0064ab50905afe866ac3145abc84f6ebc2c4b63864a9331276f", + "dist/assets/GLTFLoader-BN5pDBxR.js.gz": "6c5ce7e58b6da5309350c1f8e9928332a9908e141ddc6a6a23d7fd29561e05e9", + "dist/assets/KTX2Loader-BKA9FnF4.js": "df2895f58f9d676eb73af45807369021f3f2393d08aa18494f223534bffa0933", + "dist/assets/KTX2Loader-BKA9FnF4.js.br": "0449c167c34be81fc816c324e2ec827507d5b68d8fadbb34c96041b6aa4e8ffb", + "dist/assets/KTX2Loader-BKA9FnF4.js.gz": "e44e8567e6b3f365b416091fdb73da05ecf67489a25959af8dce71e2bae3e9a0", + "dist/assets/index-C7HJRl70.css": "b3845917a30bd9b0ce39a0a18508a7687bb95746714de89e6c42f389bc42085e", + "dist/assets/index-C7HJRl70.css.br": "39b2ac847c8fc4f9ef6ecab3fedf1b880d429f0dfc9ec85b9e0a0c314a95a487", + "dist/assets/index-C7HJRl70.css.gz": "569f7372057006c23c3f5b9db83457565e9bff4e172a075f16c65850ab16d793", + "dist/assets/index-DamU8x11.js": "fbcb6edbdbb3b0b165ef6ecb97b349cea559e25734891068a1d4885d446ab7dc", + "dist/assets/index-DamU8x11.js.br": "ffd075bf517e0e72981996943fd418954e559a30f6304a0778300992a6c1a536", + "dist/assets/index-DamU8x11.js.gz": "b181c239c186a72984c138b666c77dfe332b6a758d1d990f87877010e471b3b8", + "dist/assets/meshopt_decoder.module-DXTYc6wn.js": "6bf68170d437477fb3411dfb24339df33257d69a4322c3907e14af33cff083c7", + "dist/assets/meshopt_decoder.module-DXTYc6wn.js.br": "b266a2f59fc0d4b0bc89707fc2c9b9fd2941d4ef42c76301488299de0f374b46", + "dist/assets/meshopt_decoder.module-DXTYc6wn.js.gz": "68e3867e131e5df061123b46e8f4eee3e798def0c5b87adc7d0d3858a3caeaf1", + "dist/assets/three.core-C4c1cNCm.js": "a95cddd48670b89b53e1dd316196cb3a0ce511c832e27a1144ea081ae84f8fb1", + "dist/assets/three.core-C4c1cNCm.js.br": "d4dce68aaa0db2726e3efbd99d7275c29c24a873ed0dee770e68de9ba03970d5", + "dist/assets/three.core-C4c1cNCm.js.gz": "327140382a7bc8b37a33786bc5ae814b383996503893a74d0b4939788e621117", + "dist/assets/three.module-C3lD2tUQ.js": "456fca0dcc0c990e9946991e708cc0747fe9f65668598b7d13854674c870f3eb", + "dist/assets/three.module-C3lD2tUQ.js.br": "1ea4e9c50fedf69e49e0952456c143596b18e544779ac6e53136822430d01d10", + "dist/assets/three.module-C3lD2tUQ.js.gz": "cb56d50774feebdb95a8279c0bbc66cc94adcbe6b960e405e27e33bcfc1bd11e", + "dist/assets.manifest.json": "9b0d834ce5e610150ba9913d58e61f5e0621c3a478d8cf70b098536de3507d5a", + "dist/assets.manifest.json.br": "ee18c16e693f188fbdf2caa13906c1ed392140ebe6519ea2e618cc1545e1fbda", + "dist/assets.manifest.json.gz": "9b66eb38e01e9010139b8f56829e18ee7de689362c54982a6aabe01a1b8a9313", + "dist/bake.receipt.json": "9f20a8cf476f00fb24fa5f71aeb08591dd7ed0763bbaadc6f8823a2f2a53febd", + "dist/bake.receipt.json.br": "2584947e58a485fc30bdf3f71fe87ece72c22fdf880caa841a0acc0f49fe28f6", + "dist/bake.receipt.json.gz": "27a197b2d5c15c021ed401adc0c67c5067327cfe79e60e7031ea929c541b20dc", + "dist/basis/basis_transcoder.js": "8478b5b6d6b74e7d3082b89f6417321d8d1dc0307f2b30d4484bb11b441696a1", + "dist/basis/basis_transcoder.js.br": "87efa81dbc0147b1ce0ec8539d5dafd477ad1faf77dec5dfac3afec4adcc722b", + "dist/basis/basis_transcoder.js.gz": "f7226c0b679e03d17995681f38848ca1ecc83f8800699b5cd8f715b33b778dd9", + "dist/basis/basis_transcoder.wasm": "6cf17dc889352c42e9acf8897107978d127005fe3386c36a0e3845e27967630a", + "dist/basis/basis_transcoder.wasm.br": "0f04439c0cbadc9473cb2c113781ee5f38f94a470b4b35b55d84549ce3eb506a", + "dist/basis/basis_transcoder.wasm.gz": "205391fc77f8d94df7aa2b57084fefc490e6abe39c863a26388f8c43d948cb6c", + "dist/favicon.svg": "49f166c4b2b4796be291a782b9c4c567feb11a718b79c39e6df164655cf38f25", + "dist/icon.png": "e6284520e340124d9300889add523251d93705457e7cd8c2d6e05aebd7ed04b7", + "dist/index.html": "5101da1ef03af2ad630c5d84fdf2620054a430cc26719a8a7330579e2f3f7a86", + "dist/manifest.webmanifest": "068a005271fc30b281006bd4d9e676d03789e1a71be3d84b5ee6936d7cb06f0b", + "dist/mannequin-combat.fe514710.glb": "a79378f9862108fca6a977801ce9db16c1f6fe907794d5267b2dc65f09a45823", + "dist/player-viewmodel.dc09c545.glb": "f76a73edc8341d1d5c41c3af51920fbe30494933d87758d7e4d8d83dee7d3556", + "dist/shared/images/025bfeeed32055f1.none.png": "b3b0f7376bbae7bdb56fc22af27e80afbf2e394afecc9610fac3b56d76a816d1", + "dist/shared/images/180a4672d2fb7cf6.etc1s.ktx2": "c26af0b2734328c4758f2e0bbd3de408fbc9d21acbac129cbcdf4d23c3323bd8", + "dist/shared/images/1b211cd5aaf69751.none.jpg": "4ab9c716ed2df301f9ac36e6dfc66b7f3c7e05668fe8bad716be651fc8198fe8", + "dist/shared/images/2bcf108dcd467775.etc1s.ktx2": "e3191efc2fc7d9cd2629645a1d61d9815f58dd7aca96d08214fc577b0b8e140d", + "dist/shared/images/33d4b714973d9063.none.jpg": "d1cabac983deeb2273e513281a1b39751fa29bb68562c3d0367d7b59aeff37f5", + "dist/shared/images/3b14e1c9099ee6f1.none.jpg": "989488b3e0e3a294fc2ef809c6551f8294314e94d42e975ad242d0055264f865", + "dist/shared/images/403ff0ad912b483b.none.jpg": "605f7adee67889d62d68fc0d09942da5cf773177646cc963c4c8fb3de030fbbb", + "dist/shared/images/44ecaa5be101b00b.etc1s.ktx2": "8a310bb9a36f8920b0a86ee297385b09e3c09d772664415c31396c442e3bc96e", + "dist/shared/images/68264455dbaa31ef.none.jpg": "46c2fd794b5a270525d6862b85ac562704d32eb8a58f6a05f2550aba89a4e7ba", + "dist/shared/images/7a2778e86d1c0b88.etc1s.ktx2": "8dcea39039f11f4b5e3da7d726ca342fcd0884644d2716fcd11103250dab686c", + "dist/shared/images/931bd58f1fa4ee01.none.jpg": "ff2ff99151e6a790c2b967631e698ca24f5fa3f604492199bae8771f797ba7b1", + "dist/shared/images/94923e8655cfb48d.none.jpg": "cbf196a0752156a58451f2478be9844c830b7a04375b3267577b8294628a0056", + "dist/shared/images/9cca6ccabb26e170.none.jpg": "30c7cbab0defdbfba13e65b3c47bd92cd23553959edc39c7a845394f048698d5", + "dist/shared/images/a5e59c8e78230cf0.etc1s.ktx2": "4fa7b70fcf2a6a907bc786fc01d64cfaf2bfaae7d158c2cc122a56f11f4e30f6", + "dist/shared/images/c6076cf549fcdfbe.etc1s.ktx2": "bffd3b499654ded356dfd4d40334bdd462590b46cd9cc0628c6b01f45946791b", + "dist/shared/images/d632eac4b35a44ad.none.jpg": "da481ac6220587e8d306b6bce5c062015e5923c1e5f9768ee52f730398217f1f", + "dist/sky.0913654f.jpg": "c1e616ec08d7132f09dd5ce46b780d63934c0df5043ab81d7eeaf16f309c9cc5" + }, + "scenario": "d48fb11263343891eae53d1da926c350397578f29637e079cebd3f4e0aaad552" + } +] \ No newline at end of file diff --git a/docs/benchmark/prd345/shooter-causes1/contact.png b/docs/benchmark/prd345/shooter-causes1/contact.png new file mode 100644 index 0000000000..7616e463b8 Binary files /dev/null and b/docs/benchmark/prd345/shooter-causes1/contact.png differ diff --git a/docs/benchmark/prd345/shooter-causes1/images/1-1-current-after.png b/docs/benchmark/prd345/shooter-causes1/images/1-1-current-after.png new file mode 100644 index 0000000000..6fd0680576 Binary files /dev/null and b/docs/benchmark/prd345/shooter-causes1/images/1-1-current-after.png differ diff --git a/docs/benchmark/prd345/shooter-causes1/images/1-1-current-performance.png b/docs/benchmark/prd345/shooter-causes1/images/1-1-current-performance.png new file mode 100644 index 0000000000..6fd0680576 Binary files /dev/null and b/docs/benchmark/prd345/shooter-causes1/images/1-1-current-performance.png differ diff --git a/docs/benchmark/prd345/shooter-causes1/images/1-6-shared-graph-after.png b/docs/benchmark/prd345/shooter-causes1/images/1-6-shared-graph-after.png new file mode 100644 index 0000000000..a21159e16d Binary files /dev/null and b/docs/benchmark/prd345/shooter-causes1/images/1-6-shared-graph-after.png differ diff --git a/docs/benchmark/prd345/shooter-causes1/images/1-6-shared-graph-performance.png b/docs/benchmark/prd345/shooter-causes1/images/1-6-shared-graph-performance.png new file mode 100644 index 0000000000..a21159e16d Binary files /dev/null and b/docs/benchmark/prd345/shooter-causes1/images/1-6-shared-graph-performance.png differ diff --git a/docs/benchmark/prd345/shooter-causes1/images/2-1-current-after.png b/docs/benchmark/prd345/shooter-causes1/images/2-1-current-after.png new file mode 100644 index 0000000000..b589a53223 Binary files /dev/null and b/docs/benchmark/prd345/shooter-causes1/images/2-1-current-after.png differ diff --git a/docs/benchmark/prd345/shooter-causes1/images/2-1-current-performance.png b/docs/benchmark/prd345/shooter-causes1/images/2-1-current-performance.png new file mode 100644 index 0000000000..b589a53223 Binary files /dev/null and b/docs/benchmark/prd345/shooter-causes1/images/2-1-current-performance.png differ diff --git a/docs/benchmark/prd345/shooter-causes1/images/2-2-shared-graph-after.png b/docs/benchmark/prd345/shooter-causes1/images/2-2-shared-graph-after.png new file mode 100644 index 0000000000..40c951fbb2 Binary files /dev/null and b/docs/benchmark/prd345/shooter-causes1/images/2-2-shared-graph-after.png differ diff --git a/docs/benchmark/prd345/shooter-causes1/images/2-2-shared-graph-performance.png b/docs/benchmark/prd345/shooter-causes1/images/2-2-shared-graph-performance.png new file mode 100644 index 0000000000..40c951fbb2 Binary files /dev/null and b/docs/benchmark/prd345/shooter-causes1/images/2-2-shared-graph-performance.png differ diff --git a/docs/benchmark/prd345/shooter-causes1/images/3-1-current-after.png b/docs/benchmark/prd345/shooter-causes1/images/3-1-current-after.png new file mode 100644 index 0000000000..d40ca955fb Binary files /dev/null and b/docs/benchmark/prd345/shooter-causes1/images/3-1-current-after.png differ diff --git a/docs/benchmark/prd345/shooter-causes1/images/3-1-current-performance.png b/docs/benchmark/prd345/shooter-causes1/images/3-1-current-performance.png new file mode 100644 index 0000000000..d40ca955fb Binary files /dev/null and b/docs/benchmark/prd345/shooter-causes1/images/3-1-current-performance.png differ diff --git a/docs/benchmark/prd345/shooter-causes1/images/3-4-shared-graph-after.png b/docs/benchmark/prd345/shooter-causes1/images/3-4-shared-graph-after.png new file mode 100644 index 0000000000..cad6d09780 Binary files /dev/null and b/docs/benchmark/prd345/shooter-causes1/images/3-4-shared-graph-after.png differ diff --git a/docs/benchmark/prd345/shooter-causes1/images/3-4-shared-graph-performance.png b/docs/benchmark/prd345/shooter-causes1/images/3-4-shared-graph-performance.png new file mode 100644 index 0000000000..cad6d09780 Binary files /dev/null and b/docs/benchmark/prd345/shooter-causes1/images/3-4-shared-graph-performance.png differ diff --git a/docs/benchmark/prd345/shooter-causes1/lease-global-lease.mts b/docs/benchmark/prd345/shooter-causes1/lease-global-lease.mts new file mode 100644 index 0000000000..3a72c1ab0a --- /dev/null +++ b/docs/benchmark/prd345/shooter-causes1/lease-global-lease.mts @@ -0,0 +1,57 @@ +import {spawn} from 'node:child_process'; +import {readdir,readFile} from 'node:fs/promises'; +import {pathToFileURL} from 'node:url'; +import {acquireCaptureLock,CaptureLockTimeoutError,formatLockTimeoutLine} from '/home/joao/projects/threenative/threenative-engine/.worktrees/prd-345-backlight-defaults/packages/playtest/src/runner/captureLock.ts'; +async function ownedGroupRunning(group:number){ + for(const name of await readdir('/proc')){ + if(!/^\d+$/.test(name))continue; + try{const stat=await readFile('/proc/'+name+'/stat','utf8');const fields=stat.slice(stat.lastIndexOf(')')+2).split(' ');if(Number(fields[2])===group&&fields[0]!=='Z'&&fields[0]!=='X')return true}catch(error){if(!['ENOENT','ESRCH'].includes((error as NodeJS.ErrnoException).code??''))throw error} + } + return false; +} +async function awaitOwnedGroup(group:number){ + const deadline=Date.now()+10000; + while(await ownedGroupRunning(group)){ + if(Date.now()>deadline)throw Error('Owned child group did not settle; shared lease cannot be released safely.'); + await new Promise(resolve=>setTimeout(resolve,50)); + } +} +export async function runWithGlobalLease(command:string,args:string[],options:{lockRoot?:string;temporaryDirectory:string;timeoutMs?:number}){ + let child:ReturnType|undefined;let cancelled:NodeJS.Signals|undefined;let escalation:ReturnType|undefined; + const signal=(received:NodeJS.Signals)=>{ + cancelled=received; + if(child?.pid){ + try{process.kill(-child.pid,received)}catch(error){if((error as NodeJS.ErrnoException).code!=='ESRCH')throw error} + escalation??=setTimeout(()=>{if(child?.pid)try{process.kill(-child.pid,'SIGKILL')}catch(error){if((error as NodeJS.ErrnoException).code!=='ESRCH')throw error}},5000); + } + }; + const interrupt=()=>signal('SIGINT');const terminate=()=>signal('SIGTERM'); + process.on('SIGINT',interrupt);process.on('SIGTERM',terminate); + let lease:Awaited>|undefined; + let code=1;let survivingDescendants=false; + try{ + lease=await acquireCaptureLock({lockRoot:options.lockRoot??'/tmp/threenative-playtest-capture',timeoutMs:options.timeoutMs??120000,command:['PRD345 outer shared lease',command,...args].join(' '),onState:state=>console.log(JSON.stringify({outerCaptureLock:{root:options.lockRoot??'/tmp/threenative-playtest-capture',pid:process.pid,...state}}))}); + if(!cancelled){ + child=spawn(command,args,{detached:true,stdio:'inherit',env:{...process.env,TMPDIR:options.temporaryDirectory,CAPTURE_LOCK:'1'}}); + const outcome=await new Promise<{code:number|null;signal:NodeJS.Signals|null}>((resolve,reject)=>{child!.once('error',reject);child!.once('exit',(code,signal)=>resolve({code,signal}))}); + code=outcome.code??1; + } + }finally{ + if(child?.pid){ + if(!cancelled&&await ownedGroupRunning(child.pid)){ + survivingDescendants=true; + console.error(JSON.stringify({code:'OWNED_DESCENDANTS_SURVIVED',group:child.pid,message:'Child exited while its owned descendants remained; cleaning group before lease release.'})); + signal('SIGTERM'); + } + await awaitOwnedGroup(child.pid); + } + if(escalation)clearTimeout(escalation); + await lease?.release(); + process.off('SIGINT',interrupt);process.off('SIGTERM',terminate); + } + return survivingDescendants?1:cancelled?(cancelled==='SIGINT'?130:143):code; +} +if(process.argv[1]&&import.meta.url===pathToFileURL(process.argv[1]).href){ + const [command,...args]=process.argv.slice(2);if(!command)throw Error('Expected child command'); + try{process.exitCode=await runWithGlobalLease(command,args,{temporaryDirectory:process.env.TN_PRD345_CHILD_TMPDIR??'/tmp/p345bt'});}catch(error){if(error instanceof CaptureLockTimeoutError){console.error(formatLockTimeoutLine(error));process.exitCode=75}else throw error} +} diff --git a/docs/benchmark/prd345/shooter-causes1/manifest.json b/docs/benchmark/prd345/shooter-causes1/manifest.json new file mode 100644 index 0000000000..d4e1d7abaa --- /dev/null +++ b/docs/benchmark/prd345/shooter-causes1/manifest.json @@ -0,0 +1,425 @@ +{ + "reports": [ + { + "file": "reports/1-1-current-report.json.gz", + "rawBytes": 1469804, + "rawSha256": "53f0346d3e473e546bb7ea29072dfc164ad626e373ef1f2ea4194f7ca32eddbc", + "gzBytes": 110852, + "gzSha256": "e9f17d1f5e96ac46eb735f2767a552e09d043cbfea8d5c433e62c88c806b3d98" + }, + { + "file": "reports/1-2-runtime-zero-report.json.gz", + "rawBytes": 1521698, + "rawSha256": "1526144716554f7fc7b0374919b3bb59216cc206a5f7685716965c360cee0ece", + "gzBytes": 111432, + "gzSha256": "83a01cac136814cf6e9dff6e23a6c8c3fdb7f0990f0e4bc3fedc12294eaf6c37" + }, + { + "file": "reports/1-3-copy-only-report.json.gz", + "rawBytes": 1631532, + "rawSha256": "fbaabfd1ac9e45fdc5dbf91e0de45ddfdf2a44af0cd300d442898df12a11ea54", + "gzBytes": 112274, + "gzSha256": "ec1136c47fa57e39b12164c826309829d21ffac9d178990b5c0c330b60bf4ddc" + }, + { + "file": "reports/1-4-material-emissive-report.json.gz", + "rawBytes": 1656354, + "rawSha256": "ba523d51763b3bb405de0aa90a32bcc4a4b093e2b13a748e1ac01202569b25fa", + "gzBytes": 112361, + "gzSha256": "8486ecd8e9cf76f99ae50cd44c9c42b90e9a82394f5353f46d0500c551ff62e9" + }, + { + "file": "reports/1-5-compiled-rim-only-report.json.gz", + "rawBytes": 1555852, + "rawSha256": "6768fba7f09c7df610cd614720ebe645bf1676e6b72a17908162a1a1edb50b93", + "gzBytes": 112310, + "gzSha256": "5818e4a715ebd100f8d1fd3f8fae6056490c649a0dd84cef86483dbce1419348" + }, + { + "file": "reports/1-6-shared-graph-report.json.gz", + "rawBytes": 1562733, + "rawSha256": "6cca23a71ac619b475bc459aabc2eb0e600db7c500588ff42395c605dcf149cc", + "gzBytes": 111262, + "gzSha256": "1e1a928a2cb132f73db6b3a4d9ff54e6c4188d5c1bacde24db1b97052e510dd7" + }, + { + "file": "reports/1-7-current-report.json.gz", + "rawBytes": 1489615, + "rawSha256": "cc019114f31dd8fb26f05cb70a2a300df25c5464c701c7c896b106d71cfdbdd8", + "gzBytes": 111381, + "gzSha256": "708a5c2acfe0e3249128a7f33fdb2979b0d56514508db5170782ab2e26c1cc2c" + }, + { + "file": "reports/2-1-current-report.json.gz", + "rawBytes": 1493228, + "rawSha256": "f4fc09440572fca6890128519a56db2a04b456dac3afeedce246bf27c3ab2a0a", + "gzBytes": 111050, + "gzSha256": "bfebe7bacce86c1007761c9acb6f657a9530e1dc6f3a02bc27fc1795af1a9a02" + }, + { + "file": "reports/2-2-shared-graph-report.json.gz", + "rawBytes": 1588460, + "rawSha256": "ec4dc67d2fbf993a9b0251cc6b4dac200a921afbcef32d9c01703f4a3fbaefcb", + "gzBytes": 111795, + "gzSha256": "25ebbf443f75e06222397c458255e17d866fa81d91d17f014a03d4acead12954" + }, + { + "file": "reports/2-3-compiled-rim-only-report.json.gz", + "rawBytes": 1526437, + "rawSha256": "3616daef6fa7f9f56d263a1708406627c1ceb773521bda0488f2e707f843a7e4", + "gzBytes": 111723, + "gzSha256": "b196ac5c04acca67e161c1660a200db71a7da88004b89d87ec080ba252e7301b" + }, + { + "file": "reports/2-4-material-emissive-report.json.gz", + "rawBytes": 1653015, + "rawSha256": "3a18301c1b6db730f78a58dfbbc0ee8d9f3a2e6ea4f7d031e732048dbe868c80", + "gzBytes": 112206, + "gzSha256": "de01eaf38bf7dc7eb447311ea2d0fe7923d6bae011bb2440efc49f50b8128e0b" + }, + { + "file": "reports/2-5-copy-only-report.json.gz", + "rawBytes": 1568228, + "rawSha256": "a467341498cc9c6e34e15c9121483d2397610b971d6e06837382b1c2d78e6bfd", + "gzBytes": 111415, + "gzSha256": "767d78b2c929b677987f0cdad8b395503791750be57ff7af141488acdd28f8d5" + }, + { + "file": "reports/2-6-runtime-zero-report.json.gz", + "rawBytes": 1440714, + "rawSha256": "77495abb4201348a9e6121e2608ccd3303ce04b841deef99691c365cb2c240c5", + "gzBytes": 110395, + "gzSha256": "cbbd9fde74320488b693355fcbcc72ed80c6d078ef211fee0df1ffd91b967004" + }, + { + "file": "reports/2-7-current-report.json.gz", + "rawBytes": 1470616, + "rawSha256": "3dae36009d8cf5d29056c2dea95e91a27d5dbcf22da39880a41970fab695033a", + "gzBytes": 110872, + "gzSha256": "7a1ae30165cabf6a953e66467f8e12b550dc4a47e390bbd087d20af9d9d0bc13" + }, + { + "file": "reports/3-1-current-report.json.gz", + "rawBytes": 1503888, + "rawSha256": "2d9238241cdcb50dd117926ea3191876728dd1ff8b92398abfe2ae55f9a37119", + "gzBytes": 111077, + "gzSha256": "94c684c8e126cdf32c0efbcf627203b1df1c183cca3456aac57db93d0ffd08e8" + }, + { + "file": "reports/3-2-material-emissive-report.json.gz", + "rawBytes": 1620673, + "rawSha256": "ab66260c79d7e50acb94163a44296641c2df7b318d1524203fc0083624a411ac", + "gzBytes": 112129, + "gzSha256": "17622ffdfc8997a0b1bd7d28059a3f4822a9f6c7a75856c2e6bf9caa560990ff" + }, + { + "file": "reports/3-3-compiled-rim-only-report.json.gz", + "rawBytes": 1498350, + "rawSha256": "0f13bb6b785db69215386f600ff49e93ef7f1fa25d4a6c902ce8229df38c3df1", + "gzBytes": 111073, + "gzSha256": "0f3e8333d946ec389dc97bf60c7bea02946cc81f1e440f79cc8b2f52ca339735" + }, + { + "file": "reports/3-4-shared-graph-report.json.gz", + "rawBytes": 1568781, + "rawSha256": "843e67f32707b29628bbbb0ac5fff8d9c43892aa237ea81893fab1661eb44769", + "gzBytes": 111520, + "gzSha256": "2919a45c29a20ae05c6a89014b56b583a0e4819da873a7ca8fd83a967215a404" + }, + { + "file": "reports/3-5-runtime-zero-report.json.gz", + "rawBytes": 1490997, + "rawSha256": "f4baa6f7a1cd5d18da6c99e0ad2851dc7118bdf03b18aaefeb8a7797767c109e", + "gzBytes": 111005, + "gzSha256": "bbeeacc37faa73e743a425f01511a037bae8fd83a8a53bbc0395ae00632dc458" + }, + { + "file": "reports/3-6-copy-only-report.json.gz", + "rawBytes": 1579685, + "rawSha256": "73bce5f7cb711d110bfb4b4ec05efb85061c24c02e58c6168f9a99db580d9718", + "gzBytes": 111567, + "gzSha256": "91e437dfa8e9f666cc475489cef191e5bb5b578becbbb7aa38f1405e727a5e20" + }, + { + "file": "reports/3-7-current-report.json.gz", + "rawBytes": 1542581, + "rawSha256": "af7498fba6e8afe1ccda5ad631c6ac482bd9b9035b757d4189b70e5dca3706a1", + "gzBytes": 111709, + "gzSha256": "3239820a32e96a3b75ecb0cdd3d70fa45979f69958659d7eab88f879e53da1ed" + } + ], + "pngs": [ + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-1-1-current/after.png", + "sha256": "99618e371432bb285920d0921459105b4a0db5e3bd84248ba31d0f016bd007ed", + "bytes": 1595751 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-1-1-current/performance.png", + "sha256": "99618e371432bb285920d0921459105b4a0db5e3bd84248ba31d0f016bd007ed", + "bytes": 1595751 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-1-2-runtime-zero/after.png", + "sha256": "e692fbb2b9702d2e04d38bb9ad9627c2007805644e578ef1b1a5924820833f39", + "bytes": 1602199 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-1-2-runtime-zero/performance.png", + "sha256": "e692fbb2b9702d2e04d38bb9ad9627c2007805644e578ef1b1a5924820833f39", + "bytes": 1602199 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-1-3-copy-only/after.png", + "sha256": "e07ecdabf722661fe7857805bcf062e68bc8dcdca047f604440c53582a08e039", + "bytes": 1600731 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-1-3-copy-only/performance.png", + "sha256": "e07ecdabf722661fe7857805bcf062e68bc8dcdca047f604440c53582a08e039", + "bytes": 1600731 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-1-4-material-emissive/after.png", + "sha256": "717afa1b4007a887bd49081a31b99234dca953f9a78485d2813f0bdd782ad07a", + "bytes": 1595727 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-1-4-material-emissive/performance.png", + "sha256": "717afa1b4007a887bd49081a31b99234dca953f9a78485d2813f0bdd782ad07a", + "bytes": 1595727 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-1-5-compiled-rim-only/after.png", + "sha256": "66a5669f7bd147c9afd595e6a6e88b8f91def768b42d18a3fe48392c76bc46cf", + "bytes": 1601644 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-1-5-compiled-rim-only/performance.png", + "sha256": "66a5669f7bd147c9afd595e6a6e88b8f91def768b42d18a3fe48392c76bc46cf", + "bytes": 1601644 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-1-6-shared-graph/after.png", + "sha256": "c7f022c78e219c1fafe844075761f9e00d0c42cb0fdb450e008bf2741dd760b9", + "bytes": 1594736 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-1-6-shared-graph/performance.png", + "sha256": "c7f022c78e219c1fafe844075761f9e00d0c42cb0fdb450e008bf2741dd760b9", + "bytes": 1594736 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-1-7-current/after.png", + "sha256": "4d73f058cd8928e019c18556c37a789313b75f2509354cf2240094dcdf18b912", + "bytes": 1595101 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-1-7-current/performance.png", + "sha256": "4d73f058cd8928e019c18556c37a789313b75f2509354cf2240094dcdf18b912", + "bytes": 1595101 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-2-1-current/after.png", + "sha256": "78c94c366ab1e71ce3711dcdbdeba5a50fa3205b74faa9cdc0c4485707f6b4e3", + "bytes": 1598860 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-2-1-current/performance.png", + "sha256": "78c94c366ab1e71ce3711dcdbdeba5a50fa3205b74faa9cdc0c4485707f6b4e3", + "bytes": 1598860 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-2-2-shared-graph/after.png", + "sha256": "588026182efb61e969f3af7277125a0f4c417ced723cd55a7795403bae9c4e68", + "bytes": 1601502 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-2-2-shared-graph/performance.png", + "sha256": "588026182efb61e969f3af7277125a0f4c417ced723cd55a7795403bae9c4e68", + "bytes": 1601502 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-2-3-compiled-rim-only/after.png", + "sha256": "a04223b2d219ce50bd9ece7950ca5c067f7fdafb6c2abbf0eb832af2e541e712", + "bytes": 1600183 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-2-3-compiled-rim-only/performance.png", + "sha256": "a04223b2d219ce50bd9ece7950ca5c067f7fdafb6c2abbf0eb832af2e541e712", + "bytes": 1600183 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-2-4-material-emissive/after.png", + "sha256": "677af73f4cd889edc7715dad1c5403e22c84a56fc45ab762709cab2ace8c12d6", + "bytes": 1597565 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-2-4-material-emissive/performance.png", + "sha256": "677af73f4cd889edc7715dad1c5403e22c84a56fc45ab762709cab2ace8c12d6", + "bytes": 1597565 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-2-5-copy-only/after.png", + "sha256": "733eee9be89ce2772cc5c176f3357ec89cbf7d85e4eef9eb13eae114889db7d7", + "bytes": 1596519 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-2-5-copy-only/performance.png", + "sha256": "733eee9be89ce2772cc5c176f3357ec89cbf7d85e4eef9eb13eae114889db7d7", + "bytes": 1596519 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-2-6-runtime-zero/after.png", + "sha256": "2ae92437ac2c95803dc479e28a33471dc7a882910dfa6d3a2a7771e79845cc86", + "bytes": 1597275 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-2-6-runtime-zero/performance.png", + "sha256": "2ae92437ac2c95803dc479e28a33471dc7a882910dfa6d3a2a7771e79845cc86", + "bytes": 1597275 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-2-7-current/after.png", + "sha256": "5e0a8a3eceadb97a709be51da4ee4da5a314e1935e871ce6d2f84db703d8751d", + "bytes": 1597542 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-2-7-current/performance.png", + "sha256": "5e0a8a3eceadb97a709be51da4ee4da5a314e1935e871ce6d2f84db703d8751d", + "bytes": 1597542 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-3-1-current/after.png", + "sha256": "dda1f4072e3c9bbdf4ebadca06cc6281035ccbfb930d42a2c39a50d336229513", + "bytes": 1598688 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-3-1-current/performance.png", + "sha256": "dda1f4072e3c9bbdf4ebadca06cc6281035ccbfb930d42a2c39a50d336229513", + "bytes": 1598688 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-3-2-material-emissive/after.png", + "sha256": "b4b3485964a36e939fd0e302dd4bebdd1c3f0abd3e317b50e88e8b66f53f7a4d", + "bytes": 1597561 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-3-2-material-emissive/performance.png", + "sha256": "b4b3485964a36e939fd0e302dd4bebdd1c3f0abd3e317b50e88e8b66f53f7a4d", + "bytes": 1597561 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-3-3-compiled-rim-only/after.png", + "sha256": "2c179fc168e7bd3d0c569f634121f0c00dad011418716fae9ddb18c95cf5116a", + "bytes": 1598158 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-3-3-compiled-rim-only/performance.png", + "sha256": "2c179fc168e7bd3d0c569f634121f0c00dad011418716fae9ddb18c95cf5116a", + "bytes": 1598158 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-3-4-shared-graph/after.png", + "sha256": "91b6fef4d5795cd9b5501a7c73c359ea623f1293262ad4ccd33b025f80a205f0", + "bytes": 1599483 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-3-4-shared-graph/performance.png", + "sha256": "91b6fef4d5795cd9b5501a7c73c359ea623f1293262ad4ccd33b025f80a205f0", + "bytes": 1599483 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-3-5-runtime-zero/after.png", + "sha256": "4281572e9ba99fd5ab65709fa37feb6b58a26f05b840e678925f3d49a004e578", + "bytes": 1599834 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-3-5-runtime-zero/performance.png", + "sha256": "4281572e9ba99fd5ab65709fa37feb6b58a26f05b840e678925f3d49a004e578", + "bytes": 1599834 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-3-6-copy-only/after.png", + "sha256": "28669f8e317dbd802c31b8b4e7874f97bc8aab6c5b4aa00a0dc957b3021b7560", + "bytes": 1596959 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-3-6-copy-only/performance.png", + "sha256": "28669f8e317dbd802c31b8b4e7874f97bc8aab6c5b4aa00a0dc957b3021b7560", + "bytes": 1596959 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-3-7-current/after.png", + "sha256": "39477133863838f194160c79e413a7b2f36ab026199ad217f58f87a8b676baf5", + "bytes": 1603116 + }, + { + "originalRetainedPath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-3-7-current/performance.png", + "sha256": "39477133863838f194160c79e413a7b2f36ab026199ad217f58f87a8b676baf5", + "bytes": 1603116 + } + ], + "selected": [ + { + "file": "images/1-1-current-after.png", + "source": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-1-1-current/after.png", + "sha256": "99618e371432bb285920d0921459105b4a0db5e3bd84248ba31d0f016bd007ed" + }, + { + "file": "images/1-1-current-performance.png", + "source": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-1-1-current/performance.png", + "sha256": "99618e371432bb285920d0921459105b4a0db5e3bd84248ba31d0f016bd007ed" + }, + { + "file": "images/1-6-shared-graph-after.png", + "source": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-1-6-shared-graph/after.png", + "sha256": "c7f022c78e219c1fafe844075761f9e00d0c42cb0fdb450e008bf2741dd760b9" + }, + { + "file": "images/1-6-shared-graph-performance.png", + "source": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-1-6-shared-graph/performance.png", + "sha256": "c7f022c78e219c1fafe844075761f9e00d0c42cb0fdb450e008bf2741dd760b9" + }, + { + "file": "images/2-1-current-after.png", + "source": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-2-1-current/after.png", + "sha256": "78c94c366ab1e71ce3711dcdbdeba5a50fa3205b74faa9cdc0c4485707f6b4e3" + }, + { + "file": "images/2-1-current-performance.png", + "source": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-2-1-current/performance.png", + "sha256": "78c94c366ab1e71ce3711dcdbdeba5a50fa3205b74faa9cdc0c4485707f6b4e3" + }, + { + "file": "images/2-2-shared-graph-after.png", + "source": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-2-2-shared-graph/after.png", + "sha256": "588026182efb61e969f3af7277125a0f4c417ced723cd55a7795403bae9c4e68" + }, + { + "file": "images/2-2-shared-graph-performance.png", + "source": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-2-2-shared-graph/performance.png", + "sha256": "588026182efb61e969f3af7277125a0f4c417ced723cd55a7795403bae9c4e68" + }, + { + "file": "images/3-1-current-after.png", + "source": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-3-1-current/after.png", + "sha256": "dda1f4072e3c9bbdf4ebadca06cc6281035ccbfb930d42a2c39a50d336229513" + }, + { + "file": "images/3-1-current-performance.png", + "source": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-3-1-current/performance.png", + "sha256": "dda1f4072e3c9bbdf4ebadca06cc6281035ccbfb930d42a2c39a50d336229513" + }, + { + "file": "images/3-4-shared-graph-after.png", + "source": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-3-4-shared-graph/after.png", + "sha256": "91b6fef4d5795cd9b5501a7c73c359ea623f1293262ad4ccd33b025f80a205f0" + }, + { + "file": "images/3-4-shared-graph-performance.png", + "source": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-3-4-shared-graph/performance.png", + "sha256": "91b6fef4d5795cd9b5501a7c73c359ea623f1293262ad4ccd33b025f80a205f0" + } + ] +} \ No newline at end of file diff --git a/docs/benchmark/prd345/shooter-causes1/package-proof.json b/docs/benchmark/prd345/shooter-causes1/package-proof.json new file mode 100644 index 0000000000..d2518a6f7e --- /dev/null +++ b/docs/benchmark/prd345/shooter-causes1/package-proof.json @@ -0,0 +1,8 @@ +{ + "benchmarkTotalBytes": 92825812, + "limitBytes": 209715200, + "packageBytes": 25010988, + "reports": 21, + "pngHashes": 42, + "selectedPNGs": 12 +} \ No newline at end of file diff --git a/docs/benchmark/prd345/shooter-causes1/postintegration-plan.md b/docs/benchmark/prd345/shooter-causes1/postintegration-plan.md new file mode 100644 index 0000000000..985284746a --- /dev/null +++ b/docs/benchmark/prd345/shooter-causes1/postintegration-plan.md @@ -0,0 +1,12 @@ +Postintegration qualification plan (source preparation only; no GPU launched) + +Freeze the new runtime/archive/helper identities before collecting evidence. Use the reviewed outer lease with fixed /tmp/threenative-playtest-capture, parent TMPDIR unset, durable child TMPDIR and normal CAPTURE_LOCK=1. Build all arms before timing and retain failures. + +1. Extend an isolated copy of the existing backlight web fixture's qualification.debug producer with actual camera matrixWorld, matrixWorldInverse, projectionMatrix, render-target dimensions and fixed-step tick. Retain its existing camera position, Jog_Fwd_Loop pose, animationTicks, animationSeconds, source marker, controls and material conversion/exclusion fields. Do not change the existing edge/fill regions, minDelta, negative controls or marker checks. Take both fixed pose images for enabled, rim-zero and fill-black; retain missing-marker expected failure. +2. Add fixture-authored multi-material objects sharing controls, with distinct base colors, metalness, roughness, emissive colors/intensities and color/emissive/normal maps. Record source identities and property snapshots; borrow textures and source materials. Verify material slots and maps survive conversion, dynamic material enrolment, tier downshift/recovery and authored replacement. Pixel evidence must show the distinct objects; report raw region statistics and differences without inventing an admission threshold. +3. At a fixed pose, vary actual key intensity/color/position, ancestor visibility, scene removal and camera layers. Render two actual cameras with distinct matrices in one render cycle to exercise render-scoped callbacks. Record each actual camera matrix and resulting pixels. Never claim a single frameId memo proves multi-camera state. +4. Dispose one converted material while another sharing its graph remains attached; render the remaining object. Dispose all controller-owned conversions, restore borrowed assignments and rerun conversion with the same and fresh controls. Verify source materials/textures remain undisposed; record conversions and live updates before/after. These actions belong only to an isolated fixture, not starter production. +5. Rerun the exact unchanged shooter performance scenario at 1920x1080, warmup60 and 33ms against the frozen pre-optimization and integrated sources, bracketed controls under the fixed global lease. Record sample counts, p95, draw/triangle/fps limits and every launch, including failures. Current gameplay's performance scenario does not request camera snapshots; use a separate compatible fixed-camera witness, and keep performance scenario unchanged. +6. Preserve actual engine timestamp observations and startup timeline/warmup counts. Use the existing startup-series harness for repeated startup p95; a single shader compile/readback launch is not startup p95. Keep clock/readiness policies matched and disclose wallclock sample-count variance and uncontrolled noncooperating host activity. + +Native production admission remains conservative fallback. Experimental authored native evidence is a separate lane and cannot establish enabled default acceptance until its causal pixels and runtime provenance are reviewed. diff --git a/docs/benchmark/prd345/shooter-causes1/reports/1-1-current-report.json.gz b/docs/benchmark/prd345/shooter-causes1/reports/1-1-current-report.json.gz new file mode 100644 index 0000000000..4080799970 Binary files /dev/null and b/docs/benchmark/prd345/shooter-causes1/reports/1-1-current-report.json.gz differ diff --git a/docs/benchmark/prd345/shooter-causes1/reports/1-2-runtime-zero-report.json.gz b/docs/benchmark/prd345/shooter-causes1/reports/1-2-runtime-zero-report.json.gz new file mode 100644 index 0000000000..2d9d4689d5 Binary files /dev/null and b/docs/benchmark/prd345/shooter-causes1/reports/1-2-runtime-zero-report.json.gz differ diff --git a/docs/benchmark/prd345/shooter-causes1/reports/1-3-copy-only-report.json.gz b/docs/benchmark/prd345/shooter-causes1/reports/1-3-copy-only-report.json.gz new file mode 100644 index 0000000000..4813ee603d Binary files /dev/null and b/docs/benchmark/prd345/shooter-causes1/reports/1-3-copy-only-report.json.gz differ diff --git a/docs/benchmark/prd345/shooter-causes1/reports/1-4-material-emissive-report.json.gz b/docs/benchmark/prd345/shooter-causes1/reports/1-4-material-emissive-report.json.gz new file mode 100644 index 0000000000..ad04ecfaaf Binary files /dev/null and b/docs/benchmark/prd345/shooter-causes1/reports/1-4-material-emissive-report.json.gz differ diff --git a/docs/benchmark/prd345/shooter-causes1/reports/1-5-compiled-rim-only-report.json.gz b/docs/benchmark/prd345/shooter-causes1/reports/1-5-compiled-rim-only-report.json.gz new file mode 100644 index 0000000000..a6790cd75a Binary files /dev/null and b/docs/benchmark/prd345/shooter-causes1/reports/1-5-compiled-rim-only-report.json.gz differ diff --git a/docs/benchmark/prd345/shooter-causes1/reports/1-6-shared-graph-report.json.gz b/docs/benchmark/prd345/shooter-causes1/reports/1-6-shared-graph-report.json.gz new file mode 100644 index 0000000000..fb34542bfd Binary files /dev/null and b/docs/benchmark/prd345/shooter-causes1/reports/1-6-shared-graph-report.json.gz differ diff --git a/docs/benchmark/prd345/shooter-causes1/reports/1-7-current-report.json.gz b/docs/benchmark/prd345/shooter-causes1/reports/1-7-current-report.json.gz new file mode 100644 index 0000000000..ea93deafc6 Binary files /dev/null and b/docs/benchmark/prd345/shooter-causes1/reports/1-7-current-report.json.gz differ diff --git a/docs/benchmark/prd345/shooter-causes1/reports/2-1-current-report.json.gz b/docs/benchmark/prd345/shooter-causes1/reports/2-1-current-report.json.gz new file mode 100644 index 0000000000..4d631b0f10 Binary files /dev/null and b/docs/benchmark/prd345/shooter-causes1/reports/2-1-current-report.json.gz differ diff --git a/docs/benchmark/prd345/shooter-causes1/reports/2-2-shared-graph-report.json.gz b/docs/benchmark/prd345/shooter-causes1/reports/2-2-shared-graph-report.json.gz new file mode 100644 index 0000000000..bf7eddb229 Binary files /dev/null and b/docs/benchmark/prd345/shooter-causes1/reports/2-2-shared-graph-report.json.gz differ diff --git a/docs/benchmark/prd345/shooter-causes1/reports/2-3-compiled-rim-only-report.json.gz b/docs/benchmark/prd345/shooter-causes1/reports/2-3-compiled-rim-only-report.json.gz new file mode 100644 index 0000000000..f681c47bca Binary files /dev/null and b/docs/benchmark/prd345/shooter-causes1/reports/2-3-compiled-rim-only-report.json.gz differ diff --git a/docs/benchmark/prd345/shooter-causes1/reports/2-4-material-emissive-report.json.gz b/docs/benchmark/prd345/shooter-causes1/reports/2-4-material-emissive-report.json.gz new file mode 100644 index 0000000000..fb12d18205 Binary files /dev/null and b/docs/benchmark/prd345/shooter-causes1/reports/2-4-material-emissive-report.json.gz differ diff --git a/docs/benchmark/prd345/shooter-causes1/reports/2-5-copy-only-report.json.gz b/docs/benchmark/prd345/shooter-causes1/reports/2-5-copy-only-report.json.gz new file mode 100644 index 0000000000..1556dec936 Binary files /dev/null and b/docs/benchmark/prd345/shooter-causes1/reports/2-5-copy-only-report.json.gz differ diff --git a/docs/benchmark/prd345/shooter-causes1/reports/2-6-runtime-zero-report.json.gz b/docs/benchmark/prd345/shooter-causes1/reports/2-6-runtime-zero-report.json.gz new file mode 100644 index 0000000000..11ecf0315a Binary files /dev/null and b/docs/benchmark/prd345/shooter-causes1/reports/2-6-runtime-zero-report.json.gz differ diff --git a/docs/benchmark/prd345/shooter-causes1/reports/2-7-current-report.json.gz b/docs/benchmark/prd345/shooter-causes1/reports/2-7-current-report.json.gz new file mode 100644 index 0000000000..63cfc53cbc Binary files /dev/null and b/docs/benchmark/prd345/shooter-causes1/reports/2-7-current-report.json.gz differ diff --git a/docs/benchmark/prd345/shooter-causes1/reports/3-1-current-report.json.gz b/docs/benchmark/prd345/shooter-causes1/reports/3-1-current-report.json.gz new file mode 100644 index 0000000000..77bd69b04d Binary files /dev/null and b/docs/benchmark/prd345/shooter-causes1/reports/3-1-current-report.json.gz differ diff --git a/docs/benchmark/prd345/shooter-causes1/reports/3-2-material-emissive-report.json.gz b/docs/benchmark/prd345/shooter-causes1/reports/3-2-material-emissive-report.json.gz new file mode 100644 index 0000000000..3643fa3838 Binary files /dev/null and b/docs/benchmark/prd345/shooter-causes1/reports/3-2-material-emissive-report.json.gz differ diff --git a/docs/benchmark/prd345/shooter-causes1/reports/3-3-compiled-rim-only-report.json.gz b/docs/benchmark/prd345/shooter-causes1/reports/3-3-compiled-rim-only-report.json.gz new file mode 100644 index 0000000000..a7422ed384 Binary files /dev/null and b/docs/benchmark/prd345/shooter-causes1/reports/3-3-compiled-rim-only-report.json.gz differ diff --git a/docs/benchmark/prd345/shooter-causes1/reports/3-4-shared-graph-report.json.gz b/docs/benchmark/prd345/shooter-causes1/reports/3-4-shared-graph-report.json.gz new file mode 100644 index 0000000000..eb44187169 Binary files /dev/null and b/docs/benchmark/prd345/shooter-causes1/reports/3-4-shared-graph-report.json.gz differ diff --git a/docs/benchmark/prd345/shooter-causes1/reports/3-5-runtime-zero-report.json.gz b/docs/benchmark/prd345/shooter-causes1/reports/3-5-runtime-zero-report.json.gz new file mode 100644 index 0000000000..52bfc523d6 Binary files /dev/null and b/docs/benchmark/prd345/shooter-causes1/reports/3-5-runtime-zero-report.json.gz differ diff --git a/docs/benchmark/prd345/shooter-causes1/reports/3-6-copy-only-report.json.gz b/docs/benchmark/prd345/shooter-causes1/reports/3-6-copy-only-report.json.gz new file mode 100644 index 0000000000..c6f2e00f05 Binary files /dev/null and b/docs/benchmark/prd345/shooter-causes1/reports/3-6-copy-only-report.json.gz differ diff --git a/docs/benchmark/prd345/shooter-causes1/reports/3-7-current-report.json.gz b/docs/benchmark/prd345/shooter-causes1/reports/3-7-current-report.json.gz new file mode 100644 index 0000000000..f418c312e7 Binary files /dev/null and b/docs/benchmark/prd345/shooter-causes1/reports/3-7-current-report.json.gz differ diff --git a/docs/benchmark/prd345/shooter-causes1/results.json b/docs/benchmark/prd345/shooter-causes1/results.json new file mode 100644 index 0000000000..7cdd17a47a --- /dev/null +++ b/docs/benchmark/prd345/shooter-causes1/results.json @@ -0,0 +1,929 @@ +[ + { + "round": 1, + "position": 1, + "arm": "current", + "pass": false, + "p95": { + "actual": 48.29999999999927, + "expected": 33, + "sampleCount": 372, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [ + { + "code": "TN_PLAYTEST_PERFORMANCE_ASSERTION_FAILED", + "message": "performance.maxFrameMsP95 expected at most 33 ms, observed 48.29999999999927.", + "observedRuntimePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/current/playtests/performance.playtest.json/observations.json/performanceSeries", + "severity": "error", + "sourcePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/current/playtests/performance.playtest.json", + "suggestion": "Inspect the recorded frame-cost series and reduce the authored scene cost that owns the regression." + } + ] + }, + { + "round": 1, + "position": 2, + "arm": "runtime-zero", + "pass": false, + "p95": { + "actual": 46.099999999998545, + "expected": 33, + "sampleCount": 452, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [ + { + "code": "TN_PLAYTEST_PERFORMANCE_ASSERTION_FAILED", + "message": "performance.maxFrameMsP95 expected at most 33 ms, observed 46.099999999998545.", + "observedRuntimePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/runtime-zero/playtests/performance.playtest.json/observations.json/performanceSeries", + "severity": "error", + "sourcePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/runtime-zero/playtests/performance.playtest.json", + "suggestion": "Inspect the recorded frame-cost series and reduce the authored scene cost that owns the regression." + } + ] + }, + { + "round": 1, + "position": 3, + "arm": "copy-only", + "pass": true, + "p95": { + "actual": 29.399999999997817, + "expected": 33, + "sampleCount": 625, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [] + }, + { + "round": 1, + "position": 4, + "arm": "material-emissive", + "pass": true, + "p95": { + "actual": 28.69999999999709, + "expected": 33, + "sampleCount": 665, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [] + }, + { + "round": 1, + "position": 5, + "arm": "compiled-rim-only", + "pass": false, + "p95": { + "actual": 46.69999999999709, + "expected": 33, + "sampleCount": 502, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [ + { + "code": "TN_PLAYTEST_PERFORMANCE_ASSERTION_FAILED", + "message": "performance.maxFrameMsP95 expected at most 33 ms, observed 46.69999999999709.", + "observedRuntimePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/compiled-rim-only/playtests/performance.playtest.json/observations.json/performanceSeries", + "severity": "error", + "sourcePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/compiled-rim-only/playtests/performance.playtest.json", + "suggestion": "Inspect the recorded frame-cost series and reduce the authored scene cost that owns the regression." + } + ] + }, + { + "round": 1, + "position": 6, + "arm": "shared-graph", + "pass": true, + "p95": { + "actual": 30.30000000000291, + "expected": 33, + "sampleCount": 521, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [] + }, + { + "round": 1, + "position": 7, + "arm": "current", + "pass": false, + "p95": { + "actual": 47.5, + "expected": 33, + "sampleCount": 400, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [ + { + "code": "TN_PLAYTEST_PERFORMANCE_ASSERTION_FAILED", + "message": "performance.maxFrameMsP95 expected at most 33 ms, observed 47.5.", + "observedRuntimePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/current/playtests/performance.playtest.json/observations.json/performanceSeries", + "severity": "error", + "sourcePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/current/playtests/performance.playtest.json", + "suggestion": "Inspect the recorded frame-cost series and reduce the authored scene cost that owns the regression." + } + ] + }, + { + "round": 2, + "position": 1, + "arm": "current", + "pass": false, + "p95": { + "actual": 46.89999999999782, + "expected": 33, + "sampleCount": 406, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [ + { + "code": "TN_PLAYTEST_PERFORMANCE_ASSERTION_FAILED", + "message": "performance.maxFrameMsP95 expected at most 33 ms, observed 46.89999999999782.", + "observedRuntimePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/current/playtests/performance.playtest.json/observations.json/performanceSeries", + "severity": "error", + "sourcePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/current/playtests/performance.playtest.json", + "suggestion": "Inspect the recorded frame-cost series and reduce the authored scene cost that owns the regression." + } + ] + }, + { + "round": 2, + "position": 2, + "arm": "shared-graph", + "pass": true, + "p95": { + "actual": 30.599999999998545, + "expected": 33, + "sampleCount": 560, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [] + }, + { + "round": 2, + "position": 3, + "arm": "compiled-rim-only", + "pass": false, + "p95": { + "actual": 45.30000000000291, + "expected": 33, + "sampleCount": 458, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [ + { + "code": "TN_PLAYTEST_PERFORMANCE_ASSERTION_FAILED", + "message": "performance.maxFrameMsP95 expected at most 33 ms, observed 45.30000000000291.", + "observedRuntimePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/compiled-rim-only/playtests/performance.playtest.json/observations.json/performanceSeries", + "severity": "error", + "sourcePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/compiled-rim-only/playtests/performance.playtest.json", + "suggestion": "Inspect the recorded frame-cost series and reduce the authored scene cost that owns the regression." + } + ] + }, + { + "round": 2, + "position": 4, + "arm": "material-emissive", + "pass": true, + "p95": { + "actual": 28.099999999998545, + "expected": 33, + "sampleCount": 659, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [] + }, + { + "round": 2, + "position": 5, + "arm": "copy-only", + "pass": true, + "p95": { + "actual": 30.599999999998545, + "expected": 33, + "sampleCount": 531, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [] + }, + { + "round": 2, + "position": 6, + "arm": "runtime-zero", + "pass": false, + "p95": { + "actual": 62.70000000000073, + "expected": 33, + "sampleCount": 327, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [ + { + "code": "TN_PLAYTEST_PERFORMANCE_ASSERTION_FAILED", + "message": "performance.maxFrameMsP95 expected at most 33 ms, observed 62.70000000000073.", + "observedRuntimePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/runtime-zero/playtests/performance.playtest.json/observations.json/performanceSeries", + "severity": "error", + "sourcePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/runtime-zero/playtests/performance.playtest.json", + "suggestion": "Inspect the recorded frame-cost series and reduce the authored scene cost that owns the regression." + } + ] + }, + { + "round": 2, + "position": 7, + "arm": "current", + "pass": false, + "p95": { + "actual": 50.79999999999927, + "expected": 33, + "sampleCount": 376, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [ + { + "code": "TN_PLAYTEST_PERFORMANCE_ASSERTION_FAILED", + "message": "performance.maxFrameMsP95 expected at most 33 ms, observed 50.79999999999927.", + "observedRuntimePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/current/playtests/performance.playtest.json/observations.json/performanceSeries", + "severity": "error", + "sourcePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/current/playtests/performance.playtest.json", + "suggestion": "Inspect the recorded frame-cost series and reduce the authored scene cost that owns the regression." + } + ] + }, + { + "round": 3, + "position": 1, + "arm": "current", + "pass": false, + "p95": { + "actual": 45.89999999999782, + "expected": 33, + "sampleCount": 426, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [ + { + "code": "TN_PLAYTEST_PERFORMANCE_ASSERTION_FAILED", + "message": "performance.maxFrameMsP95 expected at most 33 ms, observed 45.89999999999782.", + "observedRuntimePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/current/playtests/performance.playtest.json/observations.json/performanceSeries", + "severity": "error", + "sourcePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/current/playtests/performance.playtest.json", + "suggestion": "Inspect the recorded frame-cost series and reduce the authored scene cost that owns the regression." + } + ] + }, + { + "round": 3, + "position": 2, + "arm": "material-emissive", + "pass": true, + "p95": { + "actual": 29.899999999997817, + "expected": 33, + "sampleCount": 609, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [] + }, + { + "round": 3, + "position": 3, + "arm": "compiled-rim-only", + "pass": false, + "p95": { + "actual": 45.599999999998545, + "expected": 33, + "sampleCount": 414, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [ + { + "code": "TN_PLAYTEST_PERFORMANCE_ASSERTION_FAILED", + "message": "performance.maxFrameMsP95 expected at most 33 ms, observed 45.599999999998545.", + "observedRuntimePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/compiled-rim-only/playtests/performance.playtest.json/observations.json/performanceSeries", + "severity": "error", + "sourcePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/compiled-rim-only/playtests/performance.playtest.json", + "suggestion": "Inspect the recorded frame-cost series and reduce the authored scene cost that owns the regression." + } + ] + }, + { + "round": 3, + "position": 4, + "arm": "shared-graph", + "pass": true, + "p95": { + "actual": 30.399999999997817, + "expected": 33, + "sampleCount": 527, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [] + }, + { + "round": 3, + "position": 5, + "arm": "runtime-zero", + "pass": false, + "p95": { + "actual": 46.10000000000218, + "expected": 33, + "sampleCount": 399, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [ + { + "code": "TN_PLAYTEST_PERFORMANCE_ASSERTION_FAILED", + "message": "performance.maxFrameMsP95 expected at most 33 ms, observed 46.10000000000218.", + "observedRuntimePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/runtime-zero/playtests/performance.playtest.json/observations.json/performanceSeries", + "severity": "error", + "sourcePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/runtime-zero/playtests/performance.playtest.json", + "suggestion": "Inspect the recorded frame-cost series and reduce the authored scene cost that owns the regression." + } + ] + }, + { + "round": 3, + "position": 6, + "arm": "copy-only", + "pass": true, + "p95": { + "actual": 28.099999999998545, + "expected": 33, + "sampleCount": 541, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [] + }, + { + "round": 3, + "position": 7, + "arm": "current", + "pass": false, + "p95": { + "actual": 42.20000000000073, + "expected": 33, + "sampleCount": 478, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [ + { + "code": "TN_PLAYTEST_PERFORMANCE_ASSERTION_FAILED", + "message": "performance.maxFrameMsP95 expected at most 33 ms, observed 42.20000000000073.", + "observedRuntimePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/current/playtests/performance.playtest.json/observations.json/performanceSeries", + "severity": "error", + "sourcePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/current/playtests/performance.playtest.json", + "suggestion": "Inspect the recorded frame-cost series and reduce the authored scene cost that owns the regression." + } + ] + } +] \ No newline at end of file diff --git a/docs/benchmark/prd345/shooter-causes1/shared-holder-start.json b/docs/benchmark/prd345/shooter-causes1/shared-holder-start.json new file mode 100644 index 0000000000..3200e504ae --- /dev/null +++ b/docs/benchmark/prd345/shooter-causes1/shared-holder-start.json @@ -0,0 +1 @@ +{"command":"PRD345 outer shared lease node /home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/run.mjs","pid":2521870,"startedAt":"2026-10-03T14:19:30.619Z"} diff --git a/docs/benchmark/prd345/shooter-causes1/source-proof.json b/docs/benchmark/prd345/shooter-causes1/source-proof.json new file mode 100644 index 0000000000..7160c1c5a4 --- /dev/null +++ b/docs/benchmark/prd345/shooter-causes1/source-proof.json @@ -0,0 +1,54 @@ +[ + { + "arm": "current", + "project": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/current", + "materialSha256": "149652e27c6d6ede66f110a28c7d97b458eeb9d5770b7fddec8ae6533d960c67", + "otherSourceUnchanged": true, + "scenarioUnchanged": true, + "borrowedFrozenNodeModules": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/gameplay5/projects/shooter/node_modules" + }, + { + "arm": "runtime-zero", + "project": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/runtime-zero", + "materialSha256": "366f1b28456aace8f9d096d74772166bc41b141c6ee2f94129b6d8d0d9a021f8", + "otherSourceUnchanged": true, + "scenarioUnchanged": true, + "borrowedFrozenNodeModules": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/gameplay5/projects/shooter/node_modules" + }, + { + "arm": "copy-only", + "project": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/copy-only", + "materialSha256": "3397d1e3930200f30acc63788f8d2a7ee5649f48a4a77452a7b251a34a34fa13", + "otherSourceUnchanged": true, + "scenarioUnchanged": true, + "borrowedFrozenNodeModules": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/gameplay5/projects/shooter/node_modules" + }, + { + "arm": "material-emissive", + "project": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/material-emissive", + "materialSha256": "d1102b1dfbdcc277a39d59196429d0d0771ecc0a76535f6305dbebceec01c4f5", + "otherSourceUnchanged": true, + "scenarioUnchanged": true, + "borrowedFrozenNodeModules": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/gameplay5/projects/shooter/node_modules" + }, + { + "arm": "compiled-rim-only", + "project": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/compiled-rim-only", + "materialSha256": "a2972789d74f196f0aeb2fe9860cf64597f033f6d7280e73faa33aa4d8f8fcfe", + "otherSourceUnchanged": true, + "scenarioUnchanged": true, + "borrowedFrozenNodeModules": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/gameplay5/projects/shooter/node_modules" + }, + { + "arm": "shared-graph", + "project": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/shared-graph", + "materialSha256": "4ab922b740fa53c57f5130c36d651a63dbc8b5d399a1a50cb8277a204efdeaed", + "candidateSource": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/performance-optimization/backlightMaterial.ts", + "otherSourceUnchanged": true, + "scenarioUnchanged": true, + "candidateFiles": { + "backlightMaterial.ts": "4ab922b740fa53c57f5130c36d651a63dbc8b5d399a1a50cb8277a204efdeaed", + "backlightControls.ts": "955c67c8f77130c7af85709a80a957c80b67d05282b286adf2e1b2dcaf9dc6d3" + } + } +] \ No newline at end of file diff --git a/docs/benchmark/prd345/shooter-causes1/sources/compiled-rim-only-backlightMaterial.ts b/docs/benchmark/prd345/shooter-causes1/sources/compiled-rim-only-backlightMaterial.ts new file mode 100644 index 0000000000..fa4932e7a5 --- /dev/null +++ b/docs/benchmark/prd345/shooter-causes1/sources/compiled-rim-only-backlightMaterial.ts @@ -0,0 +1,145 @@ +// Generated for you. Ordinary Three.js; controls belong to your game. +import { + type Camera, + type Color, + type DirectionalLight, + Material, + type MeshStandardMaterial, + type Object3D, + type Scene, + Vector3, +} from "three"; +import { + cameraViewMatrix, + clamp, + dot, + float, + materialColor, + materialEmissive, + materialMetalness, + materialRoughness, + max, + mix, + normalView, + positionViewDirection, + pow, + reflect, + smoothstep, + uniform, + vec3, +} from "three/tsl"; +import { MeshStandardNodeMaterial } from "three/webgpu"; + +export interface IBacklightControls { + readonly key: DirectionalLight; + readonly scene: Scene; + readonly camera: Camera; + /** Mutable game-owned controls: zero disables the rim, independent of source reporting. */ + rimGain: number; + fillGain: number; + readonly fillColor: Color; + readonly fillDirection: Vector3; + /** Angular radius of the authored fill disc, in radians. */ + fillAngularSize: number; + /** Caller admits fill only after a measured-dark or missing environment is qualified. */ + fillAdmitted: boolean; +} + +function validateControls(controls: IBacklightControls) { + if ( + !Number.isFinite(controls.rimGain) || + controls.rimGain < 0 || + !Number.isFinite(controls.key.intensity) || + controls.key.intensity < 0 || + !controls.key.color.toArray().every((value) => Number.isFinite(value) && value >= 0) || + !Number.isFinite(controls.fillGain) || + controls.fillGain < 0 || + !Number.isFinite(controls.fillAngularSize) || + controls.fillAngularSize <= 0 || + controls.fillAngularSize > 1.5 || + !Number.isFinite(controls.fillDirection.lengthSq()) || + controls.fillDirection.lengthSq() === 0 || + !controls.fillColor.toArray().every((value) => Number.isFinite(value) && value >= 0) + ) + throw new Error( + "Backlight controls require finite nonnegative gains, a direction and angular size in (0, 1.5].", + ); +} +function resolveKey(controls: IBacklightControls, direction: Vector3, target: Vector3) { + validateControls(controls); + // Read the renderer/game-updated matrices, as upstream Three light uniforms do. + // Targets outside the scene must be updated by their owner before rendering. + // Never mutate shared light/ancestor matrices inside a material render callback. + target.setFromMatrixPosition(controls.key.target.matrixWorld); + direction.setFromMatrixPosition(controls.key.matrixWorld).sub(target); + if (!direction.toArray().every(Number.isFinite)) throw new Error("Key endpoints must be finite."); + const lengthSq = direction.lengthSq(); + if (!Number.isFinite(lengthSq)) throw new Error("Key direction magnitude must be finite."); + if (lengthSq <= 1e-12) { + direction.set(0, 1, 0); + return 0; + } + direction.normalize(); + if (!controls.key.layers.test(controls.camera.layers)) return 0; + let current: Object3D | null = controls.key; + while (current !== null) { + if (!current.visible) return 0; + if (current === controls.scene) return controls.key.intensity; + current = current.parent; + } + return 0; +} + +/** + * Preserve the upstream standard PBR/normal/skinning paths and original material emissive. + * This is an additive artistic convention, not a physical subsurface model or IBL replacement. + * Cache at the caller to preserve shared source-material relationships; dispose only conversions + * it owns, never maps/source materials borrowed from a loaded model. + */ +export function backlightMaterial(source: MeshStandardMaterial, controls: IBacklightControls) { + if ( + ("isMeshPhysicalMaterial" in source && source.isMeshPhysicalMaterial === true) || + source.onBeforeCompile !== Material.prototype.onBeforeCompile + ) + throw new Error( + "Physical/custom standard materials require separate qualification; conversion refused.", + ); + validateControls(controls); + const material = new MeshStandardNodeMaterial().copy(source); + const rimGain = uniform(controls.rimGain).onRenderUpdate(() => { + validateControls(controls); + return controls.rimGain; + }); + const keyColor = uniform(controls.key.color).onRenderUpdate(() => { + validateControls(controls); + return controls.key.color; + }); + const keyDirectionValue = new Vector3(0, 1, 0); + const keyTargetValue = new Vector3(); + const keyDirection = uniform(keyDirectionValue).onRenderUpdate(() => { + resolveKey(controls, keyDirectionValue, keyTargetValue); + return keyDirectionValue; + }); + // Removal/visibility/intensity are live. A removed sun cannot leave an invented rim behind. + const keyGain = uniform(0).onRenderUpdate(() => + resolveKey(controls, keyDirectionValue, keyTargetValue), + ); + const N = normalView.normalize(); + const V = positionViewDirection.normalize(); + const L = cameraViewMatrix.transformDirection(keyDirection); + const grazing = pow(float(1).sub(clamp(dot(N, V), 0, 1)), 3); + const behind = max(dot(L, V).negate(), 0); + // Suppress broad surfaces already facing the key; back-facing edges retain wrap. + // Tint by base reflectance so dark surfaces do not inherit a white emissive wash. + const surfaceBacklit = float(1).sub(smoothstep(-0.15, 0.15, dot(N, L))); + const rim = keyColor + .mul(keyGain) + .mul(rimGain) + .mul(grazing) + .mul(behind) + .mul(surfaceBacklit) + .mul(clamp(materialColor, 0, 1)); + + material.emissiveNode = materialEmissive.add(rim); + return material; +} diff --git a/docs/benchmark/prd345/shooter-causes1/sources/copy-only-backlightMaterial.ts b/docs/benchmark/prd345/shooter-causes1/sources/copy-only-backlightMaterial.ts new file mode 100644 index 0000000000..c88ded1e9d --- /dev/null +++ b/docs/benchmark/prd345/shooter-causes1/sources/copy-only-backlightMaterial.ts @@ -0,0 +1,110 @@ +// Generated for you. Ordinary Three.js; controls belong to your game. +import { + type Camera, + type Color, + type DirectionalLight, + Material, + type MeshStandardMaterial, + type Object3D, + type Scene, + Vector3, +} from "three"; +import { + cameraViewMatrix, + clamp, + dot, + float, + materialColor, + materialEmissive, + materialMetalness, + materialRoughness, + max, + mix, + normalView, + positionViewDirection, + pow, + reflect, + smoothstep, + uniform, + vec3, +} from "three/tsl"; +import { MeshStandardNodeMaterial } from "three/webgpu"; + +export interface IBacklightControls { + readonly key: DirectionalLight; + readonly scene: Scene; + readonly camera: Camera; + /** Mutable game-owned controls: zero disables the rim, independent of source reporting. */ + rimGain: number; + fillGain: number; + readonly fillColor: Color; + readonly fillDirection: Vector3; + /** Angular radius of the authored fill disc, in radians. */ + fillAngularSize: number; + /** Caller admits fill only after a measured-dark or missing environment is qualified. */ + fillAdmitted: boolean; +} + +function validateControls(controls: IBacklightControls) { + if ( + !Number.isFinite(controls.rimGain) || + controls.rimGain < 0 || + !Number.isFinite(controls.key.intensity) || + controls.key.intensity < 0 || + !controls.key.color.toArray().every((value) => Number.isFinite(value) && value >= 0) || + !Number.isFinite(controls.fillGain) || + controls.fillGain < 0 || + !Number.isFinite(controls.fillAngularSize) || + controls.fillAngularSize <= 0 || + controls.fillAngularSize > 1.5 || + !Number.isFinite(controls.fillDirection.lengthSq()) || + controls.fillDirection.lengthSq() === 0 || + !controls.fillColor.toArray().every((value) => Number.isFinite(value) && value >= 0) + ) + throw new Error( + "Backlight controls require finite nonnegative gains, a direction and angular size in (0, 1.5].", + ); +} +function resolveKey(controls: IBacklightControls, direction: Vector3, target: Vector3) { + validateControls(controls); + // Read the renderer/game-updated matrices, as upstream Three light uniforms do. + // Targets outside the scene must be updated by their owner before rendering. + // Never mutate shared light/ancestor matrices inside a material render callback. + target.setFromMatrixPosition(controls.key.target.matrixWorld); + direction.setFromMatrixPosition(controls.key.matrixWorld).sub(target); + if (!direction.toArray().every(Number.isFinite)) throw new Error("Key endpoints must be finite."); + const lengthSq = direction.lengthSq(); + if (!Number.isFinite(lengthSq)) throw new Error("Key direction magnitude must be finite."); + if (lengthSq <= 1e-12) { + direction.set(0, 1, 0); + return 0; + } + direction.normalize(); + if (!controls.key.layers.test(controls.camera.layers)) return 0; + let current: Object3D | null = controls.key; + while (current !== null) { + if (!current.visible) return 0; + if (current === controls.scene) return controls.key.intensity; + current = current.parent; + } + return 0; +} + +/** + * Preserve the upstream standard PBR/normal/skinning paths and original material emissive. + * This is an additive artistic convention, not a physical subsurface model or IBL replacement. + * Cache at the caller to preserve shared source-material relationships; dispose only conversions + * it owns, never maps/source materials borrowed from a loaded model. + */ +export function backlightMaterial(source: MeshStandardMaterial, controls: IBacklightControls) { + if ( + ("isMeshPhysicalMaterial" in source && source.isMeshPhysicalMaterial === true) || + source.onBeforeCompile !== Material.prototype.onBeforeCompile + ) + throw new Error( + "Physical/custom standard materials require separate qualification; conversion refused.", + ); + validateControls(controls); + const material = new MeshStandardNodeMaterial().copy(source); + return material; +} diff --git a/docs/benchmark/prd345/shooter-causes1/sources/current-backlightMaterial.ts b/docs/benchmark/prd345/shooter-causes1/sources/current-backlightMaterial.ts new file mode 100644 index 0000000000..4c8584f7b6 --- /dev/null +++ b/docs/benchmark/prd345/shooter-causes1/sources/current-backlightMaterial.ts @@ -0,0 +1,178 @@ +// Generated for you. Ordinary Three.js; controls belong to your game. +import { + type Camera, + type Color, + type DirectionalLight, + Material, + type MeshStandardMaterial, + type Object3D, + type Scene, + Vector3, +} from "three"; +import { + cameraViewMatrix, + clamp, + dot, + float, + materialColor, + materialEmissive, + materialMetalness, + materialRoughness, + max, + mix, + normalView, + positionViewDirection, + pow, + reflect, + smoothstep, + uniform, + vec3, +} from "three/tsl"; +import { MeshStandardNodeMaterial } from "three/webgpu"; + +export interface IBacklightControls { + readonly key: DirectionalLight; + readonly scene: Scene; + readonly camera: Camera; + /** Mutable game-owned controls: zero disables the rim, independent of source reporting. */ + rimGain: number; + fillGain: number; + readonly fillColor: Color; + readonly fillDirection: Vector3; + /** Angular radius of the authored fill disc, in radians. */ + fillAngularSize: number; + /** Caller admits fill only after a measured-dark or missing environment is qualified. */ + fillAdmitted: boolean; +} + +function validateControls(controls: IBacklightControls) { + if ( + !Number.isFinite(controls.rimGain) || + controls.rimGain < 0 || + !Number.isFinite(controls.key.intensity) || + controls.key.intensity < 0 || + !controls.key.color.toArray().every((value) => Number.isFinite(value) && value >= 0) || + !Number.isFinite(controls.fillGain) || + controls.fillGain < 0 || + !Number.isFinite(controls.fillAngularSize) || + controls.fillAngularSize <= 0 || + controls.fillAngularSize > 1.5 || + !Number.isFinite(controls.fillDirection.lengthSq()) || + controls.fillDirection.lengthSq() === 0 || + !controls.fillColor.toArray().every((value) => Number.isFinite(value) && value >= 0) + ) + throw new Error( + "Backlight controls require finite nonnegative gains, a direction and angular size in (0, 1.5].", + ); +} +function resolveKey(controls: IBacklightControls, direction: Vector3, target: Vector3) { + validateControls(controls); + // Read the renderer/game-updated matrices, as upstream Three light uniforms do. + // Targets outside the scene must be updated by their owner before rendering. + // Never mutate shared light/ancestor matrices inside a material render callback. + target.setFromMatrixPosition(controls.key.target.matrixWorld); + direction.setFromMatrixPosition(controls.key.matrixWorld).sub(target); + if (!direction.toArray().every(Number.isFinite)) throw new Error("Key endpoints must be finite."); + const lengthSq = direction.lengthSq(); + if (!Number.isFinite(lengthSq)) throw new Error("Key direction magnitude must be finite."); + if (lengthSq <= 1e-12) { + direction.set(0, 1, 0); + return 0; + } + direction.normalize(); + if (!controls.key.layers.test(controls.camera.layers)) return 0; + let current: Object3D | null = controls.key; + while (current !== null) { + if (!current.visible) return 0; + if (current === controls.scene) return controls.key.intensity; + current = current.parent; + } + return 0; +} + +/** + * Preserve the upstream standard PBR/normal/skinning paths and original material emissive. + * This is an additive artistic convention, not a physical subsurface model or IBL replacement. + * Cache at the caller to preserve shared source-material relationships; dispose only conversions + * it owns, never maps/source materials borrowed from a loaded model. + */ +export function backlightMaterial(source: MeshStandardMaterial, controls: IBacklightControls) { + if ( + ("isMeshPhysicalMaterial" in source && source.isMeshPhysicalMaterial === true) || + source.onBeforeCompile !== Material.prototype.onBeforeCompile + ) + throw new Error( + "Physical/custom standard materials require separate qualification; conversion refused.", + ); + validateControls(controls); + const material = new MeshStandardNodeMaterial().copy(source); + const rimGain = uniform(controls.rimGain).onRenderUpdate(() => { + validateControls(controls); + return controls.rimGain; + }); + const fillGain = uniform(0).onRenderUpdate(() => { + validateControls(controls); + return controls.fillAdmitted ? controls.fillGain : 0; + }); + const fillColor = uniform(controls.fillColor).onRenderUpdate(() => { + validateControls(controls); + return controls.fillColor; + }); + const fillDirection = uniform(controls.fillDirection).onRenderUpdate(() => { + validateControls(controls); + return controls.fillDirection; + }); + const fillAngularSize = uniform(controls.fillAngularSize).onRenderUpdate(() => { + validateControls(controls); + return controls.fillAngularSize; + }); + const keyColor = uniform(controls.key.color).onRenderUpdate(() => { + validateControls(controls); + return controls.key.color; + }); + const keyDirectionValue = new Vector3(0, 1, 0); + const keyTargetValue = new Vector3(); + const keyDirection = uniform(keyDirectionValue).onRenderUpdate(() => { + resolveKey(controls, keyDirectionValue, keyTargetValue); + return keyDirectionValue; + }); + // Removal/visibility/intensity are live. A removed sun cannot leave an invented rim behind. + const keyGain = uniform(0).onRenderUpdate(() => + resolveKey(controls, keyDirectionValue, keyTargetValue), + ); + const N = normalView.normalize(); + const V = positionViewDirection.normalize(); + const L = cameraViewMatrix.transformDirection(keyDirection); + const grazing = pow(float(1).sub(clamp(dot(N, V), 0, 1)), 3); + const behind = max(dot(L, V).negate(), 0); + // Suppress broad surfaces already facing the key; back-facing edges retain wrap. + // Tint by base reflectance so dark surfaces do not inherit a white emissive wash. + const surfaceBacklit = float(1).sub(smoothstep(-0.15, 0.15, dot(N, L))); + const rim = keyColor + .mul(keyGain) + .mul(rimGain) + .mul(grazing) + .mul(behind) + .mul(surfaceBacklit) + .mul(clamp(materialColor, 0, 1)); + + const F = cameraViewMatrix.transformDirection(fillDirection.normalize()); + const cosRadius = fillAngularSize.cos(); + // Broaden a rough surface's reflected disc with approximate solid-angle attenuation, + // not a proven energy-conserving BRDF. A positive transition avoids equal smoothstep bounds. + const spread = fillAngularSize.add(max(materialRoughness.mul(1.2), 0.005)).min(Math.PI / 2); + const reflectedDisc = smoothstep(spread.cos(), cosRadius, dot(reflect(V.negate(), N), F)); + const energy = float(1) + .sub(cosRadius) + .div(max(float(1).sub(spread.cos()), 0.0001)); + const reflectance = mix(vec3(0.04), materialColor, materialMetalness); + const specularFill = reflectance.mul(reflectedDisc).mul(energy); + const diffuseFill = materialColor + .mul(float(1).sub(materialMetalness)) + .mul(max(dot(N, F), 0)) + .mul(float(1).sub(cosRadius)) + .mul(2); + const fill = diffuseFill.add(specularFill).mul(fillColor).mul(fillGain); + material.emissiveNode = materialEmissive.add(rim).add(fill); + return material; +} diff --git a/docs/benchmark/prd345/shooter-causes1/sources/material-emissive-backlightMaterial.ts b/docs/benchmark/prd345/shooter-causes1/sources/material-emissive-backlightMaterial.ts new file mode 100644 index 0000000000..bf063e3fa0 --- /dev/null +++ b/docs/benchmark/prd345/shooter-causes1/sources/material-emissive-backlightMaterial.ts @@ -0,0 +1,111 @@ +// Generated for you. Ordinary Three.js; controls belong to your game. +import { + type Camera, + type Color, + type DirectionalLight, + Material, + type MeshStandardMaterial, + type Object3D, + type Scene, + Vector3, +} from "three"; +import { + cameraViewMatrix, + clamp, + dot, + float, + materialColor, + materialEmissive, + materialMetalness, + materialRoughness, + max, + mix, + normalView, + positionViewDirection, + pow, + reflect, + smoothstep, + uniform, + vec3, +} from "three/tsl"; +import { MeshStandardNodeMaterial } from "three/webgpu"; + +export interface IBacklightControls { + readonly key: DirectionalLight; + readonly scene: Scene; + readonly camera: Camera; + /** Mutable game-owned controls: zero disables the rim, independent of source reporting. */ + rimGain: number; + fillGain: number; + readonly fillColor: Color; + readonly fillDirection: Vector3; + /** Angular radius of the authored fill disc, in radians. */ + fillAngularSize: number; + /** Caller admits fill only after a measured-dark or missing environment is qualified. */ + fillAdmitted: boolean; +} + +function validateControls(controls: IBacklightControls) { + if ( + !Number.isFinite(controls.rimGain) || + controls.rimGain < 0 || + !Number.isFinite(controls.key.intensity) || + controls.key.intensity < 0 || + !controls.key.color.toArray().every((value) => Number.isFinite(value) && value >= 0) || + !Number.isFinite(controls.fillGain) || + controls.fillGain < 0 || + !Number.isFinite(controls.fillAngularSize) || + controls.fillAngularSize <= 0 || + controls.fillAngularSize > 1.5 || + !Number.isFinite(controls.fillDirection.lengthSq()) || + controls.fillDirection.lengthSq() === 0 || + !controls.fillColor.toArray().every((value) => Number.isFinite(value) && value >= 0) + ) + throw new Error( + "Backlight controls require finite nonnegative gains, a direction and angular size in (0, 1.5].", + ); +} +function resolveKey(controls: IBacklightControls, direction: Vector3, target: Vector3) { + validateControls(controls); + // Read the renderer/game-updated matrices, as upstream Three light uniforms do. + // Targets outside the scene must be updated by their owner before rendering. + // Never mutate shared light/ancestor matrices inside a material render callback. + target.setFromMatrixPosition(controls.key.target.matrixWorld); + direction.setFromMatrixPosition(controls.key.matrixWorld).sub(target); + if (!direction.toArray().every(Number.isFinite)) throw new Error("Key endpoints must be finite."); + const lengthSq = direction.lengthSq(); + if (!Number.isFinite(lengthSq)) throw new Error("Key direction magnitude must be finite."); + if (lengthSq <= 1e-12) { + direction.set(0, 1, 0); + return 0; + } + direction.normalize(); + if (!controls.key.layers.test(controls.camera.layers)) return 0; + let current: Object3D | null = controls.key; + while (current !== null) { + if (!current.visible) return 0; + if (current === controls.scene) return controls.key.intensity; + current = current.parent; + } + return 0; +} + +/** + * Preserve the upstream standard PBR/normal/skinning paths and original material emissive. + * This is an additive artistic convention, not a physical subsurface model or IBL replacement. + * Cache at the caller to preserve shared source-material relationships; dispose only conversions + * it owns, never maps/source materials borrowed from a loaded model. + */ +export function backlightMaterial(source: MeshStandardMaterial, controls: IBacklightControls) { + if ( + ("isMeshPhysicalMaterial" in source && source.isMeshPhysicalMaterial === true) || + source.onBeforeCompile !== Material.prototype.onBeforeCompile + ) + throw new Error( + "Physical/custom standard materials require separate qualification; conversion refused.", + ); + validateControls(controls); + const material = new MeshStandardNodeMaterial().copy(source); + material.emissiveNode = materialEmissive; + return material; +} diff --git a/docs/benchmark/prd345/shooter-causes1/sources/runtime-zero-backlightMaterial.ts b/docs/benchmark/prd345/shooter-causes1/sources/runtime-zero-backlightMaterial.ts new file mode 100644 index 0000000000..d95c49ee3c --- /dev/null +++ b/docs/benchmark/prd345/shooter-causes1/sources/runtime-zero-backlightMaterial.ts @@ -0,0 +1,180 @@ +// Generated for you. Ordinary Three.js; controls belong to your game. +import { + type Camera, + type Color, + type DirectionalLight, + Material, + type MeshStandardMaterial, + type Object3D, + type Scene, + Vector3, +} from "three"; +import { + cameraViewMatrix, + clamp, + dot, + float, + materialColor, + materialEmissive, + materialMetalness, + materialRoughness, + max, + mix, + normalView, + positionViewDirection, + pow, + reflect, + smoothstep, + uniform, + vec3, +} from "three/tsl"; +import { MeshStandardNodeMaterial } from "three/webgpu"; + +export interface IBacklightControls { + readonly key: DirectionalLight; + readonly scene: Scene; + readonly camera: Camera; + /** Mutable game-owned controls: zero disables the rim, independent of source reporting. */ + rimGain: number; + fillGain: number; + readonly fillColor: Color; + readonly fillDirection: Vector3; + /** Angular radius of the authored fill disc, in radians. */ + fillAngularSize: number; + /** Caller admits fill only after a measured-dark or missing environment is qualified. */ + fillAdmitted: boolean; +} + +function validateControls(controls: IBacklightControls) { + if ( + !Number.isFinite(controls.rimGain) || + controls.rimGain < 0 || + !Number.isFinite(controls.key.intensity) || + controls.key.intensity < 0 || + !controls.key.color.toArray().every((value) => Number.isFinite(value) && value >= 0) || + !Number.isFinite(controls.fillGain) || + controls.fillGain < 0 || + !Number.isFinite(controls.fillAngularSize) || + controls.fillAngularSize <= 0 || + controls.fillAngularSize > 1.5 || + !Number.isFinite(controls.fillDirection.lengthSq()) || + controls.fillDirection.lengthSq() === 0 || + !controls.fillColor.toArray().every((value) => Number.isFinite(value) && value >= 0) + ) + throw new Error( + "Backlight controls require finite nonnegative gains, a direction and angular size in (0, 1.5].", + ); +} +function resolveKey(controls: IBacklightControls, direction: Vector3, target: Vector3) { + validateControls(controls); + // Read the renderer/game-updated matrices, as upstream Three light uniforms do. + // Targets outside the scene must be updated by their owner before rendering. + // Never mutate shared light/ancestor matrices inside a material render callback. + target.setFromMatrixPosition(controls.key.target.matrixWorld); + direction.setFromMatrixPosition(controls.key.matrixWorld).sub(target); + if (!direction.toArray().every(Number.isFinite)) throw new Error("Key endpoints must be finite."); + const lengthSq = direction.lengthSq(); + if (!Number.isFinite(lengthSq)) throw new Error("Key direction magnitude must be finite."); + if (lengthSq <= 1e-12) { + direction.set(0, 1, 0); + return 0; + } + direction.normalize(); + if (!controls.key.layers.test(controls.camera.layers)) return 0; + let current: Object3D | null = controls.key; + while (current !== null) { + if (!current.visible) return 0; + if (current === controls.scene) return controls.key.intensity; + current = current.parent; + } + return 0; +} + +/** + * Preserve the upstream standard PBR/normal/skinning paths and original material emissive. + * This is an additive artistic convention, not a physical subsurface model or IBL replacement. + * Cache at the caller to preserve shared source-material relationships; dispose only conversions + * it owns, never maps/source materials borrowed from a loaded model. + */ +export function backlightMaterial(source: MeshStandardMaterial, controls: IBacklightControls) { + if ( + ("isMeshPhysicalMaterial" in source && source.isMeshPhysicalMaterial === true) || + source.onBeforeCompile !== Material.prototype.onBeforeCompile + ) + throw new Error( + "Physical/custom standard materials require separate qualification; conversion refused.", + ); + controls.rimGain = 0; + controls.fillGain = 0; + validateControls(controls); + const material = new MeshStandardNodeMaterial().copy(source); + const rimGain = uniform(controls.rimGain).onRenderUpdate(() => { + validateControls(controls); + return controls.rimGain; + }); + const fillGain = uniform(0).onRenderUpdate(() => { + validateControls(controls); + return controls.fillAdmitted ? controls.fillGain : 0; + }); + const fillColor = uniform(controls.fillColor).onRenderUpdate(() => { + validateControls(controls); + return controls.fillColor; + }); + const fillDirection = uniform(controls.fillDirection).onRenderUpdate(() => { + validateControls(controls); + return controls.fillDirection; + }); + const fillAngularSize = uniform(controls.fillAngularSize).onRenderUpdate(() => { + validateControls(controls); + return controls.fillAngularSize; + }); + const keyColor = uniform(controls.key.color).onRenderUpdate(() => { + validateControls(controls); + return controls.key.color; + }); + const keyDirectionValue = new Vector3(0, 1, 0); + const keyTargetValue = new Vector3(); + const keyDirection = uniform(keyDirectionValue).onRenderUpdate(() => { + resolveKey(controls, keyDirectionValue, keyTargetValue); + return keyDirectionValue; + }); + // Removal/visibility/intensity are live. A removed sun cannot leave an invented rim behind. + const keyGain = uniform(0).onRenderUpdate(() => + resolveKey(controls, keyDirectionValue, keyTargetValue), + ); + const N = normalView.normalize(); + const V = positionViewDirection.normalize(); + const L = cameraViewMatrix.transformDirection(keyDirection); + const grazing = pow(float(1).sub(clamp(dot(N, V), 0, 1)), 3); + const behind = max(dot(L, V).negate(), 0); + // Suppress broad surfaces already facing the key; back-facing edges retain wrap. + // Tint by base reflectance so dark surfaces do not inherit a white emissive wash. + const surfaceBacklit = float(1).sub(smoothstep(-0.15, 0.15, dot(N, L))); + const rim = keyColor + .mul(keyGain) + .mul(rimGain) + .mul(grazing) + .mul(behind) + .mul(surfaceBacklit) + .mul(clamp(materialColor, 0, 1)); + + const F = cameraViewMatrix.transformDirection(fillDirection.normalize()); + const cosRadius = fillAngularSize.cos(); + // Broaden a rough surface's reflected disc with approximate solid-angle attenuation, + // not a proven energy-conserving BRDF. A positive transition avoids equal smoothstep bounds. + const spread = fillAngularSize.add(max(materialRoughness.mul(1.2), 0.005)).min(Math.PI / 2); + const reflectedDisc = smoothstep(spread.cos(), cosRadius, dot(reflect(V.negate(), N), F)); + const energy = float(1) + .sub(cosRadius) + .div(max(float(1).sub(spread.cos()), 0.0001)); + const reflectance = mix(vec3(0.04), materialColor, materialMetalness); + const specularFill = reflectance.mul(reflectedDisc).mul(energy); + const diffuseFill = materialColor + .mul(float(1).sub(materialMetalness)) + .mul(max(dot(N, F), 0)) + .mul(float(1).sub(cosRadius)) + .mul(2); + const fill = diffuseFill.add(specularFill).mul(fillColor).mul(fillGain); + material.emissiveNode = materialEmissive.add(rim).add(fill); + return material; +} diff --git a/docs/benchmark/prd345/shooter-causes1/sources/shared-graph-backlightControls.ts b/docs/benchmark/prd345/shooter-causes1/sources/shared-graph-backlightControls.ts new file mode 100644 index 0000000000..cb56921ec6 --- /dev/null +++ b/docs/benchmark/prd345/shooter-causes1/sources/shared-graph-backlightControls.ts @@ -0,0 +1,66 @@ +import type { Color, Object3D, Vector3 } from "three"; +import type { IBacklightControls } from "./backlightMaterial"; +function finiteColor(color: Color) { + return ( + Number.isFinite(color.r) && + color.r >= 0 && + Number.isFinite(color.g) && + color.g >= 0 && + Number.isFinite(color.b) && + color.b >= 0 + ); +} +export function validateControls(controls: IBacklightControls) { + if ( + !Number.isFinite(controls.rimGain) || + controls.rimGain < 0 || + !Number.isFinite(controls.key.intensity) || + controls.key.intensity < 0 || + !finiteColor(controls.key.color) || + !Number.isFinite(controls.fillGain) || + controls.fillGain < 0 || + !Number.isFinite(controls.fillAngularSize) || + controls.fillAngularSize <= 0 || + controls.fillAngularSize > 1.5 || + !Number.isFinite(controls.fillDirection.lengthSq()) || + controls.fillDirection.lengthSq() === 0 || + !finiteColor(controls.fillColor) + ) + throw new Error( + "Backlight controls require finite nonnegative gains, a direction and angular size in (0, 1.5].", + ); +} +export function resolveKey( + controls: IBacklightControls, + direction: Vector3, + target: Vector3, +) { + validateControls(controls); + // Read the renderer/game-updated matrices, as upstream Three light uniforms do. + // Targets outside the scene must be updated by their owner before rendering. + // Never mutate shared light/ancestor matrices inside a material render callback. + target.setFromMatrixPosition(controls.key.target.matrixWorld); + direction.setFromMatrixPosition(controls.key.matrixWorld).sub(target); + if ( + !Number.isFinite(direction.x) || + !Number.isFinite(direction.y) || + !Number.isFinite(direction.z) + ) + throw new Error("Key endpoints must be finite."); + const lengthSq = direction.lengthSq(); + if (!Number.isFinite(lengthSq)) + throw new Error("Key direction magnitude must be finite."); + if (lengthSq <= 1e-12) { + direction.set(0, 1, 0); + return 0; + } + direction.normalize(); + if (!controls.key.layers.test(controls.camera.layers)) return 0; + let current: Object3D | null = controls.key; + while (current !== null) { + if (!current.visible) return 0; + if (current === controls.scene) return controls.key.intensity; + current = current.parent; + } + return 0; +} diff --git a/docs/benchmark/prd345/shooter-causes1/sources/shared-graph-backlightMaterial.ts b/docs/benchmark/prd345/shooter-causes1/sources/shared-graph-backlightMaterial.ts new file mode 100644 index 0000000000..7776fe78fc --- /dev/null +++ b/docs/benchmark/prd345/shooter-causes1/sources/shared-graph-backlightMaterial.ts @@ -0,0 +1,160 @@ +// Generated for you. Ordinary Three.js; controls belong to your game. +import { + type Camera, + type Color, + type DirectionalLight, + Material, + type MeshStandardMaterial, + type Object3D, + type Scene, + Vector3, +} from "three"; +import { + cameraViewMatrix, + clamp, + dot, + float, + materialColor, + materialEmissive, + materialMetalness, + materialRoughness, + max, + mix, + normalView, + positionViewDirection, + pow, + reflect, + smoothstep, + uniform, + vec3, +} from "three/tsl"; +import { MeshStandardNodeMaterial } from "three/webgpu"; +import { resolveKey, validateControls } from "./backlightControls"; + +export interface IBacklightControls { + readonly key: DirectionalLight; + readonly scene: Scene; + readonly camera: Camera; + /** Mutable game-owned controls: zero disables the rim, independent of source reporting. */ + rimGain: number; + fillGain: number; + readonly fillColor: Color; + readonly fillDirection: Vector3; + /** Angular radius of the authored fill disc, in radians. */ + fillAngularSize: number; + /** Caller admits fill only after a measured-dark or missing environment is qualified. */ + fillAdmitted: boolean; +} + +const graphs = new WeakMap< + IBacklightControls, + ReturnType +>(); + +/** + * Preserve the upstream standard PBR/normal/skinning paths and original material emissive. + * This is an additive artistic convention, not a physical subsurface model or IBL replacement. + * Cache at the caller to preserve shared source-material relationships; dispose only conversions + * it owns, never maps/source materials borrowed from a loaded model. + */ +export function backlightMaterial( + source: MeshStandardMaterial, + controls: IBacklightControls, +) { + if ( + ("isMeshPhysicalMaterial" in source && + source.isMeshPhysicalMaterial === true) || + source.onBeforeCompile !== Material.prototype.onBeforeCompile + ) + throw new Error( + "Physical/custom standard materials require separate qualification; conversion refused.", + ); + validateControls(controls); + const material = new MeshStandardNodeMaterial().copy(source); + let graph = graphs.get(controls); + if (!graph) { + graph = createGraph(controls); + graphs.set(controls, graph); + } + material.emissiveNode = graph; + return material; +} + +function createGraph(controls: IBacklightControls) { + const rimGain = uniform(controls.rimGain).onRenderUpdate(() => { + validateControls(controls); + return controls.rimGain; + }); + const fillGain = uniform(0).onRenderUpdate(() => { + validateControls(controls); + return controls.fillAdmitted ? controls.fillGain : 0; + }); + const fillColor = uniform(controls.fillColor).onRenderUpdate(() => { + validateControls(controls); + return controls.fillColor; + }); + const fillDirection = uniform(controls.fillDirection).onRenderUpdate(() => { + validateControls(controls); + return controls.fillDirection; + }); + const fillAngularSize = uniform(controls.fillAngularSize).onRenderUpdate( + () => { + validateControls(controls); + return controls.fillAngularSize; + }, + ); + const keyColor = uniform(controls.key.color).onRenderUpdate(() => { + validateControls(controls); + return controls.key.color; + }); + const keyDirectionValue = new Vector3(0, 1, 0); + const keyTargetValue = new Vector3(); + const keyDirection = uniform(keyDirectionValue).onRenderUpdate(() => { + resolveKey(controls, keyDirectionValue, keyTargetValue); + return keyDirectionValue; + }); + // Removal/visibility/intensity are live. A removed sun cannot leave an invented rim behind. + const keyGain = uniform(0).onRenderUpdate(() => + resolveKey(controls, keyDirectionValue, keyTargetValue), + ); + const N = normalView.normalize(); + const V = positionViewDirection.normalize(); + const L = cameraViewMatrix.transformDirection(keyDirection); + const grazing = pow(float(1).sub(clamp(dot(N, V), 0, 1)), 3); + const behind = max(dot(L, V).negate(), 0); + // Suppress broad surfaces already facing the key; back-facing edges retain wrap. + // Tint by base reflectance so dark surfaces do not inherit a white emissive wash. + const surfaceBacklit = float(1).sub(smoothstep(-0.15, 0.15, dot(N, L))); + const rim = keyColor + .mul(keyGain) + .mul(rimGain) + .mul(grazing) + .mul(behind) + .mul(surfaceBacklit) + .mul(clamp(materialColor, 0, 1)); + + const F = cameraViewMatrix.transformDirection(fillDirection.normalize()); + const cosRadius = fillAngularSize.cos(); + // Broaden a rough surface's reflected disc with approximate solid-angle attenuation, + // not a proven energy-conserving BRDF. A positive transition avoids equal smoothstep bounds. + const spread = fillAngularSize + .add(max(materialRoughness.mul(1.2), 0.005)) + .min(Math.PI / 2); + const reflectedDisc = smoothstep( + spread.cos(), + cosRadius, + dot(reflect(V.negate(), N), F), + ); + const energy = float(1) + .sub(cosRadius) + .div(max(float(1).sub(spread.cos()), 0.0001)); + const reflectance = mix(vec3(0.04), materialColor, materialMetalness); + const specularFill = reflectance.mul(reflectedDisc).mul(energy); + const diffuseFill = materialColor + .mul(float(1).sub(materialMetalness)) + .mul(max(dot(N, F), 0)) + .mul(float(1).sub(cosRadius)) + .mul(2); + const fill = diffuseFill.add(specularFill).mul(fillColor).mul(fillGain); + return materialEmissive.add(rim).add(fill); +} diff --git a/docs/benchmark/prd345/shooter-causes1/summary.json b/docs/benchmark/prd345/shooter-causes1/summary.json new file mode 100644 index 0000000000..e354a6d018 --- /dev/null +++ b/docs/benchmark/prd345/shooter-causes1/summary.json @@ -0,0 +1,20188 @@ +{ + "design": "Three balanced rounds; each currentcontrol bracketed five causal arms. Six current launches, three per other arm. Same frozen archives/current full scene/exact scenario threshold33ms. No own concurrent builds; external noncooperating host activity uncontrolled.", + "sharedLease": { + "command": "PRD345 outer shared lease node /home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/run.mjs", + "pid": 2521870, + "startedAt": "2026-10-03T14:19:30.619Z" + }, + "cameraLimitation": "Identical full camera source verified; exact existing scenario requests player rather than camera snapshots, so runtime camera equality not separately measured.", + "runnerIdentity": "Frozen installed @threenative/playtest dist/runner/index.js from p345pk; outer lease uses reviewed latest task helper and existing captureLock API. Root later normal suite uses newer runner signal repair; this comparison keeps frozen runner identical for every arm.", + "rows": [ + { + "round": 1, + "position": 1, + "arm": "current", + "pass": false, + "p95": { + "actual": 48.29999999999927, + "expected": 33, + "sampleCount": 372, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [ + { + "code": "TN_PLAYTEST_PERFORMANCE_ASSERTION_FAILED", + "message": "performance.maxFrameMsP95 expected at most 33 ms, observed 48.29999999999927.", + "observedRuntimePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/current/playtests/performance.playtest.json/observations.json/performanceSeries", + "severity": "error", + "sourcePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/current/playtests/performance.playtest.json", + "suggestion": "Inspect the recorded frame-cost series and reduce the authored scene cost that owns the regression." + } + ], + "cost": { + "performance.samples": { + "sampleCount": 372, + "valid": true + }, + "performance.maxFrameMsP95": { + "actual": 48.29999999999927, + "expected": 33, + "sampleCount": 372, + "unit": "ms" + }, + "performance.maxDrawCalls": { + "actual": 1176, + "expected": 1300, + "sampleCount": 372, + "unit": "draw calls" + }, + "performance.minFps": { + "actual": 126.58, + "expected": 30, + "sampleCount": 372, + "unit": "fps" + }, + "performance.maxTriangles": { + "actual": 420917, + "expected": 500000, + "sampleCount": 372, + "unit": "triangles" + } + }, + "runtime": "web", + "frames": 603, + "materialLighting": { + "status": { + "before": "measured", + "after": "measured" + }, + "meanRGB": { + "before": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ], + "after": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ] + }, + "meanRadiance": { + "before": 0.5478382931255803, + "after": 0.5478382931255803 + }, + "reason": { + "before": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution.", + "after": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution." + }, + "scope": { + "before": "scene environment source availability; not material-specific reflected contribution", + "after": "scene environment source availability; not material-specific reflected contribution" + }, + "environmentState": { + "before": "bright", + "after": "bright" + }, + "ibl": { + "before": "contributing", + "after": "contributing" + }, + "analyticFill": { + "before": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + }, + "after": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + } + }, + "rimGain": { + "before": 0.12, + "after": 0.12 + }, + "fillGain": { + "before": 1, + "after": 1 + }, + "darkThreshold": { + "before": 0.001, + "after": 0.001 + }, + "enabled": { + "before": true, + "after": true + }, + "convertedMaterials": { + "before": 102, + "after": 102 + }, + "enrolledMeshes": { + "before": 827, + "after": 827 + }, + "excludedSlots": { + "before": 380, + "after": 380 + }, + "exclusions": { + "before": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ], + "after": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ] + } + }, + "qualityMarkers": [ + "TN_QUALITY_TIER high mobile=false software=false source=platform" + ], + "report": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/1-1-current-report.json", + "pngs": [ + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-1-1-current/after.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "99618e371432bb285920d0921459105b4a0db5e3bd84248ba31d0f016bd007ed" + }, + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-1-1-current/performance.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "99618e371432bb285920d0921459105b4a0db5e3bd84248ba31d0f016bd007ed" + } + ] + }, + { + "round": 1, + "position": 2, + "arm": "runtime-zero", + "pass": false, + "p95": { + "actual": 46.099999999998545, + "expected": 33, + "sampleCount": 452, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [ + { + "code": "TN_PLAYTEST_PERFORMANCE_ASSERTION_FAILED", + "message": "performance.maxFrameMsP95 expected at most 33 ms, observed 46.099999999998545.", + "observedRuntimePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/runtime-zero/playtests/performance.playtest.json/observations.json/performanceSeries", + "severity": "error", + "sourcePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/runtime-zero/playtests/performance.playtest.json", + "suggestion": "Inspect the recorded frame-cost series and reduce the authored scene cost that owns the regression." + } + ], + "cost": { + "performance.samples": { + "sampleCount": 452, + "valid": true + }, + "performance.maxFrameMsP95": { + "actual": 46.099999999998545, + "expected": 33, + "sampleCount": 452, + "unit": "ms" + }, + "performance.maxDrawCalls": { + "actual": 1176, + "expected": 1300, + "sampleCount": 452, + "unit": "draw calls" + }, + "performance.minFps": { + "actual": 123.46, + "expected": 30, + "sampleCount": 452, + "unit": "fps" + }, + "performance.maxTriangles": { + "actual": 420917, + "expected": 500000, + "sampleCount": 452, + "unit": "triangles" + } + }, + "runtime": "web", + "frames": 603, + "materialLighting": { + "status": { + "before": "measured", + "after": "measured" + }, + "meanRGB": { + "before": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ], + "after": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ] + }, + "meanRadiance": { + "before": 0.5478382931255803, + "after": 0.5478382931255803 + }, + "reason": { + "before": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution.", + "after": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution." + }, + "scope": { + "before": "scene environment source availability; not material-specific reflected contribution", + "after": "scene environment source availability; not material-specific reflected contribution" + }, + "environmentState": { + "before": "bright", + "after": "bright" + }, + "ibl": { + "before": "contributing", + "after": "contributing" + }, + "analyticFill": { + "before": { + "requestedGain": 0, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + }, + "after": { + "requestedGain": 0, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + } + }, + "rimGain": { + "before": 0, + "after": 0 + }, + "fillGain": { + "before": 0, + "after": 0 + }, + "darkThreshold": { + "before": 0.001, + "after": 0.001 + }, + "enabled": { + "before": true, + "after": true + }, + "convertedMaterials": { + "before": 102, + "after": 102 + }, + "enrolledMeshes": { + "before": 827, + "after": 827 + }, + "excludedSlots": { + "before": 380, + "after": 380 + }, + "exclusions": { + "before": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ], + "after": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ] + } + }, + "qualityMarkers": [ + "TN_QUALITY_TIER high mobile=false software=false source=platform" + ], + "report": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/1-2-runtime-zero-report.json", + "pngs": [ + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-1-2-runtime-zero/after.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "e692fbb2b9702d2e04d38bb9ad9627c2007805644e578ef1b1a5924820833f39" + }, + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-1-2-runtime-zero/performance.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "e692fbb2b9702d2e04d38bb9ad9627c2007805644e578ef1b1a5924820833f39" + } + ] + }, + { + "round": 1, + "position": 3, + "arm": "copy-only", + "pass": true, + "p95": { + "actual": 29.399999999997817, + "expected": 33, + "sampleCount": 625, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [], + "cost": { + "performance.samples": { + "sampleCount": 625, + "valid": true + }, + "performance.maxFrameMsP95": { + "actual": 29.399999999997817, + "expected": 33, + "sampleCount": 625, + "unit": "ms" + }, + "performance.maxDrawCalls": { + "actual": 1176, + "expected": 1300, + "sampleCount": 625, + "unit": "draw calls" + }, + "performance.minFps": { + "actual": 133.33, + "expected": 30, + "sampleCount": 625, + "unit": "fps" + }, + "performance.maxTriangles": { + "actual": 420917, + "expected": 500000, + "sampleCount": 625, + "unit": "triangles" + } + }, + "runtime": "web", + "frames": 603, + "materialLighting": { + "status": { + "before": "measured", + "after": "measured" + }, + "meanRGB": { + "before": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ], + "after": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ] + }, + "meanRadiance": { + "before": 0.5478382931255803, + "after": 0.5478382931255803 + }, + "reason": { + "before": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution.", + "after": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution." + }, + "scope": { + "before": "scene environment source availability; not material-specific reflected contribution", + "after": "scene environment source availability; not material-specific reflected contribution" + }, + "environmentState": { + "before": "bright", + "after": "bright" + }, + "ibl": { + "before": "contributing", + "after": "contributing" + }, + "analyticFill": { + "before": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + }, + "after": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + } + }, + "rimGain": { + "before": 0.12, + "after": 0.12 + }, + "fillGain": { + "before": 1, + "after": 1 + }, + "darkThreshold": { + "before": 0.001, + "after": 0.001 + }, + "enabled": { + "before": true, + "after": true + }, + "convertedMaterials": { + "before": 102, + "after": 102 + }, + "enrolledMeshes": { + "before": 827, + "after": 827 + }, + "excludedSlots": { + "before": 380, + "after": 380 + }, + "exclusions": { + "before": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ], + "after": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ] + } + }, + "qualityMarkers": [ + "TN_QUALITY_TIER high mobile=false software=false source=platform" + ], + "report": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/1-3-copy-only-report.json", + "pngs": [ + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-1-3-copy-only/after.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "e07ecdabf722661fe7857805bcf062e68bc8dcdca047f604440c53582a08e039" + }, + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-1-3-copy-only/performance.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "e07ecdabf722661fe7857805bcf062e68bc8dcdca047f604440c53582a08e039" + } + ] + }, + { + "round": 1, + "position": 4, + "arm": "material-emissive", + "pass": true, + "p95": { + "actual": 28.69999999999709, + "expected": 33, + "sampleCount": 665, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [], + "cost": { + "performance.samples": { + "sampleCount": 665, + "valid": true + }, + "performance.maxFrameMsP95": { + "actual": 28.69999999999709, + "expected": 33, + "sampleCount": 665, + "unit": "ms" + }, + "performance.maxDrawCalls": { + "actual": 1176, + "expected": 1300, + "sampleCount": 665, + "unit": "draw calls" + }, + "performance.minFps": { + "actual": 135.14, + "expected": 30, + "sampleCount": 665, + "unit": "fps" + }, + "performance.maxTriangles": { + "actual": 420917, + "expected": 500000, + "sampleCount": 665, + "unit": "triangles" + } + }, + "runtime": "web", + "frames": 603, + "materialLighting": { + "status": { + "before": "measured", + "after": "measured" + }, + "meanRGB": { + "before": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ], + "after": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ] + }, + "meanRadiance": { + "before": 0.5478382931255803, + "after": 0.5478382931255803 + }, + "reason": { + "before": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution.", + "after": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution." + }, + "scope": { + "before": "scene environment source availability; not material-specific reflected contribution", + "after": "scene environment source availability; not material-specific reflected contribution" + }, + "environmentState": { + "before": "bright", + "after": "bright" + }, + "ibl": { + "before": "contributing", + "after": "contributing" + }, + "analyticFill": { + "before": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + }, + "after": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + } + }, + "rimGain": { + "before": 0.12, + "after": 0.12 + }, + "fillGain": { + "before": 1, + "after": 1 + }, + "darkThreshold": { + "before": 0.001, + "after": 0.001 + }, + "enabled": { + "before": true, + "after": true + }, + "convertedMaterials": { + "before": 102, + "after": 102 + }, + "enrolledMeshes": { + "before": 827, + "after": 827 + }, + "excludedSlots": { + "before": 380, + "after": 380 + }, + "exclusions": { + "before": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ], + "after": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ] + } + }, + "qualityMarkers": [ + "TN_QUALITY_TIER high mobile=false software=false source=platform" + ], + "report": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/1-4-material-emissive-report.json", + "pngs": [ + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-1-4-material-emissive/after.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "717afa1b4007a887bd49081a31b99234dca953f9a78485d2813f0bdd782ad07a" + }, + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-1-4-material-emissive/performance.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "717afa1b4007a887bd49081a31b99234dca953f9a78485d2813f0bdd782ad07a" + } + ] + }, + { + "round": 1, + "position": 5, + "arm": "compiled-rim-only", + "pass": false, + "p95": { + "actual": 46.69999999999709, + "expected": 33, + "sampleCount": 502, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [ + { + "code": "TN_PLAYTEST_PERFORMANCE_ASSERTION_FAILED", + "message": "performance.maxFrameMsP95 expected at most 33 ms, observed 46.69999999999709.", + "observedRuntimePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/compiled-rim-only/playtests/performance.playtest.json/observations.json/performanceSeries", + "severity": "error", + "sourcePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/compiled-rim-only/playtests/performance.playtest.json", + "suggestion": "Inspect the recorded frame-cost series and reduce the authored scene cost that owns the regression." + } + ], + "cost": { + "performance.samples": { + "sampleCount": 502, + "valid": true + }, + "performance.maxFrameMsP95": { + "actual": 46.69999999999709, + "expected": 33, + "sampleCount": 502, + "unit": "ms" + }, + "performance.maxDrawCalls": { + "actual": 1176, + "expected": 1300, + "sampleCount": 502, + "unit": "draw calls" + }, + "performance.minFps": { + "actual": 128.21, + "expected": 30, + "sampleCount": 502, + "unit": "fps" + }, + "performance.maxTriangles": { + "actual": 420917, + "expected": 500000, + "sampleCount": 502, + "unit": "triangles" + } + }, + "runtime": "web", + "frames": 603, + "materialLighting": { + "status": { + "before": "measured", + "after": "measured" + }, + "meanRGB": { + "before": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ], + "after": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ] + }, + "meanRadiance": { + "before": 0.5478382931255803, + "after": 0.5478382931255803 + }, + "reason": { + "before": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution.", + "after": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution." + }, + "scope": { + "before": "scene environment source availability; not material-specific reflected contribution", + "after": "scene environment source availability; not material-specific reflected contribution" + }, + "environmentState": { + "before": "bright", + "after": "bright" + }, + "ibl": { + "before": "contributing", + "after": "contributing" + }, + "analyticFill": { + "before": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + }, + "after": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + } + }, + "rimGain": { + "before": 0.12, + "after": 0.12 + }, + "fillGain": { + "before": 1, + "after": 1 + }, + "darkThreshold": { + "before": 0.001, + "after": 0.001 + }, + "enabled": { + "before": true, + "after": true + }, + "convertedMaterials": { + "before": 102, + "after": 102 + }, + "enrolledMeshes": { + "before": 827, + "after": 827 + }, + "excludedSlots": { + "before": 380, + "after": 380 + }, + "exclusions": { + "before": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ], + "after": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ] + } + }, + "qualityMarkers": [ + "TN_QUALITY_TIER high mobile=false software=false source=platform" + ], + "report": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/1-5-compiled-rim-only-report.json", + "pngs": [ + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-1-5-compiled-rim-only/after.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "66a5669f7bd147c9afd595e6a6e88b8f91def768b42d18a3fe48392c76bc46cf" + }, + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-1-5-compiled-rim-only/performance.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "66a5669f7bd147c9afd595e6a6e88b8f91def768b42d18a3fe48392c76bc46cf" + } + ] + }, + { + "round": 1, + "position": 6, + "arm": "shared-graph", + "pass": true, + "p95": { + "actual": 30.30000000000291, + "expected": 33, + "sampleCount": 521, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [], + "cost": { + "performance.samples": { + "sampleCount": 521, + "valid": true + }, + "performance.maxFrameMsP95": { + "actual": 30.30000000000291, + "expected": 33, + "sampleCount": 521, + "unit": "ms" + }, + "performance.maxDrawCalls": { + "actual": 1176, + "expected": 1300, + "sampleCount": 521, + "unit": "draw calls" + }, + "performance.minFps": { + "actual": 126.58, + "expected": 30, + "sampleCount": 521, + "unit": "fps" + }, + "performance.maxTriangles": { + "actual": 420917, + "expected": 500000, + "sampleCount": 521, + "unit": "triangles" + } + }, + "runtime": "web", + "frames": 603, + "materialLighting": { + "status": { + "before": "measured", + "after": "measured" + }, + "meanRGB": { + "before": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ], + "after": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ] + }, + "meanRadiance": { + "before": 0.5478382931255803, + "after": 0.5478382931255803 + }, + "reason": { + "before": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution.", + "after": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution." + }, + "scope": { + "before": "scene environment source availability; not material-specific reflected contribution", + "after": "scene environment source availability; not material-specific reflected contribution" + }, + "environmentState": { + "before": "bright", + "after": "bright" + }, + "ibl": { + "before": "contributing", + "after": "contributing" + }, + "analyticFill": { + "before": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + }, + "after": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + } + }, + "rimGain": { + "before": 0.12, + "after": 0.12 + }, + "fillGain": { + "before": 1, + "after": 1 + }, + "darkThreshold": { + "before": 0.001, + "after": 0.001 + }, + "enabled": { + "before": true, + "after": true + }, + "convertedMaterials": { + "before": 102, + "after": 102 + }, + "enrolledMeshes": { + "before": 827, + "after": 827 + }, + "excludedSlots": { + "before": 380, + "after": 380 + }, + "exclusions": { + "before": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ], + "after": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ] + } + }, + "qualityMarkers": [ + "TN_QUALITY_TIER high mobile=false software=false source=platform" + ], + "report": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/1-6-shared-graph-report.json", + "pngs": [ + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-1-6-shared-graph/after.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "c7f022c78e219c1fafe844075761f9e00d0c42cb0fdb450e008bf2741dd760b9" + }, + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-1-6-shared-graph/performance.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "c7f022c78e219c1fafe844075761f9e00d0c42cb0fdb450e008bf2741dd760b9" + } + ] + }, + { + "round": 1, + "position": 7, + "arm": "current", + "pass": false, + "p95": { + "actual": 47.5, + "expected": 33, + "sampleCount": 400, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [ + { + "code": "TN_PLAYTEST_PERFORMANCE_ASSERTION_FAILED", + "message": "performance.maxFrameMsP95 expected at most 33 ms, observed 47.5.", + "observedRuntimePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/current/playtests/performance.playtest.json/observations.json/performanceSeries", + "severity": "error", + "sourcePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/current/playtests/performance.playtest.json", + "suggestion": "Inspect the recorded frame-cost series and reduce the authored scene cost that owns the regression." + } + ], + "cost": { + "performance.samples": { + "sampleCount": 400, + "valid": true + }, + "performance.maxFrameMsP95": { + "actual": 47.5, + "expected": 33, + "sampleCount": 400, + "unit": "ms" + }, + "performance.maxDrawCalls": { + "actual": 1176, + "expected": 1300, + "sampleCount": 400, + "unit": "draw calls" + }, + "performance.minFps": { + "actual": 116.28, + "expected": 30, + "sampleCount": 400, + "unit": "fps" + }, + "performance.maxTriangles": { + "actual": 420917, + "expected": 500000, + "sampleCount": 400, + "unit": "triangles" + } + }, + "runtime": "web", + "frames": 603, + "materialLighting": { + "status": { + "before": "measured", + "after": "measured" + }, + "meanRGB": { + "before": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ], + "after": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ] + }, + "meanRadiance": { + "before": 0.5478382931255803, + "after": 0.5478382931255803 + }, + "reason": { + "before": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution.", + "after": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution." + }, + "scope": { + "before": "scene environment source availability; not material-specific reflected contribution", + "after": "scene environment source availability; not material-specific reflected contribution" + }, + "environmentState": { + "before": "bright", + "after": "bright" + }, + "ibl": { + "before": "contributing", + "after": "contributing" + }, + "analyticFill": { + "before": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + }, + "after": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + } + }, + "rimGain": { + "before": 0.12, + "after": 0.12 + }, + "fillGain": { + "before": 1, + "after": 1 + }, + "darkThreshold": { + "before": 0.001, + "after": 0.001 + }, + "enabled": { + "before": true, + "after": true + }, + "convertedMaterials": { + "before": 102, + "after": 102 + }, + "enrolledMeshes": { + "before": 827, + "after": 827 + }, + "excludedSlots": { + "before": 380, + "after": 380 + }, + "exclusions": { + "before": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ], + "after": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ] + } + }, + "qualityMarkers": [ + "TN_QUALITY_TIER high mobile=false software=false source=platform" + ], + "report": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/1-7-current-report.json", + "pngs": [ + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-1-7-current/after.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "4d73f058cd8928e019c18556c37a789313b75f2509354cf2240094dcdf18b912" + }, + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-1-7-current/performance.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "4d73f058cd8928e019c18556c37a789313b75f2509354cf2240094dcdf18b912" + } + ] + }, + { + "round": 2, + "position": 1, + "arm": "current", + "pass": false, + "p95": { + "actual": 46.89999999999782, + "expected": 33, + "sampleCount": 406, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [ + { + "code": "TN_PLAYTEST_PERFORMANCE_ASSERTION_FAILED", + "message": "performance.maxFrameMsP95 expected at most 33 ms, observed 46.89999999999782.", + "observedRuntimePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/current/playtests/performance.playtest.json/observations.json/performanceSeries", + "severity": "error", + "sourcePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/current/playtests/performance.playtest.json", + "suggestion": "Inspect the recorded frame-cost series and reduce the authored scene cost that owns the regression." + } + ], + "cost": { + "performance.samples": { + "sampleCount": 406, + "valid": true + }, + "performance.maxFrameMsP95": { + "actual": 46.89999999999782, + "expected": 33, + "sampleCount": 406, + "unit": "ms" + }, + "performance.maxDrawCalls": { + "actual": 1176, + "expected": 1300, + "sampleCount": 406, + "unit": "draw calls" + }, + "performance.minFps": { + "actual": 131.58, + "expected": 30, + "sampleCount": 406, + "unit": "fps" + }, + "performance.maxTriangles": { + "actual": 420917, + "expected": 500000, + "sampleCount": 406, + "unit": "triangles" + } + }, + "runtime": "web", + "frames": 603, + "materialLighting": { + "status": { + "before": "measured", + "after": "measured" + }, + "meanRGB": { + "before": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ], + "after": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ] + }, + "meanRadiance": { + "before": 0.5478382931255803, + "after": 0.5478382931255803 + }, + "reason": { + "before": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution.", + "after": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution." + }, + "scope": { + "before": "scene environment source availability; not material-specific reflected contribution", + "after": "scene environment source availability; not material-specific reflected contribution" + }, + "environmentState": { + "before": "bright", + "after": "bright" + }, + "ibl": { + "before": "contributing", + "after": "contributing" + }, + "analyticFill": { + "before": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + }, + "after": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + } + }, + "rimGain": { + "before": 0.12, + "after": 0.12 + }, + "fillGain": { + "before": 1, + "after": 1 + }, + "darkThreshold": { + "before": 0.001, + "after": 0.001 + }, + "enabled": { + "before": true, + "after": true + }, + "convertedMaterials": { + "before": 102, + "after": 102 + }, + "enrolledMeshes": { + "before": 827, + "after": 827 + }, + "excludedSlots": { + "before": 380, + "after": 380 + }, + "exclusions": { + "before": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ], + "after": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ] + } + }, + "qualityMarkers": [ + "TN_QUALITY_TIER high mobile=false software=false source=platform" + ], + "report": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/2-1-current-report.json", + "pngs": [ + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-2-1-current/after.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "78c94c366ab1e71ce3711dcdbdeba5a50fa3205b74faa9cdc0c4485707f6b4e3" + }, + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-2-1-current/performance.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "78c94c366ab1e71ce3711dcdbdeba5a50fa3205b74faa9cdc0c4485707f6b4e3" + } + ] + }, + { + "round": 2, + "position": 2, + "arm": "shared-graph", + "pass": true, + "p95": { + "actual": 30.599999999998545, + "expected": 33, + "sampleCount": 560, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [], + "cost": { + "performance.samples": { + "sampleCount": 560, + "valid": true + }, + "performance.maxFrameMsP95": { + "actual": 30.599999999998545, + "expected": 33, + "sampleCount": 560, + "unit": "ms" + }, + "performance.maxDrawCalls": { + "actual": 1176, + "expected": 1300, + "sampleCount": 560, + "unit": "draw calls" + }, + "performance.minFps": { + "actual": 128.21, + "expected": 30, + "sampleCount": 560, + "unit": "fps" + }, + "performance.maxTriangles": { + "actual": 420917, + "expected": 500000, + "sampleCount": 560, + "unit": "triangles" + } + }, + "runtime": "web", + "frames": 603, + "materialLighting": { + "status": { + "before": "measured", + "after": "measured" + }, + "meanRGB": { + "before": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ], + "after": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ] + }, + "meanRadiance": { + "before": 0.5478382931255803, + "after": 0.5478382931255803 + }, + "reason": { + "before": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution.", + "after": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution." + }, + "scope": { + "before": "scene environment source availability; not material-specific reflected contribution", + "after": "scene environment source availability; not material-specific reflected contribution" + }, + "environmentState": { + "before": "bright", + "after": "bright" + }, + "ibl": { + "before": "contributing", + "after": "contributing" + }, + "analyticFill": { + "before": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + }, + "after": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + } + }, + "rimGain": { + "before": 0.12, + "after": 0.12 + }, + "fillGain": { + "before": 1, + "after": 1 + }, + "darkThreshold": { + "before": 0.001, + "after": 0.001 + }, + "enabled": { + "before": true, + "after": true + }, + "convertedMaterials": { + "before": 102, + "after": 102 + }, + "enrolledMeshes": { + "before": 827, + "after": 827 + }, + "excludedSlots": { + "before": 380, + "after": 380 + }, + "exclusions": { + "before": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ], + "after": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ] + } + }, + "qualityMarkers": [ + "TN_QUALITY_TIER high mobile=false software=false source=platform" + ], + "report": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/2-2-shared-graph-report.json", + "pngs": [ + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-2-2-shared-graph/after.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "588026182efb61e969f3af7277125a0f4c417ced723cd55a7795403bae9c4e68" + }, + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-2-2-shared-graph/performance.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "588026182efb61e969f3af7277125a0f4c417ced723cd55a7795403bae9c4e68" + } + ] + }, + { + "round": 2, + "position": 3, + "arm": "compiled-rim-only", + "pass": false, + "p95": { + "actual": 45.30000000000291, + "expected": 33, + "sampleCount": 458, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [ + { + "code": "TN_PLAYTEST_PERFORMANCE_ASSERTION_FAILED", + "message": "performance.maxFrameMsP95 expected at most 33 ms, observed 45.30000000000291.", + "observedRuntimePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/compiled-rim-only/playtests/performance.playtest.json/observations.json/performanceSeries", + "severity": "error", + "sourcePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/compiled-rim-only/playtests/performance.playtest.json", + "suggestion": "Inspect the recorded frame-cost series and reduce the authored scene cost that owns the regression." + } + ], + "cost": { + "performance.samples": { + "sampleCount": 458, + "valid": true + }, + "performance.maxFrameMsP95": { + "actual": 45.30000000000291, + "expected": 33, + "sampleCount": 458, + "unit": "ms" + }, + "performance.maxDrawCalls": { + "actual": 1176, + "expected": 1300, + "sampleCount": 458, + "unit": "draw calls" + }, + "performance.minFps": { + "actual": 125, + "expected": 30, + "sampleCount": 458, + "unit": "fps" + }, + "performance.maxTriangles": { + "actual": 420917, + "expected": 500000, + "sampleCount": 458, + "unit": "triangles" + } + }, + "runtime": "web", + "frames": 603, + "materialLighting": { + "status": { + "before": "measured", + "after": "measured" + }, + "meanRGB": { + "before": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ], + "after": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ] + }, + "meanRadiance": { + "before": 0.5478382931255803, + "after": 0.5478382931255803 + }, + "reason": { + "before": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution.", + "after": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution." + }, + "scope": { + "before": "scene environment source availability; not material-specific reflected contribution", + "after": "scene environment source availability; not material-specific reflected contribution" + }, + "environmentState": { + "before": "bright", + "after": "bright" + }, + "ibl": { + "before": "contributing", + "after": "contributing" + }, + "analyticFill": { + "before": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + }, + "after": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + } + }, + "rimGain": { + "before": 0.12, + "after": 0.12 + }, + "fillGain": { + "before": 1, + "after": 1 + }, + "darkThreshold": { + "before": 0.001, + "after": 0.001 + }, + "enabled": { + "before": true, + "after": true + }, + "convertedMaterials": { + "before": 102, + "after": 102 + }, + "enrolledMeshes": { + "before": 827, + "after": 827 + }, + "excludedSlots": { + "before": 380, + "after": 380 + }, + "exclusions": { + "before": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ], + "after": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ] + } + }, + "qualityMarkers": [ + "TN_QUALITY_TIER high mobile=false software=false source=platform" + ], + "report": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/2-3-compiled-rim-only-report.json", + "pngs": [ + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-2-3-compiled-rim-only/after.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "a04223b2d219ce50bd9ece7950ca5c067f7fdafb6c2abbf0eb832af2e541e712" + }, + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-2-3-compiled-rim-only/performance.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "a04223b2d219ce50bd9ece7950ca5c067f7fdafb6c2abbf0eb832af2e541e712" + } + ] + }, + { + "round": 2, + "position": 4, + "arm": "material-emissive", + "pass": true, + "p95": { + "actual": 28.099999999998545, + "expected": 33, + "sampleCount": 659, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [], + "cost": { + "performance.samples": { + "sampleCount": 659, + "valid": true + }, + "performance.maxFrameMsP95": { + "actual": 28.099999999998545, + "expected": 33, + "sampleCount": 659, + "unit": "ms" + }, + "performance.maxDrawCalls": { + "actual": 1176, + "expected": 1300, + "sampleCount": 659, + "unit": "draw calls" + }, + "performance.minFps": { + "actual": 135.14, + "expected": 30, + "sampleCount": 659, + "unit": "fps" + }, + "performance.maxTriangles": { + "actual": 420917, + "expected": 500000, + "sampleCount": 659, + "unit": "triangles" + } + }, + "runtime": "web", + "frames": 603, + "materialLighting": { + "status": { + "before": "measured", + "after": "measured" + }, + "meanRGB": { + "before": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ], + "after": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ] + }, + "meanRadiance": { + "before": 0.5478382931255803, + "after": 0.5478382931255803 + }, + "reason": { + "before": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution.", + "after": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution." + }, + "scope": { + "before": "scene environment source availability; not material-specific reflected contribution", + "after": "scene environment source availability; not material-specific reflected contribution" + }, + "environmentState": { + "before": "bright", + "after": "bright" + }, + "ibl": { + "before": "contributing", + "after": "contributing" + }, + "analyticFill": { + "before": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + }, + "after": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + } + }, + "rimGain": { + "before": 0.12, + "after": 0.12 + }, + "fillGain": { + "before": 1, + "after": 1 + }, + "darkThreshold": { + "before": 0.001, + "after": 0.001 + }, + "enabled": { + "before": true, + "after": true + }, + "convertedMaterials": { + "before": 102, + "after": 102 + }, + "enrolledMeshes": { + "before": 827, + "after": 827 + }, + "excludedSlots": { + "before": 380, + "after": 380 + }, + "exclusions": { + "before": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ], + "after": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ] + } + }, + "qualityMarkers": [ + "TN_QUALITY_TIER high mobile=false software=false source=platform" + ], + "report": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/2-4-material-emissive-report.json", + "pngs": [ + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-2-4-material-emissive/after.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "677af73f4cd889edc7715dad1c5403e22c84a56fc45ab762709cab2ace8c12d6" + }, + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-2-4-material-emissive/performance.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "677af73f4cd889edc7715dad1c5403e22c84a56fc45ab762709cab2ace8c12d6" + } + ] + }, + { + "round": 2, + "position": 5, + "arm": "copy-only", + "pass": true, + "p95": { + "actual": 30.599999999998545, + "expected": 33, + "sampleCount": 531, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [], + "cost": { + "performance.samples": { + "sampleCount": 531, + "valid": true + }, + "performance.maxFrameMsP95": { + "actual": 30.599999999998545, + "expected": 33, + "sampleCount": 531, + "unit": "ms" + }, + "performance.maxDrawCalls": { + "actual": 1176, + "expected": 1300, + "sampleCount": 531, + "unit": "draw calls" + }, + "performance.minFps": { + "actual": 125, + "expected": 30, + "sampleCount": 531, + "unit": "fps" + }, + "performance.maxTriangles": { + "actual": 420917, + "expected": 500000, + "sampleCount": 531, + "unit": "triangles" + } + }, + "runtime": "web", + "frames": 603, + "materialLighting": { + "status": { + "before": "measured", + "after": "measured" + }, + "meanRGB": { + "before": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ], + "after": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ] + }, + "meanRadiance": { + "before": 0.5478382931255803, + "after": 0.5478382931255803 + }, + "reason": { + "before": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution.", + "after": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution." + }, + "scope": { + "before": "scene environment source availability; not material-specific reflected contribution", + "after": "scene environment source availability; not material-specific reflected contribution" + }, + "environmentState": { + "before": "bright", + "after": "bright" + }, + "ibl": { + "before": "contributing", + "after": "contributing" + }, + "analyticFill": { + "before": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + }, + "after": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + } + }, + "rimGain": { + "before": 0.12, + "after": 0.12 + }, + "fillGain": { + "before": 1, + "after": 1 + }, + "darkThreshold": { + "before": 0.001, + "after": 0.001 + }, + "enabled": { + "before": true, + "after": true + }, + "convertedMaterials": { + "before": 102, + "after": 102 + }, + "enrolledMeshes": { + "before": 827, + "after": 827 + }, + "excludedSlots": { + "before": 380, + "after": 380 + }, + "exclusions": { + "before": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ], + "after": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ] + } + }, + "qualityMarkers": [ + "TN_QUALITY_TIER high mobile=false software=false source=platform" + ], + "report": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/2-5-copy-only-report.json", + "pngs": [ + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-2-5-copy-only/after.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "733eee9be89ce2772cc5c176f3357ec89cbf7d85e4eef9eb13eae114889db7d7" + }, + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-2-5-copy-only/performance.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "733eee9be89ce2772cc5c176f3357ec89cbf7d85e4eef9eb13eae114889db7d7" + } + ] + }, + { + "round": 2, + "position": 6, + "arm": "runtime-zero", + "pass": false, + "p95": { + "actual": 62.70000000000073, + "expected": 33, + "sampleCount": 327, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [ + { + "code": "TN_PLAYTEST_PERFORMANCE_ASSERTION_FAILED", + "message": "performance.maxFrameMsP95 expected at most 33 ms, observed 62.70000000000073.", + "observedRuntimePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/runtime-zero/playtests/performance.playtest.json/observations.json/performanceSeries", + "severity": "error", + "sourcePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/runtime-zero/playtests/performance.playtest.json", + "suggestion": "Inspect the recorded frame-cost series and reduce the authored scene cost that owns the regression." + } + ], + "cost": { + "performance.samples": { + "sampleCount": 327, + "valid": true + }, + "performance.maxFrameMsP95": { + "actual": 62.70000000000073, + "expected": 33, + "sampleCount": 327, + "unit": "ms" + }, + "performance.maxDrawCalls": { + "actual": 1176, + "expected": 1300, + "sampleCount": 327, + "unit": "draw calls" + }, + "performance.minFps": { + "actual": 113.64, + "expected": 30, + "sampleCount": 327, + "unit": "fps" + }, + "performance.maxTriangles": { + "actual": 420917, + "expected": 500000, + "sampleCount": 327, + "unit": "triangles" + } + }, + "runtime": "web", + "frames": 603, + "materialLighting": { + "status": { + "before": "measured", + "after": "measured" + }, + "meanRGB": { + "before": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ], + "after": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ] + }, + "meanRadiance": { + "before": 0.5478382931255803, + "after": 0.5478382931255803 + }, + "reason": { + "before": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution.", + "after": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution." + }, + "scope": { + "before": "scene environment source availability; not material-specific reflected contribution", + "after": "scene environment source availability; not material-specific reflected contribution" + }, + "environmentState": { + "before": "bright", + "after": "bright" + }, + "ibl": { + "before": "contributing", + "after": "contributing" + }, + "analyticFill": { + "before": { + "requestedGain": 0, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + }, + "after": { + "requestedGain": 0, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + } + }, + "rimGain": { + "before": 0, + "after": 0 + }, + "fillGain": { + "before": 0, + "after": 0 + }, + "darkThreshold": { + "before": 0.001, + "after": 0.001 + }, + "enabled": { + "before": true, + "after": true + }, + "convertedMaterials": { + "before": 102, + "after": 102 + }, + "enrolledMeshes": { + "before": 827, + "after": 827 + }, + "excludedSlots": { + "before": 380, + "after": 380 + }, + "exclusions": { + "before": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ], + "after": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ] + } + }, + "qualityMarkers": [ + "TN_QUALITY_TIER high mobile=false software=false source=platform" + ], + "report": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/2-6-runtime-zero-report.json", + "pngs": [ + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-2-6-runtime-zero/after.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "2ae92437ac2c95803dc479e28a33471dc7a882910dfa6d3a2a7771e79845cc86" + }, + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-2-6-runtime-zero/performance.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "2ae92437ac2c95803dc479e28a33471dc7a882910dfa6d3a2a7771e79845cc86" + } + ] + }, + { + "round": 2, + "position": 7, + "arm": "current", + "pass": false, + "p95": { + "actual": 50.79999999999927, + "expected": 33, + "sampleCount": 376, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [ + { + "code": "TN_PLAYTEST_PERFORMANCE_ASSERTION_FAILED", + "message": "performance.maxFrameMsP95 expected at most 33 ms, observed 50.79999999999927.", + "observedRuntimePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/current/playtests/performance.playtest.json/observations.json/performanceSeries", + "severity": "error", + "sourcePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/current/playtests/performance.playtest.json", + "suggestion": "Inspect the recorded frame-cost series and reduce the authored scene cost that owns the regression." + } + ], + "cost": { + "performance.samples": { + "sampleCount": 376, + "valid": true + }, + "performance.maxFrameMsP95": { + "actual": 50.79999999999927, + "expected": 33, + "sampleCount": 376, + "unit": "ms" + }, + "performance.maxDrawCalls": { + "actual": 1176, + "expected": 1300, + "sampleCount": 376, + "unit": "draw calls" + }, + "performance.minFps": { + "actual": 113.64, + "expected": 30, + "sampleCount": 376, + "unit": "fps" + }, + "performance.maxTriangles": { + "actual": 420917, + "expected": 500000, + "sampleCount": 376, + "unit": "triangles" + } + }, + "runtime": "web", + "frames": 603, + "materialLighting": { + "status": { + "before": "measured", + "after": "measured" + }, + "meanRGB": { + "before": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ], + "after": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ] + }, + "meanRadiance": { + "before": 0.5478382931255803, + "after": 0.5478382931255803 + }, + "reason": { + "before": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution.", + "after": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution." + }, + "scope": { + "before": "scene environment source availability; not material-specific reflected contribution", + "after": "scene environment source availability; not material-specific reflected contribution" + }, + "environmentState": { + "before": "bright", + "after": "bright" + }, + "ibl": { + "before": "contributing", + "after": "contributing" + }, + "analyticFill": { + "before": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + }, + "after": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + } + }, + "rimGain": { + "before": 0.12, + "after": 0.12 + }, + "fillGain": { + "before": 1, + "after": 1 + }, + "darkThreshold": { + "before": 0.001, + "after": 0.001 + }, + "enabled": { + "before": true, + "after": true + }, + "convertedMaterials": { + "before": 102, + "after": 102 + }, + "enrolledMeshes": { + "before": 827, + "after": 827 + }, + "excludedSlots": { + "before": 380, + "after": 380 + }, + "exclusions": { + "before": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ], + "after": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ] + } + }, + "qualityMarkers": [ + "TN_QUALITY_TIER high mobile=false software=false source=platform" + ], + "report": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/2-7-current-report.json", + "pngs": [ + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-2-7-current/after.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "5e0a8a3eceadb97a709be51da4ee4da5a314e1935e871ce6d2f84db703d8751d" + }, + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-2-7-current/performance.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "5e0a8a3eceadb97a709be51da4ee4da5a314e1935e871ce6d2f84db703d8751d" + } + ] + }, + { + "round": 3, + "position": 1, + "arm": "current", + "pass": false, + "p95": { + "actual": 45.89999999999782, + "expected": 33, + "sampleCount": 426, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [ + { + "code": "TN_PLAYTEST_PERFORMANCE_ASSERTION_FAILED", + "message": "performance.maxFrameMsP95 expected at most 33 ms, observed 45.89999999999782.", + "observedRuntimePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/current/playtests/performance.playtest.json/observations.json/performanceSeries", + "severity": "error", + "sourcePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/current/playtests/performance.playtest.json", + "suggestion": "Inspect the recorded frame-cost series and reduce the authored scene cost that owns the regression." + } + ], + "cost": { + "performance.samples": { + "sampleCount": 426, + "valid": true + }, + "performance.maxFrameMsP95": { + "actual": 45.89999999999782, + "expected": 33, + "sampleCount": 426, + "unit": "ms" + }, + "performance.maxDrawCalls": { + "actual": 1176, + "expected": 1300, + "sampleCount": 426, + "unit": "draw calls" + }, + "performance.minFps": { + "actual": 121.95, + "expected": 30, + "sampleCount": 426, + "unit": "fps" + }, + "performance.maxTriangles": { + "actual": 420917, + "expected": 500000, + "sampleCount": 426, + "unit": "triangles" + } + }, + "runtime": "web", + "frames": 603, + "materialLighting": { + "status": { + "before": "measured", + "after": "measured" + }, + "meanRGB": { + "before": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ], + "after": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ] + }, + "meanRadiance": { + "before": 0.5478382931255803, + "after": 0.5478382931255803 + }, + "reason": { + "before": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution.", + "after": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution." + }, + "scope": { + "before": "scene environment source availability; not material-specific reflected contribution", + "after": "scene environment source availability; not material-specific reflected contribution" + }, + "environmentState": { + "before": "bright", + "after": "bright" + }, + "ibl": { + "before": "contributing", + "after": "contributing" + }, + "analyticFill": { + "before": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + }, + "after": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + } + }, + "rimGain": { + "before": 0.12, + "after": 0.12 + }, + "fillGain": { + "before": 1, + "after": 1 + }, + "darkThreshold": { + "before": 0.001, + "after": 0.001 + }, + "enabled": { + "before": true, + "after": true + }, + "convertedMaterials": { + "before": 102, + "after": 102 + }, + "enrolledMeshes": { + "before": 827, + "after": 827 + }, + "excludedSlots": { + "before": 380, + "after": 380 + }, + "exclusions": { + "before": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ], + "after": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ] + } + }, + "qualityMarkers": [ + "TN_QUALITY_TIER high mobile=false software=false source=platform" + ], + "report": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/3-1-current-report.json", + "pngs": [ + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-3-1-current/after.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "dda1f4072e3c9bbdf4ebadca06cc6281035ccbfb930d42a2c39a50d336229513" + }, + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-3-1-current/performance.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "dda1f4072e3c9bbdf4ebadca06cc6281035ccbfb930d42a2c39a50d336229513" + } + ] + }, + { + "round": 3, + "position": 2, + "arm": "material-emissive", + "pass": true, + "p95": { + "actual": 29.899999999997817, + "expected": 33, + "sampleCount": 609, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [], + "cost": { + "performance.samples": { + "sampleCount": 609, + "valid": true + }, + "performance.maxFrameMsP95": { + "actual": 29.899999999997817, + "expected": 33, + "sampleCount": 609, + "unit": "ms" + }, + "performance.maxDrawCalls": { + "actual": 1176, + "expected": 1300, + "sampleCount": 609, + "unit": "draw calls" + }, + "performance.minFps": { + "actual": 136.99, + "expected": 30, + "sampleCount": 609, + "unit": "fps" + }, + "performance.maxTriangles": { + "actual": 420917, + "expected": 500000, + "sampleCount": 609, + "unit": "triangles" + } + }, + "runtime": "web", + "frames": 603, + "materialLighting": { + "status": { + "before": "measured", + "after": "measured" + }, + "meanRGB": { + "before": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ], + "after": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ] + }, + "meanRadiance": { + "before": 0.5478382931255803, + "after": 0.5478382931255803 + }, + "reason": { + "before": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution.", + "after": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution." + }, + "scope": { + "before": "scene environment source availability; not material-specific reflected contribution", + "after": "scene environment source availability; not material-specific reflected contribution" + }, + "environmentState": { + "before": "bright", + "after": "bright" + }, + "ibl": { + "before": "contributing", + "after": "contributing" + }, + "analyticFill": { + "before": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + }, + "after": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + } + }, + "rimGain": { + "before": 0.12, + "after": 0.12 + }, + "fillGain": { + "before": 1, + "after": 1 + }, + "darkThreshold": { + "before": 0.001, + "after": 0.001 + }, + "enabled": { + "before": true, + "after": true + }, + "convertedMaterials": { + "before": 102, + "after": 102 + }, + "enrolledMeshes": { + "before": 827, + "after": 827 + }, + "excludedSlots": { + "before": 380, + "after": 380 + }, + "exclusions": { + "before": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ], + "after": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ] + } + }, + "qualityMarkers": [ + "TN_QUALITY_TIER high mobile=false software=false source=platform" + ], + "report": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/3-2-material-emissive-report.json", + "pngs": [ + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-3-2-material-emissive/after.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "b4b3485964a36e939fd0e302dd4bebdd1c3f0abd3e317b50e88e8b66f53f7a4d" + }, + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-3-2-material-emissive/performance.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "b4b3485964a36e939fd0e302dd4bebdd1c3f0abd3e317b50e88e8b66f53f7a4d" + } + ] + }, + { + "round": 3, + "position": 3, + "arm": "compiled-rim-only", + "pass": false, + "p95": { + "actual": 45.599999999998545, + "expected": 33, + "sampleCount": 414, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [ + { + "code": "TN_PLAYTEST_PERFORMANCE_ASSERTION_FAILED", + "message": "performance.maxFrameMsP95 expected at most 33 ms, observed 45.599999999998545.", + "observedRuntimePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/compiled-rim-only/playtests/performance.playtest.json/observations.json/performanceSeries", + "severity": "error", + "sourcePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/compiled-rim-only/playtests/performance.playtest.json", + "suggestion": "Inspect the recorded frame-cost series and reduce the authored scene cost that owns the regression." + } + ], + "cost": { + "performance.samples": { + "sampleCount": 414, + "valid": true + }, + "performance.maxFrameMsP95": { + "actual": 45.599999999998545, + "expected": 33, + "sampleCount": 414, + "unit": "ms" + }, + "performance.maxDrawCalls": { + "actual": 1176, + "expected": 1300, + "sampleCount": 414, + "unit": "draw calls" + }, + "performance.minFps": { + "actual": 129.87, + "expected": 30, + "sampleCount": 414, + "unit": "fps" + }, + "performance.maxTriangles": { + "actual": 420917, + "expected": 500000, + "sampleCount": 414, + "unit": "triangles" + } + }, + "runtime": "web", + "frames": 603, + "materialLighting": { + "status": { + "before": "measured", + "after": "measured" + }, + "meanRGB": { + "before": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ], + "after": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ] + }, + "meanRadiance": { + "before": 0.5478382931255803, + "after": 0.5478382931255803 + }, + "reason": { + "before": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution.", + "after": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution." + }, + "scope": { + "before": "scene environment source availability; not material-specific reflected contribution", + "after": "scene environment source availability; not material-specific reflected contribution" + }, + "environmentState": { + "before": "bright", + "after": "bright" + }, + "ibl": { + "before": "contributing", + "after": "contributing" + }, + "analyticFill": { + "before": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + }, + "after": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + } + }, + "rimGain": { + "before": 0.12, + "after": 0.12 + }, + "fillGain": { + "before": 1, + "after": 1 + }, + "darkThreshold": { + "before": 0.001, + "after": 0.001 + }, + "enabled": { + "before": true, + "after": true + }, + "convertedMaterials": { + "before": 102, + "after": 102 + }, + "enrolledMeshes": { + "before": 827, + "after": 827 + }, + "excludedSlots": { + "before": 380, + "after": 380 + }, + "exclusions": { + "before": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ], + "after": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ] + } + }, + "qualityMarkers": [ + "TN_QUALITY_TIER high mobile=false software=false source=platform" + ], + "report": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/3-3-compiled-rim-only-report.json", + "pngs": [ + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-3-3-compiled-rim-only/after.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "2c179fc168e7bd3d0c569f634121f0c00dad011418716fae9ddb18c95cf5116a" + }, + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-3-3-compiled-rim-only/performance.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "2c179fc168e7bd3d0c569f634121f0c00dad011418716fae9ddb18c95cf5116a" + } + ] + }, + { + "round": 3, + "position": 4, + "arm": "shared-graph", + "pass": true, + "p95": { + "actual": 30.399999999997817, + "expected": 33, + "sampleCount": 527, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [], + "cost": { + "performance.samples": { + "sampleCount": 527, + "valid": true + }, + "performance.maxFrameMsP95": { + "actual": 30.399999999997817, + "expected": 33, + "sampleCount": 527, + "unit": "ms" + }, + "performance.maxDrawCalls": { + "actual": 1176, + "expected": 1300, + "sampleCount": 527, + "unit": "draw calls" + }, + "performance.minFps": { + "actual": 125, + "expected": 30, + "sampleCount": 527, + "unit": "fps" + }, + "performance.maxTriangles": { + "actual": 420917, + "expected": 500000, + "sampleCount": 527, + "unit": "triangles" + } + }, + "runtime": "web", + "frames": 603, + "materialLighting": { + "status": { + "before": "measured", + "after": "measured" + }, + "meanRGB": { + "before": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ], + "after": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ] + }, + "meanRadiance": { + "before": 0.5478382931255803, + "after": 0.5478382931255803 + }, + "reason": { + "before": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution.", + "after": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution." + }, + "scope": { + "before": "scene environment source availability; not material-specific reflected contribution", + "after": "scene environment source availability; not material-specific reflected contribution" + }, + "environmentState": { + "before": "bright", + "after": "bright" + }, + "ibl": { + "before": "contributing", + "after": "contributing" + }, + "analyticFill": { + "before": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + }, + "after": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + } + }, + "rimGain": { + "before": 0.12, + "after": 0.12 + }, + "fillGain": { + "before": 1, + "after": 1 + }, + "darkThreshold": { + "before": 0.001, + "after": 0.001 + }, + "enabled": { + "before": true, + "after": true + }, + "convertedMaterials": { + "before": 102, + "after": 102 + }, + "enrolledMeshes": { + "before": 827, + "after": 827 + }, + "excludedSlots": { + "before": 380, + "after": 380 + }, + "exclusions": { + "before": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ], + "after": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ] + } + }, + "qualityMarkers": [ + "TN_QUALITY_TIER high mobile=false software=false source=platform" + ], + "report": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/3-4-shared-graph-report.json", + "pngs": [ + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-3-4-shared-graph/after.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "91b6fef4d5795cd9b5501a7c73c359ea623f1293262ad4ccd33b025f80a205f0" + }, + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-3-4-shared-graph/performance.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "91b6fef4d5795cd9b5501a7c73c359ea623f1293262ad4ccd33b025f80a205f0" + } + ] + }, + { + "round": 3, + "position": 5, + "arm": "runtime-zero", + "pass": false, + "p95": { + "actual": 46.10000000000218, + "expected": 33, + "sampleCount": 399, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [ + { + "code": "TN_PLAYTEST_PERFORMANCE_ASSERTION_FAILED", + "message": "performance.maxFrameMsP95 expected at most 33 ms, observed 46.10000000000218.", + "observedRuntimePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/runtime-zero/playtests/performance.playtest.json/observations.json/performanceSeries", + "severity": "error", + "sourcePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/runtime-zero/playtests/performance.playtest.json", + "suggestion": "Inspect the recorded frame-cost series and reduce the authored scene cost that owns the regression." + } + ], + "cost": { + "performance.samples": { + "sampleCount": 399, + "valid": true + }, + "performance.maxFrameMsP95": { + "actual": 46.10000000000218, + "expected": 33, + "sampleCount": 399, + "unit": "ms" + }, + "performance.maxDrawCalls": { + "actual": 1176, + "expected": 1300, + "sampleCount": 399, + "unit": "draw calls" + }, + "performance.minFps": { + "actual": 121.95, + "expected": 30, + "sampleCount": 399, + "unit": "fps" + }, + "performance.maxTriangles": { + "actual": 420917, + "expected": 500000, + "sampleCount": 399, + "unit": "triangles" + } + }, + "runtime": "web", + "frames": 603, + "materialLighting": { + "status": { + "before": "measured", + "after": "measured" + }, + "meanRGB": { + "before": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ], + "after": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ] + }, + "meanRadiance": { + "before": 0.5478382931255803, + "after": 0.5478382931255803 + }, + "reason": { + "before": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution.", + "after": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution." + }, + "scope": { + "before": "scene environment source availability; not material-specific reflected contribution", + "after": "scene environment source availability; not material-specific reflected contribution" + }, + "environmentState": { + "before": "bright", + "after": "bright" + }, + "ibl": { + "before": "contributing", + "after": "contributing" + }, + "analyticFill": { + "before": { + "requestedGain": 0, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + }, + "after": { + "requestedGain": 0, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + } + }, + "rimGain": { + "before": 0, + "after": 0 + }, + "fillGain": { + "before": 0, + "after": 0 + }, + "darkThreshold": { + "before": 0.001, + "after": 0.001 + }, + "enabled": { + "before": true, + "after": true + }, + "convertedMaterials": { + "before": 102, + "after": 102 + }, + "enrolledMeshes": { + "before": 827, + "after": 827 + }, + "excludedSlots": { + "before": 380, + "after": 380 + }, + "exclusions": { + "before": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ], + "after": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ] + } + }, + "qualityMarkers": [ + "TN_QUALITY_TIER high mobile=false software=false source=platform" + ], + "report": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/3-5-runtime-zero-report.json", + "pngs": [ + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-3-5-runtime-zero/after.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "4281572e9ba99fd5ab65709fa37feb6b58a26f05b840e678925f3d49a004e578" + }, + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-3-5-runtime-zero/performance.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "4281572e9ba99fd5ab65709fa37feb6b58a26f05b840e678925f3d49a004e578" + } + ] + }, + { + "round": 3, + "position": 6, + "arm": "copy-only", + "pass": true, + "p95": { + "actual": 28.099999999998545, + "expected": 33, + "sampleCount": 541, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [], + "cost": { + "performance.samples": { + "sampleCount": 541, + "valid": true + }, + "performance.maxFrameMsP95": { + "actual": 28.099999999998545, + "expected": 33, + "sampleCount": 541, + "unit": "ms" + }, + "performance.maxDrawCalls": { + "actual": 1176, + "expected": 1300, + "sampleCount": 541, + "unit": "draw calls" + }, + "performance.minFps": { + "actual": 133.33, + "expected": 30, + "sampleCount": 541, + "unit": "fps" + }, + "performance.maxTriangles": { + "actual": 420917, + "expected": 500000, + "sampleCount": 541, + "unit": "triangles" + } + }, + "runtime": "web", + "frames": 603, + "materialLighting": { + "status": { + "before": "measured", + "after": "measured" + }, + "meanRGB": { + "before": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ], + "after": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ] + }, + "meanRadiance": { + "before": 0.5478382931255803, + "after": 0.5478382931255803 + }, + "reason": { + "before": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution.", + "after": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution." + }, + "scope": { + "before": "scene environment source availability; not material-specific reflected contribution", + "after": "scene environment source availability; not material-specific reflected contribution" + }, + "environmentState": { + "before": "bright", + "after": "bright" + }, + "ibl": { + "before": "contributing", + "after": "contributing" + }, + "analyticFill": { + "before": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + }, + "after": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + } + }, + "rimGain": { + "before": 0.12, + "after": 0.12 + }, + "fillGain": { + "before": 1, + "after": 1 + }, + "darkThreshold": { + "before": 0.001, + "after": 0.001 + }, + "enabled": { + "before": true, + "after": true + }, + "convertedMaterials": { + "before": 102, + "after": 102 + }, + "enrolledMeshes": { + "before": 827, + "after": 827 + }, + "excludedSlots": { + "before": 380, + "after": 380 + }, + "exclusions": { + "before": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ], + "after": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ] + } + }, + "qualityMarkers": [ + "TN_QUALITY_TIER high mobile=false software=false source=platform" + ], + "report": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/3-6-copy-only-report.json", + "pngs": [ + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-3-6-copy-only/after.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "28669f8e317dbd802c31b8b4e7874f97bc8aab6c5b4aa00a0dc957b3021b7560" + }, + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-3-6-copy-only/performance.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "28669f8e317dbd802c31b8b4e7874f97bc8aab6c5b4aa00a0dc957b3021b7560" + } + ] + }, + { + "round": 3, + "position": 7, + "arm": "current", + "pass": false, + "p95": { + "actual": 42.20000000000073, + "expected": 33, + "sampleCount": 478, + "unit": "ms" + }, + "capture": { + "adapter": { + "architecture": "turing", + "vendor": "nvidia", + "features": "bgra8unorm-storage,chromium-experimental-multi-draw-indirect,chromium-experimental-subgroup-matrix,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,dual-source-blending,float32-blendable,float32-filterable,indirect-first-instance,primitive-index,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-bc,texture-compression-bc-sliced-3d,texture-formats-tier1,texture-formats-tier2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "16384", + "limit.maxStorageBufferBindingSize": "2147483644" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan", + "--disable-frame-rate-limit", + "--disable-gpu-vsync" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 1080, + "width": 1920 + } + }, + "diagnostics": [ + { + "code": "TN_PLAYTEST_PERFORMANCE_ASSERTION_FAILED", + "message": "performance.maxFrameMsP95 expected at most 33 ms, observed 42.20000000000073.", + "observedRuntimePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/current/playtests/performance.playtest.json/observations.json/performanceSeries", + "severity": "error", + "sourcePath": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/current/playtests/performance.playtest.json", + "suggestion": "Inspect the recorded frame-cost series and reduce the authored scene cost that owns the regression." + } + ], + "cost": { + "performance.samples": { + "sampleCount": 478, + "valid": true + }, + "performance.maxFrameMsP95": { + "actual": 42.20000000000073, + "expected": 33, + "sampleCount": 478, + "unit": "ms" + }, + "performance.maxDrawCalls": { + "actual": 1176, + "expected": 1300, + "sampleCount": 478, + "unit": "draw calls" + }, + "performance.minFps": { + "actual": 125, + "expected": 30, + "sampleCount": 478, + "unit": "fps" + }, + "performance.maxTriangles": { + "actual": 420917, + "expected": 500000, + "sampleCount": 478, + "unit": "triangles" + } + }, + "runtime": "web", + "frames": 603, + "materialLighting": { + "status": { + "before": "measured", + "after": "measured" + }, + "meanRGB": { + "before": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ], + "after": [ + 0.5206451431242238, + 0.5474004674843607, + 0.6322482181794397 + ] + }, + "meanRadiance": { + "before": 0.5478382931255803, + "after": 0.5478382931255803 + }, + "reason": { + "before": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution.", + "after": "Estimated linear scene-environment source radiance from 64x32 GPU samples, spherical row weighting and active intensity; not material-specific BRDF contribution." + }, + "scope": { + "before": "scene environment source availability; not material-specific reflected contribution", + "after": "scene environment source availability; not material-specific reflected contribution" + }, + "environmentState": { + "before": "bright", + "after": "bright" + }, + "ibl": { + "before": "contributing", + "after": "contributing" + }, + "analyticFill": { + "before": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + }, + "after": { + "requestedGain": 1, + "admitted": false, + "effectiveGain": 0, + "color": [ + 0.13286832154414627, + 0.19806931954941637, + 0.3371636150376657 + ], + "blackColorOverride": false, + "reason": "not admitted by this qualification" + } + }, + "rimGain": { + "before": 0.12, + "after": 0.12 + }, + "fillGain": { + "before": 1, + "after": 1 + }, + "darkThreshold": { + "before": 0.001, + "after": 0.001 + }, + "enabled": { + "before": true, + "after": true + }, + "convertedMaterials": { + "before": 102, + "after": 102 + }, + "enrolledMeshes": { + "before": 827, + "after": 827 + }, + "excludedSlots": { + "before": 380, + "after": 380 + }, + "exclusions": { + "before": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ], + "after": [ + "Mesh:MeshBasicMaterial:unsupported material type", + "player:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type", + "Mesh:MeshBasicMaterial:unsupported material type" + ] + } + }, + "qualityMarkers": [ + "TN_QUALITY_TIER high mobile=false software=false source=platform" + ], + "report": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/3-7-current-report.json", + "pngs": [ + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-3-7-current/after.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "39477133863838f194160c79e413a7b2f36ab026199ad217f58f87a8b676baf5" + }, + { + "path": "/home/joao/Documents/Codex/2026-10-02/task-3/prd345-retained/shooter-causes1/capture-3-7-current/performance.png", + "dimensions": [ + 1920, + 1080 + ], + "sha256": "39477133863838f194160c79e413a7b2f36ab026199ad217f58f87a8b676baf5" + } + ] + } + ], + "groups": { + "current": { + "n": 6, + "p95Values": [ + 48.29999999999927, + 47.5, + 46.89999999999782, + 50.79999999999927, + 45.89999999999782, + 42.20000000000073 + ], + "passes": 0, + "mean": 46.933333333332484, + "median": 47.19999999999891, + "sampleStdDev": 2.8500292396157443, + "min": 42.20000000000073, + "max": 50.79999999999927 + }, + "runtime-zero": { + "n": 3, + "p95Values": [ + 46.099999999998545, + 62.70000000000073, + 46.10000000000218 + ], + "passes": 0, + "mean": 51.633333333333816, + "median": 46.10000000000218, + "sampleStdDev": 9.584014468547998, + "min": 46.099999999998545, + "max": 62.70000000000073 + }, + "copy-only": { + "n": 3, + "p95Values": [ + 29.399999999997817, + 30.599999999998545, + 28.099999999998545 + ], + "passes": 3, + "mean": 29.36666666666497, + "median": 29.399999999997817, + "sampleStdDev": 1.250333288900727, + "min": 28.099999999998545, + "max": 30.599999999998545 + }, + "material-emissive": { + "n": 3, + "p95Values": [ + 28.69999999999709, + 28.099999999998545, + 29.899999999997817 + ], + "passes": 3, + "mean": 28.899999999997817, + "median": 28.69999999999709, + "sampleStdDev": 0.9165151389909298, + "min": 28.099999999998545, + "max": 29.899999999997817 + }, + "compiled-rim-only": { + "n": 3, + "p95Values": [ + 46.69999999999709, + 45.30000000000291, + 45.599999999998545 + ], + "passes": 0, + "mean": 45.866666666666184, + "median": 45.599999999998545, + "sampleStdDev": 0.7371114795806988, + "min": 45.30000000000291, + "max": 46.69999999999709 + }, + "shared-graph": { + "n": 3, + "p95Values": [ + 30.30000000000291, + 30.599999999998545, + 30.399999999997817 + ], + "passes": 3, + "mean": 30.433333333333092, + "median": 30.399999999997817, + "sampleStdDev": 0.15275252316336876, + "min": 30.30000000000291, + "max": 30.599999999998545 + } + }, + "armSemantics": { + "current": "Full production rim and fill graph; per-material nodes and callbacks.", + "runtime-zero": "Same full graph, actual shared controls rimGain=0 and fillGain=0.", + "copy-only": "Converted MeshStandardNodeMaterial.copy(source); no emissiveNode override. Controller report describes requested convention, while this diagnostic arm omits both terms.", + "material-emissive": "Converted node material with emissiveNode=materialEmissive; diagnostic convention terms omitted.", + "compiled-rim-only": "Rim graph retained; fill graph and its callbacks removed at construction. Controller requested fill fields remain but do not describe this diagnostic graph.", + "shared-graph": "Full same rim/fill shader expression shared by controls WeakMap; allocation-free finite checks; live render-scoped callbacks retained. Appearance/lifecycle validation still required before production admission." + } +} \ No newline at end of file diff --git a/docs/benchmark/prd345/shooter-causes1/validate-projection-proof.mjs b/docs/benchmark/prd345/shooter-causes1/validate-projection-proof.mjs new file mode 100644 index 0000000000..46b3da4624 --- /dev/null +++ b/docs/benchmark/prd345/shooter-causes1/validate-projection-proof.mjs @@ -0,0 +1,18 @@ +// Offline companion for the future isolated fixture producer; no rendering or source mutation. +import assert from 'node:assert/strict'; +import {readFile,writeFile} from 'node:fs/promises'; +import {resolve,dirname} from 'node:path'; +import {createHash} from 'node:crypto'; +const input=process.argv[2];if(!input)throw Error('Expected actual proof-index.json'); +const root=dirname(resolve(input));const index=JSON.parse(await readFile(input,'utf8')); +assert.ok(Array.isArray(index.pairs)&&index.pairs.length>0); +const keys=['cameraMatrixWorld','cameraMatrixWorldInverse','cameraProjectionMatrix','tick','animationTicks','animationSeconds','bufferWidth','bufferHeight']; +const rows=[]; +for(const pair of index.pairs){ + const left=JSON.parse(await readFile(resolve(root,pair.leftSnapshot),'utf8'));const right=JSON.parse(await readFile(resolve(root,pair.rightSnapshot),'utf8')); + for(const snapshot of [left,right])for(const key of keys){assert.ok(Object.hasOwn(snapshot,key),'Missing measured '+key);if(key.startsWith('camera'))assert.ok(Array.isArray(snapshot[key])&&snapshot[key].length===16&&snapshot[key].every(Number.isFinite));else assert.ok(Number.isFinite(snapshot[key]));} + for(const key of keys)assert.deepEqual(left[key],right[key],pair.name+' mismatched '+key); + const pixels=[];for(const path of [pair.leftPNG,pair.rightPNG]){const bytes=await readFile(resolve(root,path));assert.equal(bytes.subarray(1,4).toString(),'PNG');const width=bytes.readUInt32BE(16),height=bytes.readUInt32BE(20);assert.equal(width,left.bufferWidth);assert.equal(height,left.bufferHeight);pixels.push({path,width,height,bytes:bytes.length,sha256:createHash('sha256').update(bytes).digest('hex')});} + rows.push({name:pair.name,matchedProjectionAndClock:true,pixels}); +} +await writeFile(resolve(root,'projection-proof.json'),JSON.stringify({pairs:rows,scope:'Projection/clock validity only; no appearance, material fidelity or performance admission inferred.'},null,2)); diff --git a/docs/verification/prd345/pr440-acceptance-2026-10-05.json b/docs/verification/prd345/pr440-acceptance-2026-10-05.json new file mode 100644 index 0000000000..b277e307aa --- /dev/null +++ b/docs/verification/prd345/pr440-acceptance-2026-10-05.json @@ -0,0 +1,88 @@ +{ + "sourceRevision": "da632c337ca6ea1a60b50291b0c2a8d76d2166c0", + "mergedBase": "d5d169705f34b6b41d1888f3885cb8968e81cb60", + "captureSourceUnchangedByLatestBase": true, + "scenarioLimitsChanged": false, + "performanceAccepted": false, + "codeCausalityEstablished": false, + "runs": [ + { + "launch": 1, + "template": "shooter", + "pass": false, + "p95Ms": 112.9, + "p95LimitMs": 33, + "sampleCount": 307, + "fps": 33.78, + "draws": 1176, + "triangles": 420917, + "reportSha256": "47fa058a3fc72d9ca05c4351c74e524424fbc5f43c0a4a6b116a5de5a8a168d7", + "localReport": "artifacts/pr440-acceptance/integrated-performance/1-shooter/report.json" + }, + { + "launch": 2, + "template": "snow", + "pass": false, + "p95Ms": 59.8, + "p95LimitMs": 33, + "sampleCount": 225, + "fps": 138.89, + "draws": 119, + "triangles": 888397, + "reportSha256": "843ac95940e2d7fdd50cf95b577cef63cd388762abdf84847e001e34e170265c", + "localReport": "artifacts/pr440-acceptance/integrated-performance/2-snow/report.json" + }, + { + "launch": 3, + "template": "snow", + "pass": false, + "p95Ms": 48.6, + "p95LimitMs": 33, + "sampleCount": 227, + "fps": 243.9, + "draws": 119, + "triangles": 888397, + "reportSha256": "b6277894cfdc27d793d069f2580b85e9a7851bdabc0aca338084be9f6d884f97", + "localReport": "artifacts/pr440-acceptance/integrated-performance/3-snow/report.json" + }, + { + "launch": 4, + "template": "shooter", + "pass": false, + "p95Ms": 144.5, + "p95LimitMs": 33, + "sampleCount": 345, + "fps": 27.93, + "draws": 1176, + "triangles": 420917, + "reportSha256": "c173f8a99701208c652caa35b3aa9c0d496466adf3e7f27232463c01b1839f9d", + "localReport": "artifacts/pr440-acceptance/integrated-performance/4-shooter/report.json" + }, + { + "launch": 5, + "template": "shooter", + "pass": false, + "p95Ms": 88.9, + "p95LimitMs": 33, + "sampleCount": 279, + "fps": 35.97, + "draws": 1176, + "triangles": 420917, + "reportSha256": "26909d664f7e5e0a73946f5758813e18e7238f6cd5ed50464d81997b9e305c7d", + "localReport": "artifacts/pr440-acceptance/integrated-performance/5-shooter/report.json" + }, + { + "launch": 6, + "template": "snow", + "pass": false, + "p95Ms": 51.8, + "p95LimitMs": 33, + "sampleCount": 227, + "fps": 243.9, + "draws": 119, + "triangles": 888397, + "reportSha256": "85ad586367a6eb5becfbbc9e7d6a9de32852b03d4e6a2f5b55ef5420f21ce146", + "localReport": "artifacts/pr440-acceptance/integrated-performance/6-snow/report.json" + } + ] +} diff --git a/docs/verification/prd345/pr440-acceptance-2026-10-05.md b/docs/verification/prd345/pr440-acceptance-2026-10-05.md new file mode 100644 index 0000000000..aad1ebc456 --- /dev/null +++ b/docs/verification/prd345/pr440-acceptance-2026-10-05.md @@ -0,0 +1,72 @@ +# PR #440 merged-source acceptance checkpoint — 2026-10-05 + +Candidate source: `da632c337ca6ea1a60b50291b0c2a8d76d2166c0`, reconciled with +`develop` `d5d169705f34b6b41d1888f3885cb8968e81cb60`. The latest base adds docs and +exposure clock tests; it changes no captured runtime, template, scenario or asset inputs. +Phase 2 and Phase 3 remain open. No original threshold, deadline or assertion was weakened. + +| Criterion | Evidence at this checkpoint | Result | +| --- | --- | --- | +| Shared graph and actual camera layers | Independent review found the owner-camera bug; the new same-frame/four-render regression was red before repair. All twelve template copies and the fixture use actual `NodeFrame.camera`. Camera/matrix/lifecycle 31/31; scaffold/compiler contracts 101/101, real thirteen-template hashes. | CPU verified | +| Isolated difficult lighting | Six fresh local end-pose PNGs independently inspected; unchanged decoded-PNG qualifier passes. Edge/body p99 52/2 versus zero-rim 7/0, original margin 30. Fill p99 43 versus black 0; black fails only two intended tone assertions. Marker omission passes the runner but is rejected by the external marker qualifier. Actual camera world/inverse/projection matrices match across all four assertion arms. | Verified for this fixture | +| Build and CPU contracts | Ordinary JS/DTS build, root typecheck, lint, docs and budgets pass. Lint has existing warnings; budgets reports existing native-census drift. Latest exposure/docs/instruction tests 35/35. | Verified | +| Current integrated frame budget | Six fresh unchanged 1920×1080, warmup60, 33 ms scenarios; table below. | **RED** | +| Startup and gameplay/all-template gates | Recorded incomplete startup warmup is not repeated startup p95. Full root `pnpm test`, all-template gates, dark/no-sun per-template appearance, multi-camera and mixed-material/disposal GPU pixels have not been rerun here. | Unverified | +| Native | Existing primary host predates current native/WebGPU inputs. No native build or launch in this task. Historical conservative original-material fallback cannot prove enabled native grazing/fill. The previously denied native backlight replay/sampler was not attempted. | Unverified; enabled path unresolved | + +## Integrated performance — all outcomes retained + +| Launch | Template | p95 ms (limit 33) | Samples | FPS (minimum 30) | Draws | Triangles | +| --- | --- | ---: | ---: | ---: | ---: | ---: | +| 1 | shooter | **112.9** | 307 | 33.78 | 1176 | 420917 | +| 2 | snow | **59.8** | 225 | 138.89 | 119 | 888397 | +| 3 | snow | **48.6** | 227 | 243.90 | 119 | 888397 | +| 4 | shooter | **144.5** | 345 | **27.93** | 1176 | 420917 | +| 5 | shooter | **88.9** | 279 | 35.97 | 1176 | 420917 | +| 6 | snow | **51.8** | 227 | 243.90 | 119 | 888397 | + +All six fail p95; launch 4 also fails FPS. Draw and triangle limits pass in every run. +[Report seals](pr440-acceptance-2026-10-05.json) identify the retained raw local reports. +These are failed acceptance under recorded conditions; this series does not isolate code causality. + +The serial captures used the global `/tmp/threenative-playtest-capture` lease, separate child +temporary directories, hardware NVIDIA Turing WebGPU, and CPU affinity `10,11,22,23` +(two physical cores). The allocation protected concurrent CI but was not established as the +original performance allocation. Preflight load was 26.7 with other GPU clients; a later actual +15-second sample measured CPU busy 59.6–84.7% and CPU pressure some avg10 about 21.7%. +GPU samples were mostly 6–7% at 300–315 MHz/P8 with a 30%/1515 MHz/P2 spike. Foreign +processes and affinities were not changed. A suitable comparison window remains pending. + +## Historical evidence transfer and current-asset comparison + +All 21 retained raw/gzip report seals and 12 selected historical PNG seals match their manifest. +The published shared graph at `6875e1f2` has identical emitted JS token streams to the historical +candidate after only comments, formatting and relative-import suffix normalization. The current +camera repair deliberately changes callbacks, requiring fresh evidence. + +The shooter scenario SHA, adapter/features, browser flags and viewport match the historical run. +41 of 50 source files match historical shared-graph bytes; differences include the repaired graph, +unused declaration removal and later opt-in exposure plumbing (still disabled). Draw/triangle +counts match. All sixteen cooked texture image payloads match historical seals despite renamed +paths; basis files, sky, icon and favicon match. Both GLB hashes, manifest and receipt differ. + +Historical cooked GLBs are absent from their documented retained paths and are not in the +tracked benchmark archive. Direct decoded historical cooked equivalence cannot be established. +Both raw model sources are byte-identical to the historical revision. Decoding raw versus current +cooked confirms animation payloads are unchanged; current cooking also prunes nodes/accessors, +changes texture packaging and converts the viewmodel scope from BLEND to MASK. These are +real cooking transformations, not proof that historical cooked assets are equivalent. + +Two separate owned comparison projects now use identical current packages, dependency locks, +all 25 cooked asset files and the unchanged scenario. The current-source per-material control imports the same +repaired allocation-free helpers; only per-material graph construction versus WeakMap caching +differs. Independent review rejected the initial comparison because its old inline helpers +allocated arrays; those first arms are retained, and the corrected v2 arms were rebuilt and sealed +before any GPU launch (`comparison-projects-v2/`, `comparison-source-proof-v2.json` in the +delegated workspace). Both CPU-only Vite bundles pass, with no +asset recook. One balanced comparison is planned when a recorded capture-only allocation is +available; it cannot substitute for the original all-template/startup/native acceptance. + +All new images and raw captures remain local under `artifacts/pr440-acceptance/` and the delegated +workspace. Failed wrappers and unobserved launches are retained. No image was uploaded or added +to Git while sharing approval remains pending. diff --git a/packages/create-threenative/__tests__/backlight-shared-graph.spec.ts b/packages/create-threenative/__tests__/backlight-shared-graph.spec.ts new file mode 100644 index 0000000000..ae996b1ad3 --- /dev/null +++ b/packages/create-threenative/__tests__/backlight-shared-graph.spec.ts @@ -0,0 +1,170 @@ +import assert from "node:assert/strict"; +import { + Camera, + Color, + DirectionalLight, + MeshStandardMaterial, + Scene, + Texture, + Vector3, +} from "three"; +import type Node from "three/src/nodes/core/Node.js"; +import NodeFrame from "three/src/nodes/core/NodeFrame.js"; +import { test } from "vitest"; +type LiveNode = Node & { value: unknown }; +import { backlightMaterial } from "../templates/starter/src/render/backlightMaterial.js"; +test("shared full graph preserves live render boundaries and independent material ownership", () => { + const scene = new Scene(); + const camera = new Camera(); + const key = new DirectionalLight(); + scene.add(key); + key.position.set(1, 2, 3); + scene.updateMatrixWorld(true); + const controls = { + scene, + camera, + key, + rimGain: 0.12, + fillGain: 1, + fillColor: new Color(0.2, 0.3, 0.4), + fillDirection: new Vector3(0, 1, 0), + fillAngularSize: 1.25, + fillAdmitted: true, + }; + const first = new MeshStandardMaterial({ color: 0xff0000, emissive: 0x112233 }); + const second = new MeshStandardMaterial({ color: 0x00ff00, emissive: 0x334455 }); + const borrowedMap = new Texture(); + first.map = borrowedMap; + let mapDisposals = 0; + borrowedMap.addEventListener("dispose", () => { + mapDisposals += 1; + }); + const a = backlightMaterial(first, controls); + const b = backlightMaterial(second, controls); + assert.equal(a.emissiveNode, b.emissiveNode, "same controls must share the complete graph"); + assert.notEqual(a.color, b.color); + assert.equal(a.color.getHex(), first.color.getHex()); + assert.equal(b.emissive.getHex(), second.emissive.getHex()); + assert.notEqual( + backlightMaterial(first, { ...controls }).emissiveNode, + a.emissiveNode, + "independent controllers must not share", + ); + const nodes = new Set(); + assert.ok(a.emissiveNode); + a.emissiveNode.traverse((n) => { + if (n.getUpdateType() === "render") nodes.add(n as LiveNode); + }); + assert.equal(nodes.size, 8); + let calls = 0; + for (const n of nodes) { + const update = n.update.bind(n); + n.update = (frame: NodeFrame) => { + calls++; + return update(frame); + }; + } + const frame = new NodeFrame(); + frame.renderId = 1; + for (const material of [a, b]) { + assert.ok(material.emissiveNode); + material.emissiveNode.traverse((n) => { + if (nodes.has(n as LiveNode)) frame.updateNode(n); + }); + } + assert.equal(calls, 8); + controls.fillDirection.set(1, 0, 0); + key.position.set(-2, 0, 0); + scene.updateMatrixWorld(true); + controls.rimGain = 0.4; + controls.fillAdmitted = false; + key.color = new Color(0.7, 0.6, 0.5); + key.intensity = 2; + frame.renderId = 2; + for (const n of nodes) frame.updateNode(n); + assert.equal(calls, 16); + assert.ok([...nodes].some((n) => n.value === controls.fillDirection)); + assert.ok( + [...nodes].some( + (n) => + n.value instanceof Vector3 && + n.value !== controls.fillDirection && + n.value.equals(new Vector3(-1, 0, 0)), + ), + ); + assert.ok([...nodes].some((n) => n.value === 0.4)); + assert.ok([...nodes].some((n) => n.value === key.color)); + assert.ok([...nodes].some((n) => n.value === 2)); + const matrices = key.matrixWorld.elements.slice(); + scene.remove(key); + frame.renderId = 3; + for (const n of nodes) frame.updateNode(n); + assert.ok(![...nodes].some((n) => n.value === 2)); + assert.deepEqual(key.matrixWorld.elements, matrices); + scene.add(key); + camera.layers.set(2); + frame.renderId = 4; + for (const n of nodes) frame.updateNode(n); + assert.ok(![...nodes].some((n) => n.value === 2)); + camera.layers.set(0); + const secondFrame = new NodeFrame(); + secondFrame.renderId = 4; + for (const n of nodes) secondFrame.updateNode(n); + assert.equal(calls, 40, "independent renderer frames must update shared nodes"); + controls.rimGain = Number.NaN; + secondFrame.renderId = 5; + const firstNode = [...nodes][0]; + assert.ok(firstNode); + assert.throws(() => secondFrame.updateNode(firstNode), /finite/); + assert.equal(a.map, borrowedMap); + a.dispose(); + assert.equal(mapDisposals, 0); + assert.equal(first.map, borrowedMap); + assert.equal(b.emissiveNode, a.emissiveNode); + controls.rimGain = 0.12; + secondFrame.renderId = 6; + for (const n of nodes) secondFrame.updateNode(n); +}); + +test("shared graph follows the actual render camera and live key layers within one frame", () => { + const scene = new Scene(); + const key = new DirectionalLight(0xffffff, 2); + key.position.set(0, 2, -3); + scene.add(key); + scene.updateMatrixWorld(true); + const ownerCamera = new Camera(); + const renderCamera = new Camera(); + renderCamera.layers.set(1); + const controls = { + scene, + camera: ownerCamera, + key, + rimGain: 0.12, + fillGain: 1, + fillColor: new Color(0.2, 0.3, 0.4), + fillDirection: new Vector3(0, 1, 0), + fillAngularSize: 1.25, + fillAdmitted: false, + }; + const material = backlightMaterial(new MeshStandardMaterial(), controls); + const nodes = new Set(); + material.emissiveNode?.traverse((node) => { + if (node.getUpdateType() === "render") nodes.add(node as LiveNode); + }); + const frame = new NodeFrame(); + frame.frameId = 7; + const render = (camera: Camera, renderId: number) => { + frame.camera = camera; + frame.renderId = renderId; + for (const node of nodes) frame.updateNode(node); + return [...nodes].some((node) => node.value === 2); + }; + assert.equal(render(renderCamera, 1), false, "actual camera excludes the key"); + ownerCamera.layers.set(1); + assert.equal(render(new Camera(), 2), true, "actual camera admits the key despite owner layers"); + key.layers.set(1); + assert.equal(render(new Camera(), 3), false, "live key layers remove its contribution"); + assert.equal(render(renderCamera, 4), true, "second camera admits the changed key layers"); + assert.equal(frame.frameId, 7, "all camera renders belong to one frame"); + material.dispose(); +}); diff --git a/packages/create-threenative/__tests__/fixtures/backlight-defaults/backlightControls.ts b/packages/create-threenative/__tests__/fixtures/backlight-defaults/backlightControls.ts new file mode 100644 index 0000000000..af8f5382ec --- /dev/null +++ b/packages/create-threenative/__tests__/fixtures/backlight-defaults/backlightControls.ts @@ -0,0 +1,66 @@ +import type { Camera, Color, Object3D, Vector3 } from "three"; +import type { BacklightControls } from "./material.js"; +function finiteColor(color: Color) { + return ( + Number.isFinite(color.r) && + color.r >= 0 && + Number.isFinite(color.g) && + color.g >= 0 && + Number.isFinite(color.b) && + color.b >= 0 + ); +} +export function validateControls(controls: BacklightControls) { + if ( + !Number.isFinite(controls.rimGain) || + controls.rimGain < 0 || + !Number.isFinite(controls.key.intensity) || + controls.key.intensity < 0 || + !finiteColor(controls.key.color) || + !Number.isFinite(controls.fillGain) || + controls.fillGain < 0 || + !Number.isFinite(controls.fillAngularSize) || + controls.fillAngularSize <= 0 || + controls.fillAngularSize > 1.5 || + !Number.isFinite(controls.fillDirection.lengthSq()) || + controls.fillDirection.lengthSq() === 0 || + !finiteColor(controls.fillColor) + ) + throw new Error( + "Backlight controls require finite nonnegative gains, a direction and angular size in (0, 1.5].", + ); +} +export function resolveKey( + controls: BacklightControls, + direction: Vector3, + target: Vector3, + camera: Camera = controls.camera, +) { + validateControls(controls); + // Read the renderer/game-updated matrices, as upstream Three light uniforms do. + // Targets outside the scene must be updated by their owner before rendering. + // Never mutate shared light/ancestor matrices inside a material render callback. + target.setFromMatrixPosition(controls.key.target.matrixWorld); + direction.setFromMatrixPosition(controls.key.matrixWorld).sub(target); + if ( + !Number.isFinite(direction.x) || + !Number.isFinite(direction.y) || + !Number.isFinite(direction.z) + ) + throw new Error("Key endpoints must be finite."); + const lengthSq = direction.lengthSq(); + if (!Number.isFinite(lengthSq)) throw new Error("Key direction magnitude must be finite."); + if (lengthSq <= 1e-12) { + direction.set(0, 1, 0); + return 0; + } + direction.normalize(); + if (!controls.key.layers.test(camera.layers)) return 0; + let current: Object3D | null = controls.key; + while (current !== null) { + if (!current.visible) return 0; + if (current === controls.scene) return controls.key.intensity; + current = current.parent; + } + return 0; +} diff --git a/packages/create-threenative/__tests__/fixtures/backlight-defaults/main.ts b/packages/create-threenative/__tests__/fixtures/backlight-defaults/main.ts index 22244593e1..3c7c98a258 100644 --- a/packages/create-threenative/__tests__/fixtures/backlight-defaults/main.ts +++ b/packages/create-threenative/__tests__/fixtures/backlight-defaults/main.ts @@ -199,6 +199,9 @@ class QualificationScene extends Scene { bufferWidth: ctx.renderer.domElement.width, bufferHeight: ctx.renderer.domElement.height, cameraPosition: camera.position.toArray(), + cameraMatrixWorld: camera.matrixWorld.toArray(), + cameraMatrixWorldInverse: camera.matrixWorldInverse.toArray(), + cameraProjectionMatrix: camera.projectionMatrix.toArray(), }), }); console.info("TN_BACKLIGHT_QUALIFICATION", { diff --git a/packages/create-threenative/__tests__/fixtures/backlight-defaults/material.ts b/packages/create-threenative/__tests__/fixtures/backlight-defaults/material.ts index 1eed712199..21312efa65 100644 --- a/packages/create-threenative/__tests__/fixtures/backlight-defaults/material.ts +++ b/packages/create-threenative/__tests__/fixtures/backlight-defaults/material.ts @@ -29,6 +29,7 @@ import { vec3, } from "three/tsl"; import { MeshStandardNodeMaterial } from "three/webgpu"; +import { resolveKey, validateControls } from "./backlightControls.js"; export interface BacklightControls { readonly key: DirectionalLight; @@ -45,50 +46,7 @@ export interface BacklightControls { fillAdmitted: boolean; } -function validateControls(controls: BacklightControls) { - if ( - !Number.isFinite(controls.rimGain) || - controls.rimGain < 0 || - !Number.isFinite(controls.key.intensity) || - controls.key.intensity < 0 || - !controls.key.color.toArray().every((value) => Number.isFinite(value) && value >= 0) || - !Number.isFinite(controls.fillGain) || - controls.fillGain < 0 || - !Number.isFinite(controls.fillAngularSize) || - controls.fillAngularSize <= 0 || - controls.fillAngularSize > 1.5 || - !Number.isFinite(controls.fillDirection.lengthSq()) || - controls.fillDirection.lengthSq() === 0 || - !controls.fillColor.toArray().every((value) => Number.isFinite(value) && value >= 0) - ) - throw new Error( - "Backlight controls require finite nonnegative gains, a direction and angular size in (0, 1.5].", - ); -} -function resolveKey(controls: BacklightControls, direction: Vector3, target: Vector3) { - validateControls(controls); - // Read the renderer/game-updated matrices, as upstream Three light uniforms do. - // Targets outside the scene must be updated by their owner before rendering. - // Never mutate shared light/ancestor matrices inside a material render callback. - target.setFromMatrixPosition(controls.key.target.matrixWorld); - direction.setFromMatrixPosition(controls.key.matrixWorld).sub(target); - if (!direction.toArray().every(Number.isFinite)) throw new Error("Key endpoints must be finite."); - const lengthSq = direction.lengthSq(); - if (!Number.isFinite(lengthSq)) throw new Error("Key direction magnitude must be finite."); - if (lengthSq <= 1e-12) { - direction.set(0, 1, 0); - return 0; - } - direction.normalize(); - if (!controls.key.layers.test(controls.camera.layers)) return 0; - let current: Object3D | null = controls.key; - while (current !== null) { - if (!current.visible) return 0; - if (current === controls.scene) return controls.key.intensity; - current = current.parent; - } - return 0; -} +const graphs = new WeakMap>(); /** * Preserve the upstream standard PBR/normal/skinning paths and original material emissive. @@ -106,6 +64,16 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: Backli ); validateControls(controls); const material = new MeshStandardNodeMaterial().copy(source); + let graph = graphs.get(controls); + if (!graph) { + graph = createGraph(controls); + graphs.set(controls, graph); + } + material.emissiveNode = graph; + return material; +} + +function createGraph(controls: BacklightControls) { const rimGain = uniform(controls.rimGain).onRenderUpdate(() => { validateControls(controls); return controls.rimGain; @@ -132,13 +100,13 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: Backli }); const keyDirectionValue = new Vector3(0, 1, 0); const keyTargetValue = new Vector3(); - const keyDirection = uniform(keyDirectionValue).onRenderUpdate(() => { - resolveKey(controls, keyDirectionValue, keyTargetValue); + const keyDirection = uniform(keyDirectionValue).onRenderUpdate((frame) => { + resolveKey(controls, keyDirectionValue, keyTargetValue, frame.camera ?? controls.camera); return keyDirectionValue; }); // Removal/visibility/intensity are live. A removed sun cannot leave an invented rim behind. - const keyGain = uniform(0).onRenderUpdate(() => - resolveKey(controls, keyDirectionValue, keyTargetValue), + const keyGain = uniform(0).onRenderUpdate((frame) => + resolveKey(controls, keyDirectionValue, keyTargetValue, frame.camera ?? controls.camera), ); const N = normalView.normalize(); const V = positionViewDirection.normalize(); @@ -173,6 +141,5 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: Backli .mul(float(1).sub(cosRadius)) .mul(2); const fill = diffuseFill.add(specularFill).mul(fillColor).mul(fillGain); - material.emissiveNode = materialEmissive.add(rim).add(fill); - return material; + return materialEmissive.add(rim).add(fill); } diff --git a/packages/create-threenative/__tests__/scaffold.spec.ts b/packages/create-threenative/__tests__/scaffold.spec.ts index 1000addd98..5d15b397d5 100644 --- a/packages/create-threenative/__tests__/scaffold.spec.ts +++ b/packages/create-threenative/__tests__/scaffold.spec.ts @@ -175,19 +175,21 @@ const BUG_REPORT_SKILL_PATHS = [ // Re-measured on current develop plus TS7: restoring only each compiler manifest and // rain's shader API import recovers all 13 develop fingerprints. const PRD_201_PARENT_SCAFFOLD_HASHES: Readonly> = { - "action-rpg": "1e9e05b2ddd8a7b576f9b5e229a175e93db5cd5d8024b8e61b40d4f90894d631", - minimal: "a7f1a7481c6ed7667b1cdcc85990dbbccf2cbec59ce2b65799c232bf08c41918", - platformer: "8033728a0b8a14d2d42143d6665e0f3ee5822dfa320ee3f9fbae340e0082f7b9", - puzzle: "7dc75d6999576ff64d33a2ce52323334602a76f54fe29126a7a3ddfcececfac6", - racing: "8cded24d0f31cb9b76b5ab199ee0a4f1845c4466e96cc6ac49c2b3d8b8c277ac", + // Re-measured through this generator contract on PR440 merged with develop 45565868: + // TS7/API6 compiler pins plus shared render graph and actual-render-camera light layers. + "action-rpg": "913c20b4a7a15458204570daae4f1aa30e75dba67e42702ff507a9ec781ef692", + minimal: "151aec43f5bd3a697abe1e3c48cd1246468f4544a48f1f1ef3e8f9f4d0db792f", + platformer: "277d034652896c733071d3def3b32c29ceb2211360ffdc3de08b0a719b0d975e", + puzzle: "f867724339566fb2d67a4614261da0e5d23167d51138fa81bea79085741ef141", + racing: "20c92ebf0762f6e80a6ee6e542c3e4d7144f2b43675eeb95beabf3bb93642f8b", rain: "21dbd2a9100f3e1dfc9ea0a474fd5f3b429a55ae4e968a3741dccaf57e05bfc8", - rts: "d009ce4bf88df41780b6e98f9923c85266824e2f9e7e00075a48f779f2bfc578", - runner: "5c2c6c40fbee5d3c55c7cccbc05c6860ad62aadf9c65ae947095a9a2bbdbe79c", - sailing: "afe80626d46070fcd2ab3f520c603eaef09a07fb03acd49b1659b06a898a39be", - shooter: "c0f9f3110db4c8fa90d29ebaf37c3aa995654ee7ff3264dbd7033ac91b8e6f65", - snow: "5873bb82bab520d5f29c127161e1447c0657034b8f40e366617ad44686f4fa06", - starter: "4cd799d72f936554c2d61cfe70879f15dde39d3fc77a9183e48d891fc8f62473", - "tower-defense": "cf63b89d4f3939a05d65179291368b865e9b1491231a749339a81e1df4c40906", + rts: "03e1b67e66f104c305d513af145913579e6529aa000f0bf44f734a8a92c89fe8", + runner: "7ef226bda60aa813b2d85ee1da30bebbc2c63aac2d38828d40967c254163863e", + sailing: "2d9a3bbfbb15f81699c779950a96d30526f05956ab8e52e1327dd884c0e39493", + shooter: "7913e84a7b59ef54e5e45996be13143bb41aa531b9597eaf196c590532ca716d", + snow: "ce85dc72f12d267a394bf6befefe59da537d52f565a96fde703a50ff06c46754", + starter: "af8956584e6dc12af8ae7c9f78a21d5cc45f6c8ed3650218e433bae414a6ba52", + "tower-defense": "b915904e5ceb4769a1a9a7a2a82260d14346b3ffa6ea724d1c8dc5ec93c28156", }; const GENERATED_SCAFFOLD_METADATA = diff --git a/packages/create-threenative/templates/action-rpg/src/render/backlightControls.ts b/packages/create-threenative/templates/action-rpg/src/render/backlightControls.ts new file mode 100644 index 0000000000..2d7b94bbf6 --- /dev/null +++ b/packages/create-threenative/templates/action-rpg/src/render/backlightControls.ts @@ -0,0 +1,66 @@ +import type { Camera, Color, Object3D, Vector3 } from "three"; +import type { IBacklightControls } from "./backlightMaterial.js"; +function finiteColor(color: Color) { + return ( + Number.isFinite(color.r) && + color.r >= 0 && + Number.isFinite(color.g) && + color.g >= 0 && + Number.isFinite(color.b) && + color.b >= 0 + ); +} +export function validateControls(controls: IBacklightControls) { + if ( + !Number.isFinite(controls.rimGain) || + controls.rimGain < 0 || + !Number.isFinite(controls.key.intensity) || + controls.key.intensity < 0 || + !finiteColor(controls.key.color) || + !Number.isFinite(controls.fillGain) || + controls.fillGain < 0 || + !Number.isFinite(controls.fillAngularSize) || + controls.fillAngularSize <= 0 || + controls.fillAngularSize > 1.5 || + !Number.isFinite(controls.fillDirection.lengthSq()) || + controls.fillDirection.lengthSq() === 0 || + !finiteColor(controls.fillColor) + ) + throw new Error( + "Backlight controls require finite nonnegative gains, a direction and angular size in (0, 1.5].", + ); +} +export function resolveKey( + controls: IBacklightControls, + direction: Vector3, + target: Vector3, + camera: Camera = controls.camera, +) { + validateControls(controls); + // Read the renderer/game-updated matrices, as upstream Three light uniforms do. + // Targets outside the scene must be updated by their owner before rendering. + // Never mutate shared light/ancestor matrices inside a material render callback. + target.setFromMatrixPosition(controls.key.target.matrixWorld); + direction.setFromMatrixPosition(controls.key.matrixWorld).sub(target); + if ( + !Number.isFinite(direction.x) || + !Number.isFinite(direction.y) || + !Number.isFinite(direction.z) + ) + throw new Error("Key endpoints must be finite."); + const lengthSq = direction.lengthSq(); + if (!Number.isFinite(lengthSq)) throw new Error("Key direction magnitude must be finite."); + if (lengthSq <= 1e-12) { + direction.set(0, 1, 0); + return 0; + } + direction.normalize(); + if (!controls.key.layers.test(camera.layers)) return 0; + let current: Object3D | null = controls.key; + while (current !== null) { + if (!current.visible) return 0; + if (current === controls.scene) return controls.key.intensity; + current = current.parent; + } + return 0; +} diff --git a/packages/create-threenative/templates/action-rpg/src/render/backlightMaterial.ts b/packages/create-threenative/templates/action-rpg/src/render/backlightMaterial.ts index 4c8584f7b6..3bd6c1c444 100644 --- a/packages/create-threenative/templates/action-rpg/src/render/backlightMaterial.ts +++ b/packages/create-threenative/templates/action-rpg/src/render/backlightMaterial.ts @@ -29,6 +29,7 @@ import { vec3, } from "three/tsl"; import { MeshStandardNodeMaterial } from "three/webgpu"; +import { resolveKey, validateControls } from "./backlightControls.js"; export interface IBacklightControls { readonly key: DirectionalLight; @@ -45,50 +46,7 @@ export interface IBacklightControls { fillAdmitted: boolean; } -function validateControls(controls: IBacklightControls) { - if ( - !Number.isFinite(controls.rimGain) || - controls.rimGain < 0 || - !Number.isFinite(controls.key.intensity) || - controls.key.intensity < 0 || - !controls.key.color.toArray().every((value) => Number.isFinite(value) && value >= 0) || - !Number.isFinite(controls.fillGain) || - controls.fillGain < 0 || - !Number.isFinite(controls.fillAngularSize) || - controls.fillAngularSize <= 0 || - controls.fillAngularSize > 1.5 || - !Number.isFinite(controls.fillDirection.lengthSq()) || - controls.fillDirection.lengthSq() === 0 || - !controls.fillColor.toArray().every((value) => Number.isFinite(value) && value >= 0) - ) - throw new Error( - "Backlight controls require finite nonnegative gains, a direction and angular size in (0, 1.5].", - ); -} -function resolveKey(controls: IBacklightControls, direction: Vector3, target: Vector3) { - validateControls(controls); - // Read the renderer/game-updated matrices, as upstream Three light uniforms do. - // Targets outside the scene must be updated by their owner before rendering. - // Never mutate shared light/ancestor matrices inside a material render callback. - target.setFromMatrixPosition(controls.key.target.matrixWorld); - direction.setFromMatrixPosition(controls.key.matrixWorld).sub(target); - if (!direction.toArray().every(Number.isFinite)) throw new Error("Key endpoints must be finite."); - const lengthSq = direction.lengthSq(); - if (!Number.isFinite(lengthSq)) throw new Error("Key direction magnitude must be finite."); - if (lengthSq <= 1e-12) { - direction.set(0, 1, 0); - return 0; - } - direction.normalize(); - if (!controls.key.layers.test(controls.camera.layers)) return 0; - let current: Object3D | null = controls.key; - while (current !== null) { - if (!current.visible) return 0; - if (current === controls.scene) return controls.key.intensity; - current = current.parent; - } - return 0; -} +const graphs = new WeakMap>(); /** * Preserve the upstream standard PBR/normal/skinning paths and original material emissive. @@ -106,6 +64,16 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl ); validateControls(controls); const material = new MeshStandardNodeMaterial().copy(source); + let graph = graphs.get(controls); + if (!graph) { + graph = createGraph(controls); + graphs.set(controls, graph); + } + material.emissiveNode = graph; + return material; +} + +function createGraph(controls: IBacklightControls) { const rimGain = uniform(controls.rimGain).onRenderUpdate(() => { validateControls(controls); return controls.rimGain; @@ -132,13 +100,13 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl }); const keyDirectionValue = new Vector3(0, 1, 0); const keyTargetValue = new Vector3(); - const keyDirection = uniform(keyDirectionValue).onRenderUpdate(() => { - resolveKey(controls, keyDirectionValue, keyTargetValue); + const keyDirection = uniform(keyDirectionValue).onRenderUpdate((frame) => { + resolveKey(controls, keyDirectionValue, keyTargetValue, frame.camera ?? controls.camera); return keyDirectionValue; }); // Removal/visibility/intensity are live. A removed sun cannot leave an invented rim behind. - const keyGain = uniform(0).onRenderUpdate(() => - resolveKey(controls, keyDirectionValue, keyTargetValue), + const keyGain = uniform(0).onRenderUpdate((frame) => + resolveKey(controls, keyDirectionValue, keyTargetValue, frame.camera ?? controls.camera), ); const N = normalView.normalize(); const V = positionViewDirection.normalize(); @@ -173,6 +141,5 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl .mul(float(1).sub(cosRadius)) .mul(2); const fill = diffuseFill.add(specularFill).mul(fillColor).mul(fillGain); - material.emissiveNode = materialEmissive.add(rim).add(fill); - return material; + return materialEmissive.add(rim).add(fill); } diff --git a/packages/create-threenative/templates/minimal/src/render/backlightControls.ts b/packages/create-threenative/templates/minimal/src/render/backlightControls.ts new file mode 100644 index 0000000000..2d7b94bbf6 --- /dev/null +++ b/packages/create-threenative/templates/minimal/src/render/backlightControls.ts @@ -0,0 +1,66 @@ +import type { Camera, Color, Object3D, Vector3 } from "three"; +import type { IBacklightControls } from "./backlightMaterial.js"; +function finiteColor(color: Color) { + return ( + Number.isFinite(color.r) && + color.r >= 0 && + Number.isFinite(color.g) && + color.g >= 0 && + Number.isFinite(color.b) && + color.b >= 0 + ); +} +export function validateControls(controls: IBacklightControls) { + if ( + !Number.isFinite(controls.rimGain) || + controls.rimGain < 0 || + !Number.isFinite(controls.key.intensity) || + controls.key.intensity < 0 || + !finiteColor(controls.key.color) || + !Number.isFinite(controls.fillGain) || + controls.fillGain < 0 || + !Number.isFinite(controls.fillAngularSize) || + controls.fillAngularSize <= 0 || + controls.fillAngularSize > 1.5 || + !Number.isFinite(controls.fillDirection.lengthSq()) || + controls.fillDirection.lengthSq() === 0 || + !finiteColor(controls.fillColor) + ) + throw new Error( + "Backlight controls require finite nonnegative gains, a direction and angular size in (0, 1.5].", + ); +} +export function resolveKey( + controls: IBacklightControls, + direction: Vector3, + target: Vector3, + camera: Camera = controls.camera, +) { + validateControls(controls); + // Read the renderer/game-updated matrices, as upstream Three light uniforms do. + // Targets outside the scene must be updated by their owner before rendering. + // Never mutate shared light/ancestor matrices inside a material render callback. + target.setFromMatrixPosition(controls.key.target.matrixWorld); + direction.setFromMatrixPosition(controls.key.matrixWorld).sub(target); + if ( + !Number.isFinite(direction.x) || + !Number.isFinite(direction.y) || + !Number.isFinite(direction.z) + ) + throw new Error("Key endpoints must be finite."); + const lengthSq = direction.lengthSq(); + if (!Number.isFinite(lengthSq)) throw new Error("Key direction magnitude must be finite."); + if (lengthSq <= 1e-12) { + direction.set(0, 1, 0); + return 0; + } + direction.normalize(); + if (!controls.key.layers.test(camera.layers)) return 0; + let current: Object3D | null = controls.key; + while (current !== null) { + if (!current.visible) return 0; + if (current === controls.scene) return controls.key.intensity; + current = current.parent; + } + return 0; +} diff --git a/packages/create-threenative/templates/minimal/src/render/backlightMaterial.ts b/packages/create-threenative/templates/minimal/src/render/backlightMaterial.ts index 4c8584f7b6..3bd6c1c444 100644 --- a/packages/create-threenative/templates/minimal/src/render/backlightMaterial.ts +++ b/packages/create-threenative/templates/minimal/src/render/backlightMaterial.ts @@ -29,6 +29,7 @@ import { vec3, } from "three/tsl"; import { MeshStandardNodeMaterial } from "three/webgpu"; +import { resolveKey, validateControls } from "./backlightControls.js"; export interface IBacklightControls { readonly key: DirectionalLight; @@ -45,50 +46,7 @@ export interface IBacklightControls { fillAdmitted: boolean; } -function validateControls(controls: IBacklightControls) { - if ( - !Number.isFinite(controls.rimGain) || - controls.rimGain < 0 || - !Number.isFinite(controls.key.intensity) || - controls.key.intensity < 0 || - !controls.key.color.toArray().every((value) => Number.isFinite(value) && value >= 0) || - !Number.isFinite(controls.fillGain) || - controls.fillGain < 0 || - !Number.isFinite(controls.fillAngularSize) || - controls.fillAngularSize <= 0 || - controls.fillAngularSize > 1.5 || - !Number.isFinite(controls.fillDirection.lengthSq()) || - controls.fillDirection.lengthSq() === 0 || - !controls.fillColor.toArray().every((value) => Number.isFinite(value) && value >= 0) - ) - throw new Error( - "Backlight controls require finite nonnegative gains, a direction and angular size in (0, 1.5].", - ); -} -function resolveKey(controls: IBacklightControls, direction: Vector3, target: Vector3) { - validateControls(controls); - // Read the renderer/game-updated matrices, as upstream Three light uniforms do. - // Targets outside the scene must be updated by their owner before rendering. - // Never mutate shared light/ancestor matrices inside a material render callback. - target.setFromMatrixPosition(controls.key.target.matrixWorld); - direction.setFromMatrixPosition(controls.key.matrixWorld).sub(target); - if (!direction.toArray().every(Number.isFinite)) throw new Error("Key endpoints must be finite."); - const lengthSq = direction.lengthSq(); - if (!Number.isFinite(lengthSq)) throw new Error("Key direction magnitude must be finite."); - if (lengthSq <= 1e-12) { - direction.set(0, 1, 0); - return 0; - } - direction.normalize(); - if (!controls.key.layers.test(controls.camera.layers)) return 0; - let current: Object3D | null = controls.key; - while (current !== null) { - if (!current.visible) return 0; - if (current === controls.scene) return controls.key.intensity; - current = current.parent; - } - return 0; -} +const graphs = new WeakMap>(); /** * Preserve the upstream standard PBR/normal/skinning paths and original material emissive. @@ -106,6 +64,16 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl ); validateControls(controls); const material = new MeshStandardNodeMaterial().copy(source); + let graph = graphs.get(controls); + if (!graph) { + graph = createGraph(controls); + graphs.set(controls, graph); + } + material.emissiveNode = graph; + return material; +} + +function createGraph(controls: IBacklightControls) { const rimGain = uniform(controls.rimGain).onRenderUpdate(() => { validateControls(controls); return controls.rimGain; @@ -132,13 +100,13 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl }); const keyDirectionValue = new Vector3(0, 1, 0); const keyTargetValue = new Vector3(); - const keyDirection = uniform(keyDirectionValue).onRenderUpdate(() => { - resolveKey(controls, keyDirectionValue, keyTargetValue); + const keyDirection = uniform(keyDirectionValue).onRenderUpdate((frame) => { + resolveKey(controls, keyDirectionValue, keyTargetValue, frame.camera ?? controls.camera); return keyDirectionValue; }); // Removal/visibility/intensity are live. A removed sun cannot leave an invented rim behind. - const keyGain = uniform(0).onRenderUpdate(() => - resolveKey(controls, keyDirectionValue, keyTargetValue), + const keyGain = uniform(0).onRenderUpdate((frame) => + resolveKey(controls, keyDirectionValue, keyTargetValue, frame.camera ?? controls.camera), ); const N = normalView.normalize(); const V = positionViewDirection.normalize(); @@ -173,6 +141,5 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl .mul(float(1).sub(cosRadius)) .mul(2); const fill = diffuseFill.add(specularFill).mul(fillColor).mul(fillGain); - material.emissiveNode = materialEmissive.add(rim).add(fill); - return material; + return materialEmissive.add(rim).add(fill); } diff --git a/packages/create-threenative/templates/platformer/src/render/backlightControls.ts b/packages/create-threenative/templates/platformer/src/render/backlightControls.ts new file mode 100644 index 0000000000..2d7b94bbf6 --- /dev/null +++ b/packages/create-threenative/templates/platformer/src/render/backlightControls.ts @@ -0,0 +1,66 @@ +import type { Camera, Color, Object3D, Vector3 } from "three"; +import type { IBacklightControls } from "./backlightMaterial.js"; +function finiteColor(color: Color) { + return ( + Number.isFinite(color.r) && + color.r >= 0 && + Number.isFinite(color.g) && + color.g >= 0 && + Number.isFinite(color.b) && + color.b >= 0 + ); +} +export function validateControls(controls: IBacklightControls) { + if ( + !Number.isFinite(controls.rimGain) || + controls.rimGain < 0 || + !Number.isFinite(controls.key.intensity) || + controls.key.intensity < 0 || + !finiteColor(controls.key.color) || + !Number.isFinite(controls.fillGain) || + controls.fillGain < 0 || + !Number.isFinite(controls.fillAngularSize) || + controls.fillAngularSize <= 0 || + controls.fillAngularSize > 1.5 || + !Number.isFinite(controls.fillDirection.lengthSq()) || + controls.fillDirection.lengthSq() === 0 || + !finiteColor(controls.fillColor) + ) + throw new Error( + "Backlight controls require finite nonnegative gains, a direction and angular size in (0, 1.5].", + ); +} +export function resolveKey( + controls: IBacklightControls, + direction: Vector3, + target: Vector3, + camera: Camera = controls.camera, +) { + validateControls(controls); + // Read the renderer/game-updated matrices, as upstream Three light uniforms do. + // Targets outside the scene must be updated by their owner before rendering. + // Never mutate shared light/ancestor matrices inside a material render callback. + target.setFromMatrixPosition(controls.key.target.matrixWorld); + direction.setFromMatrixPosition(controls.key.matrixWorld).sub(target); + if ( + !Number.isFinite(direction.x) || + !Number.isFinite(direction.y) || + !Number.isFinite(direction.z) + ) + throw new Error("Key endpoints must be finite."); + const lengthSq = direction.lengthSq(); + if (!Number.isFinite(lengthSq)) throw new Error("Key direction magnitude must be finite."); + if (lengthSq <= 1e-12) { + direction.set(0, 1, 0); + return 0; + } + direction.normalize(); + if (!controls.key.layers.test(camera.layers)) return 0; + let current: Object3D | null = controls.key; + while (current !== null) { + if (!current.visible) return 0; + if (current === controls.scene) return controls.key.intensity; + current = current.parent; + } + return 0; +} diff --git a/packages/create-threenative/templates/platformer/src/render/backlightMaterial.ts b/packages/create-threenative/templates/platformer/src/render/backlightMaterial.ts index 4c8584f7b6..3bd6c1c444 100644 --- a/packages/create-threenative/templates/platformer/src/render/backlightMaterial.ts +++ b/packages/create-threenative/templates/platformer/src/render/backlightMaterial.ts @@ -29,6 +29,7 @@ import { vec3, } from "three/tsl"; import { MeshStandardNodeMaterial } from "three/webgpu"; +import { resolveKey, validateControls } from "./backlightControls.js"; export interface IBacklightControls { readonly key: DirectionalLight; @@ -45,50 +46,7 @@ export interface IBacklightControls { fillAdmitted: boolean; } -function validateControls(controls: IBacklightControls) { - if ( - !Number.isFinite(controls.rimGain) || - controls.rimGain < 0 || - !Number.isFinite(controls.key.intensity) || - controls.key.intensity < 0 || - !controls.key.color.toArray().every((value) => Number.isFinite(value) && value >= 0) || - !Number.isFinite(controls.fillGain) || - controls.fillGain < 0 || - !Number.isFinite(controls.fillAngularSize) || - controls.fillAngularSize <= 0 || - controls.fillAngularSize > 1.5 || - !Number.isFinite(controls.fillDirection.lengthSq()) || - controls.fillDirection.lengthSq() === 0 || - !controls.fillColor.toArray().every((value) => Number.isFinite(value) && value >= 0) - ) - throw new Error( - "Backlight controls require finite nonnegative gains, a direction and angular size in (0, 1.5].", - ); -} -function resolveKey(controls: IBacklightControls, direction: Vector3, target: Vector3) { - validateControls(controls); - // Read the renderer/game-updated matrices, as upstream Three light uniforms do. - // Targets outside the scene must be updated by their owner before rendering. - // Never mutate shared light/ancestor matrices inside a material render callback. - target.setFromMatrixPosition(controls.key.target.matrixWorld); - direction.setFromMatrixPosition(controls.key.matrixWorld).sub(target); - if (!direction.toArray().every(Number.isFinite)) throw new Error("Key endpoints must be finite."); - const lengthSq = direction.lengthSq(); - if (!Number.isFinite(lengthSq)) throw new Error("Key direction magnitude must be finite."); - if (lengthSq <= 1e-12) { - direction.set(0, 1, 0); - return 0; - } - direction.normalize(); - if (!controls.key.layers.test(controls.camera.layers)) return 0; - let current: Object3D | null = controls.key; - while (current !== null) { - if (!current.visible) return 0; - if (current === controls.scene) return controls.key.intensity; - current = current.parent; - } - return 0; -} +const graphs = new WeakMap>(); /** * Preserve the upstream standard PBR/normal/skinning paths and original material emissive. @@ -106,6 +64,16 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl ); validateControls(controls); const material = new MeshStandardNodeMaterial().copy(source); + let graph = graphs.get(controls); + if (!graph) { + graph = createGraph(controls); + graphs.set(controls, graph); + } + material.emissiveNode = graph; + return material; +} + +function createGraph(controls: IBacklightControls) { const rimGain = uniform(controls.rimGain).onRenderUpdate(() => { validateControls(controls); return controls.rimGain; @@ -132,13 +100,13 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl }); const keyDirectionValue = new Vector3(0, 1, 0); const keyTargetValue = new Vector3(); - const keyDirection = uniform(keyDirectionValue).onRenderUpdate(() => { - resolveKey(controls, keyDirectionValue, keyTargetValue); + const keyDirection = uniform(keyDirectionValue).onRenderUpdate((frame) => { + resolveKey(controls, keyDirectionValue, keyTargetValue, frame.camera ?? controls.camera); return keyDirectionValue; }); // Removal/visibility/intensity are live. A removed sun cannot leave an invented rim behind. - const keyGain = uniform(0).onRenderUpdate(() => - resolveKey(controls, keyDirectionValue, keyTargetValue), + const keyGain = uniform(0).onRenderUpdate((frame) => + resolveKey(controls, keyDirectionValue, keyTargetValue, frame.camera ?? controls.camera), ); const N = normalView.normalize(); const V = positionViewDirection.normalize(); @@ -173,6 +141,5 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl .mul(float(1).sub(cosRadius)) .mul(2); const fill = diffuseFill.add(specularFill).mul(fillColor).mul(fillGain); - material.emissiveNode = materialEmissive.add(rim).add(fill); - return material; + return materialEmissive.add(rim).add(fill); } diff --git a/packages/create-threenative/templates/puzzle/src/render/backlightControls.ts b/packages/create-threenative/templates/puzzle/src/render/backlightControls.ts new file mode 100644 index 0000000000..2d7b94bbf6 --- /dev/null +++ b/packages/create-threenative/templates/puzzle/src/render/backlightControls.ts @@ -0,0 +1,66 @@ +import type { Camera, Color, Object3D, Vector3 } from "three"; +import type { IBacklightControls } from "./backlightMaterial.js"; +function finiteColor(color: Color) { + return ( + Number.isFinite(color.r) && + color.r >= 0 && + Number.isFinite(color.g) && + color.g >= 0 && + Number.isFinite(color.b) && + color.b >= 0 + ); +} +export function validateControls(controls: IBacklightControls) { + if ( + !Number.isFinite(controls.rimGain) || + controls.rimGain < 0 || + !Number.isFinite(controls.key.intensity) || + controls.key.intensity < 0 || + !finiteColor(controls.key.color) || + !Number.isFinite(controls.fillGain) || + controls.fillGain < 0 || + !Number.isFinite(controls.fillAngularSize) || + controls.fillAngularSize <= 0 || + controls.fillAngularSize > 1.5 || + !Number.isFinite(controls.fillDirection.lengthSq()) || + controls.fillDirection.lengthSq() === 0 || + !finiteColor(controls.fillColor) + ) + throw new Error( + "Backlight controls require finite nonnegative gains, a direction and angular size in (0, 1.5].", + ); +} +export function resolveKey( + controls: IBacklightControls, + direction: Vector3, + target: Vector3, + camera: Camera = controls.camera, +) { + validateControls(controls); + // Read the renderer/game-updated matrices, as upstream Three light uniforms do. + // Targets outside the scene must be updated by their owner before rendering. + // Never mutate shared light/ancestor matrices inside a material render callback. + target.setFromMatrixPosition(controls.key.target.matrixWorld); + direction.setFromMatrixPosition(controls.key.matrixWorld).sub(target); + if ( + !Number.isFinite(direction.x) || + !Number.isFinite(direction.y) || + !Number.isFinite(direction.z) + ) + throw new Error("Key endpoints must be finite."); + const lengthSq = direction.lengthSq(); + if (!Number.isFinite(lengthSq)) throw new Error("Key direction magnitude must be finite."); + if (lengthSq <= 1e-12) { + direction.set(0, 1, 0); + return 0; + } + direction.normalize(); + if (!controls.key.layers.test(camera.layers)) return 0; + let current: Object3D | null = controls.key; + while (current !== null) { + if (!current.visible) return 0; + if (current === controls.scene) return controls.key.intensity; + current = current.parent; + } + return 0; +} diff --git a/packages/create-threenative/templates/puzzle/src/render/backlightMaterial.ts b/packages/create-threenative/templates/puzzle/src/render/backlightMaterial.ts index 4c8584f7b6..3bd6c1c444 100644 --- a/packages/create-threenative/templates/puzzle/src/render/backlightMaterial.ts +++ b/packages/create-threenative/templates/puzzle/src/render/backlightMaterial.ts @@ -29,6 +29,7 @@ import { vec3, } from "three/tsl"; import { MeshStandardNodeMaterial } from "three/webgpu"; +import { resolveKey, validateControls } from "./backlightControls.js"; export interface IBacklightControls { readonly key: DirectionalLight; @@ -45,50 +46,7 @@ export interface IBacklightControls { fillAdmitted: boolean; } -function validateControls(controls: IBacklightControls) { - if ( - !Number.isFinite(controls.rimGain) || - controls.rimGain < 0 || - !Number.isFinite(controls.key.intensity) || - controls.key.intensity < 0 || - !controls.key.color.toArray().every((value) => Number.isFinite(value) && value >= 0) || - !Number.isFinite(controls.fillGain) || - controls.fillGain < 0 || - !Number.isFinite(controls.fillAngularSize) || - controls.fillAngularSize <= 0 || - controls.fillAngularSize > 1.5 || - !Number.isFinite(controls.fillDirection.lengthSq()) || - controls.fillDirection.lengthSq() === 0 || - !controls.fillColor.toArray().every((value) => Number.isFinite(value) && value >= 0) - ) - throw new Error( - "Backlight controls require finite nonnegative gains, a direction and angular size in (0, 1.5].", - ); -} -function resolveKey(controls: IBacklightControls, direction: Vector3, target: Vector3) { - validateControls(controls); - // Read the renderer/game-updated matrices, as upstream Three light uniforms do. - // Targets outside the scene must be updated by their owner before rendering. - // Never mutate shared light/ancestor matrices inside a material render callback. - target.setFromMatrixPosition(controls.key.target.matrixWorld); - direction.setFromMatrixPosition(controls.key.matrixWorld).sub(target); - if (!direction.toArray().every(Number.isFinite)) throw new Error("Key endpoints must be finite."); - const lengthSq = direction.lengthSq(); - if (!Number.isFinite(lengthSq)) throw new Error("Key direction magnitude must be finite."); - if (lengthSq <= 1e-12) { - direction.set(0, 1, 0); - return 0; - } - direction.normalize(); - if (!controls.key.layers.test(controls.camera.layers)) return 0; - let current: Object3D | null = controls.key; - while (current !== null) { - if (!current.visible) return 0; - if (current === controls.scene) return controls.key.intensity; - current = current.parent; - } - return 0; -} +const graphs = new WeakMap>(); /** * Preserve the upstream standard PBR/normal/skinning paths and original material emissive. @@ -106,6 +64,16 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl ); validateControls(controls); const material = new MeshStandardNodeMaterial().copy(source); + let graph = graphs.get(controls); + if (!graph) { + graph = createGraph(controls); + graphs.set(controls, graph); + } + material.emissiveNode = graph; + return material; +} + +function createGraph(controls: IBacklightControls) { const rimGain = uniform(controls.rimGain).onRenderUpdate(() => { validateControls(controls); return controls.rimGain; @@ -132,13 +100,13 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl }); const keyDirectionValue = new Vector3(0, 1, 0); const keyTargetValue = new Vector3(); - const keyDirection = uniform(keyDirectionValue).onRenderUpdate(() => { - resolveKey(controls, keyDirectionValue, keyTargetValue); + const keyDirection = uniform(keyDirectionValue).onRenderUpdate((frame) => { + resolveKey(controls, keyDirectionValue, keyTargetValue, frame.camera ?? controls.camera); return keyDirectionValue; }); // Removal/visibility/intensity are live. A removed sun cannot leave an invented rim behind. - const keyGain = uniform(0).onRenderUpdate(() => - resolveKey(controls, keyDirectionValue, keyTargetValue), + const keyGain = uniform(0).onRenderUpdate((frame) => + resolveKey(controls, keyDirectionValue, keyTargetValue, frame.camera ?? controls.camera), ); const N = normalView.normalize(); const V = positionViewDirection.normalize(); @@ -173,6 +141,5 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl .mul(float(1).sub(cosRadius)) .mul(2); const fill = diffuseFill.add(specularFill).mul(fillColor).mul(fillGain); - material.emissiveNode = materialEmissive.add(rim).add(fill); - return material; + return materialEmissive.add(rim).add(fill); } diff --git a/packages/create-threenative/templates/racing/src/render/backlightControls.ts b/packages/create-threenative/templates/racing/src/render/backlightControls.ts new file mode 100644 index 0000000000..2d7b94bbf6 --- /dev/null +++ b/packages/create-threenative/templates/racing/src/render/backlightControls.ts @@ -0,0 +1,66 @@ +import type { Camera, Color, Object3D, Vector3 } from "three"; +import type { IBacklightControls } from "./backlightMaterial.js"; +function finiteColor(color: Color) { + return ( + Number.isFinite(color.r) && + color.r >= 0 && + Number.isFinite(color.g) && + color.g >= 0 && + Number.isFinite(color.b) && + color.b >= 0 + ); +} +export function validateControls(controls: IBacklightControls) { + if ( + !Number.isFinite(controls.rimGain) || + controls.rimGain < 0 || + !Number.isFinite(controls.key.intensity) || + controls.key.intensity < 0 || + !finiteColor(controls.key.color) || + !Number.isFinite(controls.fillGain) || + controls.fillGain < 0 || + !Number.isFinite(controls.fillAngularSize) || + controls.fillAngularSize <= 0 || + controls.fillAngularSize > 1.5 || + !Number.isFinite(controls.fillDirection.lengthSq()) || + controls.fillDirection.lengthSq() === 0 || + !finiteColor(controls.fillColor) + ) + throw new Error( + "Backlight controls require finite nonnegative gains, a direction and angular size in (0, 1.5].", + ); +} +export function resolveKey( + controls: IBacklightControls, + direction: Vector3, + target: Vector3, + camera: Camera = controls.camera, +) { + validateControls(controls); + // Read the renderer/game-updated matrices, as upstream Three light uniforms do. + // Targets outside the scene must be updated by their owner before rendering. + // Never mutate shared light/ancestor matrices inside a material render callback. + target.setFromMatrixPosition(controls.key.target.matrixWorld); + direction.setFromMatrixPosition(controls.key.matrixWorld).sub(target); + if ( + !Number.isFinite(direction.x) || + !Number.isFinite(direction.y) || + !Number.isFinite(direction.z) + ) + throw new Error("Key endpoints must be finite."); + const lengthSq = direction.lengthSq(); + if (!Number.isFinite(lengthSq)) throw new Error("Key direction magnitude must be finite."); + if (lengthSq <= 1e-12) { + direction.set(0, 1, 0); + return 0; + } + direction.normalize(); + if (!controls.key.layers.test(camera.layers)) return 0; + let current: Object3D | null = controls.key; + while (current !== null) { + if (!current.visible) return 0; + if (current === controls.scene) return controls.key.intensity; + current = current.parent; + } + return 0; +} diff --git a/packages/create-threenative/templates/racing/src/render/backlightMaterial.ts b/packages/create-threenative/templates/racing/src/render/backlightMaterial.ts index 4c8584f7b6..3bd6c1c444 100644 --- a/packages/create-threenative/templates/racing/src/render/backlightMaterial.ts +++ b/packages/create-threenative/templates/racing/src/render/backlightMaterial.ts @@ -29,6 +29,7 @@ import { vec3, } from "three/tsl"; import { MeshStandardNodeMaterial } from "three/webgpu"; +import { resolveKey, validateControls } from "./backlightControls.js"; export interface IBacklightControls { readonly key: DirectionalLight; @@ -45,50 +46,7 @@ export interface IBacklightControls { fillAdmitted: boolean; } -function validateControls(controls: IBacklightControls) { - if ( - !Number.isFinite(controls.rimGain) || - controls.rimGain < 0 || - !Number.isFinite(controls.key.intensity) || - controls.key.intensity < 0 || - !controls.key.color.toArray().every((value) => Number.isFinite(value) && value >= 0) || - !Number.isFinite(controls.fillGain) || - controls.fillGain < 0 || - !Number.isFinite(controls.fillAngularSize) || - controls.fillAngularSize <= 0 || - controls.fillAngularSize > 1.5 || - !Number.isFinite(controls.fillDirection.lengthSq()) || - controls.fillDirection.lengthSq() === 0 || - !controls.fillColor.toArray().every((value) => Number.isFinite(value) && value >= 0) - ) - throw new Error( - "Backlight controls require finite nonnegative gains, a direction and angular size in (0, 1.5].", - ); -} -function resolveKey(controls: IBacklightControls, direction: Vector3, target: Vector3) { - validateControls(controls); - // Read the renderer/game-updated matrices, as upstream Three light uniforms do. - // Targets outside the scene must be updated by their owner before rendering. - // Never mutate shared light/ancestor matrices inside a material render callback. - target.setFromMatrixPosition(controls.key.target.matrixWorld); - direction.setFromMatrixPosition(controls.key.matrixWorld).sub(target); - if (!direction.toArray().every(Number.isFinite)) throw new Error("Key endpoints must be finite."); - const lengthSq = direction.lengthSq(); - if (!Number.isFinite(lengthSq)) throw new Error("Key direction magnitude must be finite."); - if (lengthSq <= 1e-12) { - direction.set(0, 1, 0); - return 0; - } - direction.normalize(); - if (!controls.key.layers.test(controls.camera.layers)) return 0; - let current: Object3D | null = controls.key; - while (current !== null) { - if (!current.visible) return 0; - if (current === controls.scene) return controls.key.intensity; - current = current.parent; - } - return 0; -} +const graphs = new WeakMap>(); /** * Preserve the upstream standard PBR/normal/skinning paths and original material emissive. @@ -106,6 +64,16 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl ); validateControls(controls); const material = new MeshStandardNodeMaterial().copy(source); + let graph = graphs.get(controls); + if (!graph) { + graph = createGraph(controls); + graphs.set(controls, graph); + } + material.emissiveNode = graph; + return material; +} + +function createGraph(controls: IBacklightControls) { const rimGain = uniform(controls.rimGain).onRenderUpdate(() => { validateControls(controls); return controls.rimGain; @@ -132,13 +100,13 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl }); const keyDirectionValue = new Vector3(0, 1, 0); const keyTargetValue = new Vector3(); - const keyDirection = uniform(keyDirectionValue).onRenderUpdate(() => { - resolveKey(controls, keyDirectionValue, keyTargetValue); + const keyDirection = uniform(keyDirectionValue).onRenderUpdate((frame) => { + resolveKey(controls, keyDirectionValue, keyTargetValue, frame.camera ?? controls.camera); return keyDirectionValue; }); // Removal/visibility/intensity are live. A removed sun cannot leave an invented rim behind. - const keyGain = uniform(0).onRenderUpdate(() => - resolveKey(controls, keyDirectionValue, keyTargetValue), + const keyGain = uniform(0).onRenderUpdate((frame) => + resolveKey(controls, keyDirectionValue, keyTargetValue, frame.camera ?? controls.camera), ); const N = normalView.normalize(); const V = positionViewDirection.normalize(); @@ -173,6 +141,5 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl .mul(float(1).sub(cosRadius)) .mul(2); const fill = diffuseFill.add(specularFill).mul(fillColor).mul(fillGain); - material.emissiveNode = materialEmissive.add(rim).add(fill); - return material; + return materialEmissive.add(rim).add(fill); } diff --git a/packages/create-threenative/templates/rts/src/render/backlightControls.ts b/packages/create-threenative/templates/rts/src/render/backlightControls.ts new file mode 100644 index 0000000000..2d7b94bbf6 --- /dev/null +++ b/packages/create-threenative/templates/rts/src/render/backlightControls.ts @@ -0,0 +1,66 @@ +import type { Camera, Color, Object3D, Vector3 } from "three"; +import type { IBacklightControls } from "./backlightMaterial.js"; +function finiteColor(color: Color) { + return ( + Number.isFinite(color.r) && + color.r >= 0 && + Number.isFinite(color.g) && + color.g >= 0 && + Number.isFinite(color.b) && + color.b >= 0 + ); +} +export function validateControls(controls: IBacklightControls) { + if ( + !Number.isFinite(controls.rimGain) || + controls.rimGain < 0 || + !Number.isFinite(controls.key.intensity) || + controls.key.intensity < 0 || + !finiteColor(controls.key.color) || + !Number.isFinite(controls.fillGain) || + controls.fillGain < 0 || + !Number.isFinite(controls.fillAngularSize) || + controls.fillAngularSize <= 0 || + controls.fillAngularSize > 1.5 || + !Number.isFinite(controls.fillDirection.lengthSq()) || + controls.fillDirection.lengthSq() === 0 || + !finiteColor(controls.fillColor) + ) + throw new Error( + "Backlight controls require finite nonnegative gains, a direction and angular size in (0, 1.5].", + ); +} +export function resolveKey( + controls: IBacklightControls, + direction: Vector3, + target: Vector3, + camera: Camera = controls.camera, +) { + validateControls(controls); + // Read the renderer/game-updated matrices, as upstream Three light uniforms do. + // Targets outside the scene must be updated by their owner before rendering. + // Never mutate shared light/ancestor matrices inside a material render callback. + target.setFromMatrixPosition(controls.key.target.matrixWorld); + direction.setFromMatrixPosition(controls.key.matrixWorld).sub(target); + if ( + !Number.isFinite(direction.x) || + !Number.isFinite(direction.y) || + !Number.isFinite(direction.z) + ) + throw new Error("Key endpoints must be finite."); + const lengthSq = direction.lengthSq(); + if (!Number.isFinite(lengthSq)) throw new Error("Key direction magnitude must be finite."); + if (lengthSq <= 1e-12) { + direction.set(0, 1, 0); + return 0; + } + direction.normalize(); + if (!controls.key.layers.test(camera.layers)) return 0; + let current: Object3D | null = controls.key; + while (current !== null) { + if (!current.visible) return 0; + if (current === controls.scene) return controls.key.intensity; + current = current.parent; + } + return 0; +} diff --git a/packages/create-threenative/templates/rts/src/render/backlightMaterial.ts b/packages/create-threenative/templates/rts/src/render/backlightMaterial.ts index 4c8584f7b6..3bd6c1c444 100644 --- a/packages/create-threenative/templates/rts/src/render/backlightMaterial.ts +++ b/packages/create-threenative/templates/rts/src/render/backlightMaterial.ts @@ -29,6 +29,7 @@ import { vec3, } from "three/tsl"; import { MeshStandardNodeMaterial } from "three/webgpu"; +import { resolveKey, validateControls } from "./backlightControls.js"; export interface IBacklightControls { readonly key: DirectionalLight; @@ -45,50 +46,7 @@ export interface IBacklightControls { fillAdmitted: boolean; } -function validateControls(controls: IBacklightControls) { - if ( - !Number.isFinite(controls.rimGain) || - controls.rimGain < 0 || - !Number.isFinite(controls.key.intensity) || - controls.key.intensity < 0 || - !controls.key.color.toArray().every((value) => Number.isFinite(value) && value >= 0) || - !Number.isFinite(controls.fillGain) || - controls.fillGain < 0 || - !Number.isFinite(controls.fillAngularSize) || - controls.fillAngularSize <= 0 || - controls.fillAngularSize > 1.5 || - !Number.isFinite(controls.fillDirection.lengthSq()) || - controls.fillDirection.lengthSq() === 0 || - !controls.fillColor.toArray().every((value) => Number.isFinite(value) && value >= 0) - ) - throw new Error( - "Backlight controls require finite nonnegative gains, a direction and angular size in (0, 1.5].", - ); -} -function resolveKey(controls: IBacklightControls, direction: Vector3, target: Vector3) { - validateControls(controls); - // Read the renderer/game-updated matrices, as upstream Three light uniforms do. - // Targets outside the scene must be updated by their owner before rendering. - // Never mutate shared light/ancestor matrices inside a material render callback. - target.setFromMatrixPosition(controls.key.target.matrixWorld); - direction.setFromMatrixPosition(controls.key.matrixWorld).sub(target); - if (!direction.toArray().every(Number.isFinite)) throw new Error("Key endpoints must be finite."); - const lengthSq = direction.lengthSq(); - if (!Number.isFinite(lengthSq)) throw new Error("Key direction magnitude must be finite."); - if (lengthSq <= 1e-12) { - direction.set(0, 1, 0); - return 0; - } - direction.normalize(); - if (!controls.key.layers.test(controls.camera.layers)) return 0; - let current: Object3D | null = controls.key; - while (current !== null) { - if (!current.visible) return 0; - if (current === controls.scene) return controls.key.intensity; - current = current.parent; - } - return 0; -} +const graphs = new WeakMap>(); /** * Preserve the upstream standard PBR/normal/skinning paths and original material emissive. @@ -106,6 +64,16 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl ); validateControls(controls); const material = new MeshStandardNodeMaterial().copy(source); + let graph = graphs.get(controls); + if (!graph) { + graph = createGraph(controls); + graphs.set(controls, graph); + } + material.emissiveNode = graph; + return material; +} + +function createGraph(controls: IBacklightControls) { const rimGain = uniform(controls.rimGain).onRenderUpdate(() => { validateControls(controls); return controls.rimGain; @@ -132,13 +100,13 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl }); const keyDirectionValue = new Vector3(0, 1, 0); const keyTargetValue = new Vector3(); - const keyDirection = uniform(keyDirectionValue).onRenderUpdate(() => { - resolveKey(controls, keyDirectionValue, keyTargetValue); + const keyDirection = uniform(keyDirectionValue).onRenderUpdate((frame) => { + resolveKey(controls, keyDirectionValue, keyTargetValue, frame.camera ?? controls.camera); return keyDirectionValue; }); // Removal/visibility/intensity are live. A removed sun cannot leave an invented rim behind. - const keyGain = uniform(0).onRenderUpdate(() => - resolveKey(controls, keyDirectionValue, keyTargetValue), + const keyGain = uniform(0).onRenderUpdate((frame) => + resolveKey(controls, keyDirectionValue, keyTargetValue, frame.camera ?? controls.camera), ); const N = normalView.normalize(); const V = positionViewDirection.normalize(); @@ -173,6 +141,5 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl .mul(float(1).sub(cosRadius)) .mul(2); const fill = diffuseFill.add(specularFill).mul(fillColor).mul(fillGain); - material.emissiveNode = materialEmissive.add(rim).add(fill); - return material; + return materialEmissive.add(rim).add(fill); } diff --git a/packages/create-threenative/templates/runner/src/render/backlightControls.ts b/packages/create-threenative/templates/runner/src/render/backlightControls.ts new file mode 100644 index 0000000000..2d7b94bbf6 --- /dev/null +++ b/packages/create-threenative/templates/runner/src/render/backlightControls.ts @@ -0,0 +1,66 @@ +import type { Camera, Color, Object3D, Vector3 } from "three"; +import type { IBacklightControls } from "./backlightMaterial.js"; +function finiteColor(color: Color) { + return ( + Number.isFinite(color.r) && + color.r >= 0 && + Number.isFinite(color.g) && + color.g >= 0 && + Number.isFinite(color.b) && + color.b >= 0 + ); +} +export function validateControls(controls: IBacklightControls) { + if ( + !Number.isFinite(controls.rimGain) || + controls.rimGain < 0 || + !Number.isFinite(controls.key.intensity) || + controls.key.intensity < 0 || + !finiteColor(controls.key.color) || + !Number.isFinite(controls.fillGain) || + controls.fillGain < 0 || + !Number.isFinite(controls.fillAngularSize) || + controls.fillAngularSize <= 0 || + controls.fillAngularSize > 1.5 || + !Number.isFinite(controls.fillDirection.lengthSq()) || + controls.fillDirection.lengthSq() === 0 || + !finiteColor(controls.fillColor) + ) + throw new Error( + "Backlight controls require finite nonnegative gains, a direction and angular size in (0, 1.5].", + ); +} +export function resolveKey( + controls: IBacklightControls, + direction: Vector3, + target: Vector3, + camera: Camera = controls.camera, +) { + validateControls(controls); + // Read the renderer/game-updated matrices, as upstream Three light uniforms do. + // Targets outside the scene must be updated by their owner before rendering. + // Never mutate shared light/ancestor matrices inside a material render callback. + target.setFromMatrixPosition(controls.key.target.matrixWorld); + direction.setFromMatrixPosition(controls.key.matrixWorld).sub(target); + if ( + !Number.isFinite(direction.x) || + !Number.isFinite(direction.y) || + !Number.isFinite(direction.z) + ) + throw new Error("Key endpoints must be finite."); + const lengthSq = direction.lengthSq(); + if (!Number.isFinite(lengthSq)) throw new Error("Key direction magnitude must be finite."); + if (lengthSq <= 1e-12) { + direction.set(0, 1, 0); + return 0; + } + direction.normalize(); + if (!controls.key.layers.test(camera.layers)) return 0; + let current: Object3D | null = controls.key; + while (current !== null) { + if (!current.visible) return 0; + if (current === controls.scene) return controls.key.intensity; + current = current.parent; + } + return 0; +} diff --git a/packages/create-threenative/templates/runner/src/render/backlightMaterial.ts b/packages/create-threenative/templates/runner/src/render/backlightMaterial.ts index 4c8584f7b6..3bd6c1c444 100644 --- a/packages/create-threenative/templates/runner/src/render/backlightMaterial.ts +++ b/packages/create-threenative/templates/runner/src/render/backlightMaterial.ts @@ -29,6 +29,7 @@ import { vec3, } from "three/tsl"; import { MeshStandardNodeMaterial } from "three/webgpu"; +import { resolveKey, validateControls } from "./backlightControls.js"; export interface IBacklightControls { readonly key: DirectionalLight; @@ -45,50 +46,7 @@ export interface IBacklightControls { fillAdmitted: boolean; } -function validateControls(controls: IBacklightControls) { - if ( - !Number.isFinite(controls.rimGain) || - controls.rimGain < 0 || - !Number.isFinite(controls.key.intensity) || - controls.key.intensity < 0 || - !controls.key.color.toArray().every((value) => Number.isFinite(value) && value >= 0) || - !Number.isFinite(controls.fillGain) || - controls.fillGain < 0 || - !Number.isFinite(controls.fillAngularSize) || - controls.fillAngularSize <= 0 || - controls.fillAngularSize > 1.5 || - !Number.isFinite(controls.fillDirection.lengthSq()) || - controls.fillDirection.lengthSq() === 0 || - !controls.fillColor.toArray().every((value) => Number.isFinite(value) && value >= 0) - ) - throw new Error( - "Backlight controls require finite nonnegative gains, a direction and angular size in (0, 1.5].", - ); -} -function resolveKey(controls: IBacklightControls, direction: Vector3, target: Vector3) { - validateControls(controls); - // Read the renderer/game-updated matrices, as upstream Three light uniforms do. - // Targets outside the scene must be updated by their owner before rendering. - // Never mutate shared light/ancestor matrices inside a material render callback. - target.setFromMatrixPosition(controls.key.target.matrixWorld); - direction.setFromMatrixPosition(controls.key.matrixWorld).sub(target); - if (!direction.toArray().every(Number.isFinite)) throw new Error("Key endpoints must be finite."); - const lengthSq = direction.lengthSq(); - if (!Number.isFinite(lengthSq)) throw new Error("Key direction magnitude must be finite."); - if (lengthSq <= 1e-12) { - direction.set(0, 1, 0); - return 0; - } - direction.normalize(); - if (!controls.key.layers.test(controls.camera.layers)) return 0; - let current: Object3D | null = controls.key; - while (current !== null) { - if (!current.visible) return 0; - if (current === controls.scene) return controls.key.intensity; - current = current.parent; - } - return 0; -} +const graphs = new WeakMap>(); /** * Preserve the upstream standard PBR/normal/skinning paths and original material emissive. @@ -106,6 +64,16 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl ); validateControls(controls); const material = new MeshStandardNodeMaterial().copy(source); + let graph = graphs.get(controls); + if (!graph) { + graph = createGraph(controls); + graphs.set(controls, graph); + } + material.emissiveNode = graph; + return material; +} + +function createGraph(controls: IBacklightControls) { const rimGain = uniform(controls.rimGain).onRenderUpdate(() => { validateControls(controls); return controls.rimGain; @@ -132,13 +100,13 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl }); const keyDirectionValue = new Vector3(0, 1, 0); const keyTargetValue = new Vector3(); - const keyDirection = uniform(keyDirectionValue).onRenderUpdate(() => { - resolveKey(controls, keyDirectionValue, keyTargetValue); + const keyDirection = uniform(keyDirectionValue).onRenderUpdate((frame) => { + resolveKey(controls, keyDirectionValue, keyTargetValue, frame.camera ?? controls.camera); return keyDirectionValue; }); // Removal/visibility/intensity are live. A removed sun cannot leave an invented rim behind. - const keyGain = uniform(0).onRenderUpdate(() => - resolveKey(controls, keyDirectionValue, keyTargetValue), + const keyGain = uniform(0).onRenderUpdate((frame) => + resolveKey(controls, keyDirectionValue, keyTargetValue, frame.camera ?? controls.camera), ); const N = normalView.normalize(); const V = positionViewDirection.normalize(); @@ -173,6 +141,5 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl .mul(float(1).sub(cosRadius)) .mul(2); const fill = diffuseFill.add(specularFill).mul(fillColor).mul(fillGain); - material.emissiveNode = materialEmissive.add(rim).add(fill); - return material; + return materialEmissive.add(rim).add(fill); } diff --git a/packages/create-threenative/templates/sailing/src/render/backlightControls.ts b/packages/create-threenative/templates/sailing/src/render/backlightControls.ts new file mode 100644 index 0000000000..2d7b94bbf6 --- /dev/null +++ b/packages/create-threenative/templates/sailing/src/render/backlightControls.ts @@ -0,0 +1,66 @@ +import type { Camera, Color, Object3D, Vector3 } from "three"; +import type { IBacklightControls } from "./backlightMaterial.js"; +function finiteColor(color: Color) { + return ( + Number.isFinite(color.r) && + color.r >= 0 && + Number.isFinite(color.g) && + color.g >= 0 && + Number.isFinite(color.b) && + color.b >= 0 + ); +} +export function validateControls(controls: IBacklightControls) { + if ( + !Number.isFinite(controls.rimGain) || + controls.rimGain < 0 || + !Number.isFinite(controls.key.intensity) || + controls.key.intensity < 0 || + !finiteColor(controls.key.color) || + !Number.isFinite(controls.fillGain) || + controls.fillGain < 0 || + !Number.isFinite(controls.fillAngularSize) || + controls.fillAngularSize <= 0 || + controls.fillAngularSize > 1.5 || + !Number.isFinite(controls.fillDirection.lengthSq()) || + controls.fillDirection.lengthSq() === 0 || + !finiteColor(controls.fillColor) + ) + throw new Error( + "Backlight controls require finite nonnegative gains, a direction and angular size in (0, 1.5].", + ); +} +export function resolveKey( + controls: IBacklightControls, + direction: Vector3, + target: Vector3, + camera: Camera = controls.camera, +) { + validateControls(controls); + // Read the renderer/game-updated matrices, as upstream Three light uniforms do. + // Targets outside the scene must be updated by their owner before rendering. + // Never mutate shared light/ancestor matrices inside a material render callback. + target.setFromMatrixPosition(controls.key.target.matrixWorld); + direction.setFromMatrixPosition(controls.key.matrixWorld).sub(target); + if ( + !Number.isFinite(direction.x) || + !Number.isFinite(direction.y) || + !Number.isFinite(direction.z) + ) + throw new Error("Key endpoints must be finite."); + const lengthSq = direction.lengthSq(); + if (!Number.isFinite(lengthSq)) throw new Error("Key direction magnitude must be finite."); + if (lengthSq <= 1e-12) { + direction.set(0, 1, 0); + return 0; + } + direction.normalize(); + if (!controls.key.layers.test(camera.layers)) return 0; + let current: Object3D | null = controls.key; + while (current !== null) { + if (!current.visible) return 0; + if (current === controls.scene) return controls.key.intensity; + current = current.parent; + } + return 0; +} diff --git a/packages/create-threenative/templates/sailing/src/render/backlightMaterial.ts b/packages/create-threenative/templates/sailing/src/render/backlightMaterial.ts index 4c8584f7b6..3bd6c1c444 100644 --- a/packages/create-threenative/templates/sailing/src/render/backlightMaterial.ts +++ b/packages/create-threenative/templates/sailing/src/render/backlightMaterial.ts @@ -29,6 +29,7 @@ import { vec3, } from "three/tsl"; import { MeshStandardNodeMaterial } from "three/webgpu"; +import { resolveKey, validateControls } from "./backlightControls.js"; export interface IBacklightControls { readonly key: DirectionalLight; @@ -45,50 +46,7 @@ export interface IBacklightControls { fillAdmitted: boolean; } -function validateControls(controls: IBacklightControls) { - if ( - !Number.isFinite(controls.rimGain) || - controls.rimGain < 0 || - !Number.isFinite(controls.key.intensity) || - controls.key.intensity < 0 || - !controls.key.color.toArray().every((value) => Number.isFinite(value) && value >= 0) || - !Number.isFinite(controls.fillGain) || - controls.fillGain < 0 || - !Number.isFinite(controls.fillAngularSize) || - controls.fillAngularSize <= 0 || - controls.fillAngularSize > 1.5 || - !Number.isFinite(controls.fillDirection.lengthSq()) || - controls.fillDirection.lengthSq() === 0 || - !controls.fillColor.toArray().every((value) => Number.isFinite(value) && value >= 0) - ) - throw new Error( - "Backlight controls require finite nonnegative gains, a direction and angular size in (0, 1.5].", - ); -} -function resolveKey(controls: IBacklightControls, direction: Vector3, target: Vector3) { - validateControls(controls); - // Read the renderer/game-updated matrices, as upstream Three light uniforms do. - // Targets outside the scene must be updated by their owner before rendering. - // Never mutate shared light/ancestor matrices inside a material render callback. - target.setFromMatrixPosition(controls.key.target.matrixWorld); - direction.setFromMatrixPosition(controls.key.matrixWorld).sub(target); - if (!direction.toArray().every(Number.isFinite)) throw new Error("Key endpoints must be finite."); - const lengthSq = direction.lengthSq(); - if (!Number.isFinite(lengthSq)) throw new Error("Key direction magnitude must be finite."); - if (lengthSq <= 1e-12) { - direction.set(0, 1, 0); - return 0; - } - direction.normalize(); - if (!controls.key.layers.test(controls.camera.layers)) return 0; - let current: Object3D | null = controls.key; - while (current !== null) { - if (!current.visible) return 0; - if (current === controls.scene) return controls.key.intensity; - current = current.parent; - } - return 0; -} +const graphs = new WeakMap>(); /** * Preserve the upstream standard PBR/normal/skinning paths and original material emissive. @@ -106,6 +64,16 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl ); validateControls(controls); const material = new MeshStandardNodeMaterial().copy(source); + let graph = graphs.get(controls); + if (!graph) { + graph = createGraph(controls); + graphs.set(controls, graph); + } + material.emissiveNode = graph; + return material; +} + +function createGraph(controls: IBacklightControls) { const rimGain = uniform(controls.rimGain).onRenderUpdate(() => { validateControls(controls); return controls.rimGain; @@ -132,13 +100,13 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl }); const keyDirectionValue = new Vector3(0, 1, 0); const keyTargetValue = new Vector3(); - const keyDirection = uniform(keyDirectionValue).onRenderUpdate(() => { - resolveKey(controls, keyDirectionValue, keyTargetValue); + const keyDirection = uniform(keyDirectionValue).onRenderUpdate((frame) => { + resolveKey(controls, keyDirectionValue, keyTargetValue, frame.camera ?? controls.camera); return keyDirectionValue; }); // Removal/visibility/intensity are live. A removed sun cannot leave an invented rim behind. - const keyGain = uniform(0).onRenderUpdate(() => - resolveKey(controls, keyDirectionValue, keyTargetValue), + const keyGain = uniform(0).onRenderUpdate((frame) => + resolveKey(controls, keyDirectionValue, keyTargetValue, frame.camera ?? controls.camera), ); const N = normalView.normalize(); const V = positionViewDirection.normalize(); @@ -173,6 +141,5 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl .mul(float(1).sub(cosRadius)) .mul(2); const fill = diffuseFill.add(specularFill).mul(fillColor).mul(fillGain); - material.emissiveNode = materialEmissive.add(rim).add(fill); - return material; + return materialEmissive.add(rim).add(fill); } diff --git a/packages/create-threenative/templates/shooter/src/render/backlightControls.ts b/packages/create-threenative/templates/shooter/src/render/backlightControls.ts new file mode 100644 index 0000000000..2d7b94bbf6 --- /dev/null +++ b/packages/create-threenative/templates/shooter/src/render/backlightControls.ts @@ -0,0 +1,66 @@ +import type { Camera, Color, Object3D, Vector3 } from "three"; +import type { IBacklightControls } from "./backlightMaterial.js"; +function finiteColor(color: Color) { + return ( + Number.isFinite(color.r) && + color.r >= 0 && + Number.isFinite(color.g) && + color.g >= 0 && + Number.isFinite(color.b) && + color.b >= 0 + ); +} +export function validateControls(controls: IBacklightControls) { + if ( + !Number.isFinite(controls.rimGain) || + controls.rimGain < 0 || + !Number.isFinite(controls.key.intensity) || + controls.key.intensity < 0 || + !finiteColor(controls.key.color) || + !Number.isFinite(controls.fillGain) || + controls.fillGain < 0 || + !Number.isFinite(controls.fillAngularSize) || + controls.fillAngularSize <= 0 || + controls.fillAngularSize > 1.5 || + !Number.isFinite(controls.fillDirection.lengthSq()) || + controls.fillDirection.lengthSq() === 0 || + !finiteColor(controls.fillColor) + ) + throw new Error( + "Backlight controls require finite nonnegative gains, a direction and angular size in (0, 1.5].", + ); +} +export function resolveKey( + controls: IBacklightControls, + direction: Vector3, + target: Vector3, + camera: Camera = controls.camera, +) { + validateControls(controls); + // Read the renderer/game-updated matrices, as upstream Three light uniforms do. + // Targets outside the scene must be updated by their owner before rendering. + // Never mutate shared light/ancestor matrices inside a material render callback. + target.setFromMatrixPosition(controls.key.target.matrixWorld); + direction.setFromMatrixPosition(controls.key.matrixWorld).sub(target); + if ( + !Number.isFinite(direction.x) || + !Number.isFinite(direction.y) || + !Number.isFinite(direction.z) + ) + throw new Error("Key endpoints must be finite."); + const lengthSq = direction.lengthSq(); + if (!Number.isFinite(lengthSq)) throw new Error("Key direction magnitude must be finite."); + if (lengthSq <= 1e-12) { + direction.set(0, 1, 0); + return 0; + } + direction.normalize(); + if (!controls.key.layers.test(camera.layers)) return 0; + let current: Object3D | null = controls.key; + while (current !== null) { + if (!current.visible) return 0; + if (current === controls.scene) return controls.key.intensity; + current = current.parent; + } + return 0; +} diff --git a/packages/create-threenative/templates/shooter/src/render/backlightMaterial.ts b/packages/create-threenative/templates/shooter/src/render/backlightMaterial.ts index 4c8584f7b6..3bd6c1c444 100644 --- a/packages/create-threenative/templates/shooter/src/render/backlightMaterial.ts +++ b/packages/create-threenative/templates/shooter/src/render/backlightMaterial.ts @@ -29,6 +29,7 @@ import { vec3, } from "three/tsl"; import { MeshStandardNodeMaterial } from "three/webgpu"; +import { resolveKey, validateControls } from "./backlightControls.js"; export interface IBacklightControls { readonly key: DirectionalLight; @@ -45,50 +46,7 @@ export interface IBacklightControls { fillAdmitted: boolean; } -function validateControls(controls: IBacklightControls) { - if ( - !Number.isFinite(controls.rimGain) || - controls.rimGain < 0 || - !Number.isFinite(controls.key.intensity) || - controls.key.intensity < 0 || - !controls.key.color.toArray().every((value) => Number.isFinite(value) && value >= 0) || - !Number.isFinite(controls.fillGain) || - controls.fillGain < 0 || - !Number.isFinite(controls.fillAngularSize) || - controls.fillAngularSize <= 0 || - controls.fillAngularSize > 1.5 || - !Number.isFinite(controls.fillDirection.lengthSq()) || - controls.fillDirection.lengthSq() === 0 || - !controls.fillColor.toArray().every((value) => Number.isFinite(value) && value >= 0) - ) - throw new Error( - "Backlight controls require finite nonnegative gains, a direction and angular size in (0, 1.5].", - ); -} -function resolveKey(controls: IBacklightControls, direction: Vector3, target: Vector3) { - validateControls(controls); - // Read the renderer/game-updated matrices, as upstream Three light uniforms do. - // Targets outside the scene must be updated by their owner before rendering. - // Never mutate shared light/ancestor matrices inside a material render callback. - target.setFromMatrixPosition(controls.key.target.matrixWorld); - direction.setFromMatrixPosition(controls.key.matrixWorld).sub(target); - if (!direction.toArray().every(Number.isFinite)) throw new Error("Key endpoints must be finite."); - const lengthSq = direction.lengthSq(); - if (!Number.isFinite(lengthSq)) throw new Error("Key direction magnitude must be finite."); - if (lengthSq <= 1e-12) { - direction.set(0, 1, 0); - return 0; - } - direction.normalize(); - if (!controls.key.layers.test(controls.camera.layers)) return 0; - let current: Object3D | null = controls.key; - while (current !== null) { - if (!current.visible) return 0; - if (current === controls.scene) return controls.key.intensity; - current = current.parent; - } - return 0; -} +const graphs = new WeakMap>(); /** * Preserve the upstream standard PBR/normal/skinning paths and original material emissive. @@ -106,6 +64,16 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl ); validateControls(controls); const material = new MeshStandardNodeMaterial().copy(source); + let graph = graphs.get(controls); + if (!graph) { + graph = createGraph(controls); + graphs.set(controls, graph); + } + material.emissiveNode = graph; + return material; +} + +function createGraph(controls: IBacklightControls) { const rimGain = uniform(controls.rimGain).onRenderUpdate(() => { validateControls(controls); return controls.rimGain; @@ -132,13 +100,13 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl }); const keyDirectionValue = new Vector3(0, 1, 0); const keyTargetValue = new Vector3(); - const keyDirection = uniform(keyDirectionValue).onRenderUpdate(() => { - resolveKey(controls, keyDirectionValue, keyTargetValue); + const keyDirection = uniform(keyDirectionValue).onRenderUpdate((frame) => { + resolveKey(controls, keyDirectionValue, keyTargetValue, frame.camera ?? controls.camera); return keyDirectionValue; }); // Removal/visibility/intensity are live. A removed sun cannot leave an invented rim behind. - const keyGain = uniform(0).onRenderUpdate(() => - resolveKey(controls, keyDirectionValue, keyTargetValue), + const keyGain = uniform(0).onRenderUpdate((frame) => + resolveKey(controls, keyDirectionValue, keyTargetValue, frame.camera ?? controls.camera), ); const N = normalView.normalize(); const V = positionViewDirection.normalize(); @@ -173,6 +141,5 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl .mul(float(1).sub(cosRadius)) .mul(2); const fill = diffuseFill.add(specularFill).mul(fillColor).mul(fillGain); - material.emissiveNode = materialEmissive.add(rim).add(fill); - return material; + return materialEmissive.add(rim).add(fill); } diff --git a/packages/create-threenative/templates/snow/src/render/backlightControls.ts b/packages/create-threenative/templates/snow/src/render/backlightControls.ts new file mode 100644 index 0000000000..2d7b94bbf6 --- /dev/null +++ b/packages/create-threenative/templates/snow/src/render/backlightControls.ts @@ -0,0 +1,66 @@ +import type { Camera, Color, Object3D, Vector3 } from "three"; +import type { IBacklightControls } from "./backlightMaterial.js"; +function finiteColor(color: Color) { + return ( + Number.isFinite(color.r) && + color.r >= 0 && + Number.isFinite(color.g) && + color.g >= 0 && + Number.isFinite(color.b) && + color.b >= 0 + ); +} +export function validateControls(controls: IBacklightControls) { + if ( + !Number.isFinite(controls.rimGain) || + controls.rimGain < 0 || + !Number.isFinite(controls.key.intensity) || + controls.key.intensity < 0 || + !finiteColor(controls.key.color) || + !Number.isFinite(controls.fillGain) || + controls.fillGain < 0 || + !Number.isFinite(controls.fillAngularSize) || + controls.fillAngularSize <= 0 || + controls.fillAngularSize > 1.5 || + !Number.isFinite(controls.fillDirection.lengthSq()) || + controls.fillDirection.lengthSq() === 0 || + !finiteColor(controls.fillColor) + ) + throw new Error( + "Backlight controls require finite nonnegative gains, a direction and angular size in (0, 1.5].", + ); +} +export function resolveKey( + controls: IBacklightControls, + direction: Vector3, + target: Vector3, + camera: Camera = controls.camera, +) { + validateControls(controls); + // Read the renderer/game-updated matrices, as upstream Three light uniforms do. + // Targets outside the scene must be updated by their owner before rendering. + // Never mutate shared light/ancestor matrices inside a material render callback. + target.setFromMatrixPosition(controls.key.target.matrixWorld); + direction.setFromMatrixPosition(controls.key.matrixWorld).sub(target); + if ( + !Number.isFinite(direction.x) || + !Number.isFinite(direction.y) || + !Number.isFinite(direction.z) + ) + throw new Error("Key endpoints must be finite."); + const lengthSq = direction.lengthSq(); + if (!Number.isFinite(lengthSq)) throw new Error("Key direction magnitude must be finite."); + if (lengthSq <= 1e-12) { + direction.set(0, 1, 0); + return 0; + } + direction.normalize(); + if (!controls.key.layers.test(camera.layers)) return 0; + let current: Object3D | null = controls.key; + while (current !== null) { + if (!current.visible) return 0; + if (current === controls.scene) return controls.key.intensity; + current = current.parent; + } + return 0; +} diff --git a/packages/create-threenative/templates/snow/src/render/backlightMaterial.ts b/packages/create-threenative/templates/snow/src/render/backlightMaterial.ts index 4c8584f7b6..3bd6c1c444 100644 --- a/packages/create-threenative/templates/snow/src/render/backlightMaterial.ts +++ b/packages/create-threenative/templates/snow/src/render/backlightMaterial.ts @@ -29,6 +29,7 @@ import { vec3, } from "three/tsl"; import { MeshStandardNodeMaterial } from "three/webgpu"; +import { resolveKey, validateControls } from "./backlightControls.js"; export interface IBacklightControls { readonly key: DirectionalLight; @@ -45,50 +46,7 @@ export interface IBacklightControls { fillAdmitted: boolean; } -function validateControls(controls: IBacklightControls) { - if ( - !Number.isFinite(controls.rimGain) || - controls.rimGain < 0 || - !Number.isFinite(controls.key.intensity) || - controls.key.intensity < 0 || - !controls.key.color.toArray().every((value) => Number.isFinite(value) && value >= 0) || - !Number.isFinite(controls.fillGain) || - controls.fillGain < 0 || - !Number.isFinite(controls.fillAngularSize) || - controls.fillAngularSize <= 0 || - controls.fillAngularSize > 1.5 || - !Number.isFinite(controls.fillDirection.lengthSq()) || - controls.fillDirection.lengthSq() === 0 || - !controls.fillColor.toArray().every((value) => Number.isFinite(value) && value >= 0) - ) - throw new Error( - "Backlight controls require finite nonnegative gains, a direction and angular size in (0, 1.5].", - ); -} -function resolveKey(controls: IBacklightControls, direction: Vector3, target: Vector3) { - validateControls(controls); - // Read the renderer/game-updated matrices, as upstream Three light uniforms do. - // Targets outside the scene must be updated by their owner before rendering. - // Never mutate shared light/ancestor matrices inside a material render callback. - target.setFromMatrixPosition(controls.key.target.matrixWorld); - direction.setFromMatrixPosition(controls.key.matrixWorld).sub(target); - if (!direction.toArray().every(Number.isFinite)) throw new Error("Key endpoints must be finite."); - const lengthSq = direction.lengthSq(); - if (!Number.isFinite(lengthSq)) throw new Error("Key direction magnitude must be finite."); - if (lengthSq <= 1e-12) { - direction.set(0, 1, 0); - return 0; - } - direction.normalize(); - if (!controls.key.layers.test(controls.camera.layers)) return 0; - let current: Object3D | null = controls.key; - while (current !== null) { - if (!current.visible) return 0; - if (current === controls.scene) return controls.key.intensity; - current = current.parent; - } - return 0; -} +const graphs = new WeakMap>(); /** * Preserve the upstream standard PBR/normal/skinning paths and original material emissive. @@ -106,6 +64,16 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl ); validateControls(controls); const material = new MeshStandardNodeMaterial().copy(source); + let graph = graphs.get(controls); + if (!graph) { + graph = createGraph(controls); + graphs.set(controls, graph); + } + material.emissiveNode = graph; + return material; +} + +function createGraph(controls: IBacklightControls) { const rimGain = uniform(controls.rimGain).onRenderUpdate(() => { validateControls(controls); return controls.rimGain; @@ -132,13 +100,13 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl }); const keyDirectionValue = new Vector3(0, 1, 0); const keyTargetValue = new Vector3(); - const keyDirection = uniform(keyDirectionValue).onRenderUpdate(() => { - resolveKey(controls, keyDirectionValue, keyTargetValue); + const keyDirection = uniform(keyDirectionValue).onRenderUpdate((frame) => { + resolveKey(controls, keyDirectionValue, keyTargetValue, frame.camera ?? controls.camera); return keyDirectionValue; }); // Removal/visibility/intensity are live. A removed sun cannot leave an invented rim behind. - const keyGain = uniform(0).onRenderUpdate(() => - resolveKey(controls, keyDirectionValue, keyTargetValue), + const keyGain = uniform(0).onRenderUpdate((frame) => + resolveKey(controls, keyDirectionValue, keyTargetValue, frame.camera ?? controls.camera), ); const N = normalView.normalize(); const V = positionViewDirection.normalize(); @@ -173,6 +141,5 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl .mul(float(1).sub(cosRadius)) .mul(2); const fill = diffuseFill.add(specularFill).mul(fillColor).mul(fillGain); - material.emissiveNode = materialEmissive.add(rim).add(fill); - return material; + return materialEmissive.add(rim).add(fill); } diff --git a/packages/create-threenative/templates/starter/src/render/backlightControls.ts b/packages/create-threenative/templates/starter/src/render/backlightControls.ts new file mode 100644 index 0000000000..2d7b94bbf6 --- /dev/null +++ b/packages/create-threenative/templates/starter/src/render/backlightControls.ts @@ -0,0 +1,66 @@ +import type { Camera, Color, Object3D, Vector3 } from "three"; +import type { IBacklightControls } from "./backlightMaterial.js"; +function finiteColor(color: Color) { + return ( + Number.isFinite(color.r) && + color.r >= 0 && + Number.isFinite(color.g) && + color.g >= 0 && + Number.isFinite(color.b) && + color.b >= 0 + ); +} +export function validateControls(controls: IBacklightControls) { + if ( + !Number.isFinite(controls.rimGain) || + controls.rimGain < 0 || + !Number.isFinite(controls.key.intensity) || + controls.key.intensity < 0 || + !finiteColor(controls.key.color) || + !Number.isFinite(controls.fillGain) || + controls.fillGain < 0 || + !Number.isFinite(controls.fillAngularSize) || + controls.fillAngularSize <= 0 || + controls.fillAngularSize > 1.5 || + !Number.isFinite(controls.fillDirection.lengthSq()) || + controls.fillDirection.lengthSq() === 0 || + !finiteColor(controls.fillColor) + ) + throw new Error( + "Backlight controls require finite nonnegative gains, a direction and angular size in (0, 1.5].", + ); +} +export function resolveKey( + controls: IBacklightControls, + direction: Vector3, + target: Vector3, + camera: Camera = controls.camera, +) { + validateControls(controls); + // Read the renderer/game-updated matrices, as upstream Three light uniforms do. + // Targets outside the scene must be updated by their owner before rendering. + // Never mutate shared light/ancestor matrices inside a material render callback. + target.setFromMatrixPosition(controls.key.target.matrixWorld); + direction.setFromMatrixPosition(controls.key.matrixWorld).sub(target); + if ( + !Number.isFinite(direction.x) || + !Number.isFinite(direction.y) || + !Number.isFinite(direction.z) + ) + throw new Error("Key endpoints must be finite."); + const lengthSq = direction.lengthSq(); + if (!Number.isFinite(lengthSq)) throw new Error("Key direction magnitude must be finite."); + if (lengthSq <= 1e-12) { + direction.set(0, 1, 0); + return 0; + } + direction.normalize(); + if (!controls.key.layers.test(camera.layers)) return 0; + let current: Object3D | null = controls.key; + while (current !== null) { + if (!current.visible) return 0; + if (current === controls.scene) return controls.key.intensity; + current = current.parent; + } + return 0; +} diff --git a/packages/create-threenative/templates/starter/src/render/backlightMaterial.ts b/packages/create-threenative/templates/starter/src/render/backlightMaterial.ts index 4c8584f7b6..3bd6c1c444 100644 --- a/packages/create-threenative/templates/starter/src/render/backlightMaterial.ts +++ b/packages/create-threenative/templates/starter/src/render/backlightMaterial.ts @@ -29,6 +29,7 @@ import { vec3, } from "three/tsl"; import { MeshStandardNodeMaterial } from "three/webgpu"; +import { resolveKey, validateControls } from "./backlightControls.js"; export interface IBacklightControls { readonly key: DirectionalLight; @@ -45,50 +46,7 @@ export interface IBacklightControls { fillAdmitted: boolean; } -function validateControls(controls: IBacklightControls) { - if ( - !Number.isFinite(controls.rimGain) || - controls.rimGain < 0 || - !Number.isFinite(controls.key.intensity) || - controls.key.intensity < 0 || - !controls.key.color.toArray().every((value) => Number.isFinite(value) && value >= 0) || - !Number.isFinite(controls.fillGain) || - controls.fillGain < 0 || - !Number.isFinite(controls.fillAngularSize) || - controls.fillAngularSize <= 0 || - controls.fillAngularSize > 1.5 || - !Number.isFinite(controls.fillDirection.lengthSq()) || - controls.fillDirection.lengthSq() === 0 || - !controls.fillColor.toArray().every((value) => Number.isFinite(value) && value >= 0) - ) - throw new Error( - "Backlight controls require finite nonnegative gains, a direction and angular size in (0, 1.5].", - ); -} -function resolveKey(controls: IBacklightControls, direction: Vector3, target: Vector3) { - validateControls(controls); - // Read the renderer/game-updated matrices, as upstream Three light uniforms do. - // Targets outside the scene must be updated by their owner before rendering. - // Never mutate shared light/ancestor matrices inside a material render callback. - target.setFromMatrixPosition(controls.key.target.matrixWorld); - direction.setFromMatrixPosition(controls.key.matrixWorld).sub(target); - if (!direction.toArray().every(Number.isFinite)) throw new Error("Key endpoints must be finite."); - const lengthSq = direction.lengthSq(); - if (!Number.isFinite(lengthSq)) throw new Error("Key direction magnitude must be finite."); - if (lengthSq <= 1e-12) { - direction.set(0, 1, 0); - return 0; - } - direction.normalize(); - if (!controls.key.layers.test(controls.camera.layers)) return 0; - let current: Object3D | null = controls.key; - while (current !== null) { - if (!current.visible) return 0; - if (current === controls.scene) return controls.key.intensity; - current = current.parent; - } - return 0; -} +const graphs = new WeakMap>(); /** * Preserve the upstream standard PBR/normal/skinning paths and original material emissive. @@ -106,6 +64,16 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl ); validateControls(controls); const material = new MeshStandardNodeMaterial().copy(source); + let graph = graphs.get(controls); + if (!graph) { + graph = createGraph(controls); + graphs.set(controls, graph); + } + material.emissiveNode = graph; + return material; +} + +function createGraph(controls: IBacklightControls) { const rimGain = uniform(controls.rimGain).onRenderUpdate(() => { validateControls(controls); return controls.rimGain; @@ -132,13 +100,13 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl }); const keyDirectionValue = new Vector3(0, 1, 0); const keyTargetValue = new Vector3(); - const keyDirection = uniform(keyDirectionValue).onRenderUpdate(() => { - resolveKey(controls, keyDirectionValue, keyTargetValue); + const keyDirection = uniform(keyDirectionValue).onRenderUpdate((frame) => { + resolveKey(controls, keyDirectionValue, keyTargetValue, frame.camera ?? controls.camera); return keyDirectionValue; }); // Removal/visibility/intensity are live. A removed sun cannot leave an invented rim behind. - const keyGain = uniform(0).onRenderUpdate(() => - resolveKey(controls, keyDirectionValue, keyTargetValue), + const keyGain = uniform(0).onRenderUpdate((frame) => + resolveKey(controls, keyDirectionValue, keyTargetValue, frame.camera ?? controls.camera), ); const N = normalView.normalize(); const V = positionViewDirection.normalize(); @@ -173,6 +141,5 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl .mul(float(1).sub(cosRadius)) .mul(2); const fill = diffuseFill.add(specularFill).mul(fillColor).mul(fillGain); - material.emissiveNode = materialEmissive.add(rim).add(fill); - return material; + return materialEmissive.add(rim).add(fill); } diff --git a/packages/create-threenative/templates/tower-defense/src/render/backlightControls.ts b/packages/create-threenative/templates/tower-defense/src/render/backlightControls.ts new file mode 100644 index 0000000000..2d7b94bbf6 --- /dev/null +++ b/packages/create-threenative/templates/tower-defense/src/render/backlightControls.ts @@ -0,0 +1,66 @@ +import type { Camera, Color, Object3D, Vector3 } from "three"; +import type { IBacklightControls } from "./backlightMaterial.js"; +function finiteColor(color: Color) { + return ( + Number.isFinite(color.r) && + color.r >= 0 && + Number.isFinite(color.g) && + color.g >= 0 && + Number.isFinite(color.b) && + color.b >= 0 + ); +} +export function validateControls(controls: IBacklightControls) { + if ( + !Number.isFinite(controls.rimGain) || + controls.rimGain < 0 || + !Number.isFinite(controls.key.intensity) || + controls.key.intensity < 0 || + !finiteColor(controls.key.color) || + !Number.isFinite(controls.fillGain) || + controls.fillGain < 0 || + !Number.isFinite(controls.fillAngularSize) || + controls.fillAngularSize <= 0 || + controls.fillAngularSize > 1.5 || + !Number.isFinite(controls.fillDirection.lengthSq()) || + controls.fillDirection.lengthSq() === 0 || + !finiteColor(controls.fillColor) + ) + throw new Error( + "Backlight controls require finite nonnegative gains, a direction and angular size in (0, 1.5].", + ); +} +export function resolveKey( + controls: IBacklightControls, + direction: Vector3, + target: Vector3, + camera: Camera = controls.camera, +) { + validateControls(controls); + // Read the renderer/game-updated matrices, as upstream Three light uniforms do. + // Targets outside the scene must be updated by their owner before rendering. + // Never mutate shared light/ancestor matrices inside a material render callback. + target.setFromMatrixPosition(controls.key.target.matrixWorld); + direction.setFromMatrixPosition(controls.key.matrixWorld).sub(target); + if ( + !Number.isFinite(direction.x) || + !Number.isFinite(direction.y) || + !Number.isFinite(direction.z) + ) + throw new Error("Key endpoints must be finite."); + const lengthSq = direction.lengthSq(); + if (!Number.isFinite(lengthSq)) throw new Error("Key direction magnitude must be finite."); + if (lengthSq <= 1e-12) { + direction.set(0, 1, 0); + return 0; + } + direction.normalize(); + if (!controls.key.layers.test(camera.layers)) return 0; + let current: Object3D | null = controls.key; + while (current !== null) { + if (!current.visible) return 0; + if (current === controls.scene) return controls.key.intensity; + current = current.parent; + } + return 0; +} diff --git a/packages/create-threenative/templates/tower-defense/src/render/backlightMaterial.ts b/packages/create-threenative/templates/tower-defense/src/render/backlightMaterial.ts index 4c8584f7b6..3bd6c1c444 100644 --- a/packages/create-threenative/templates/tower-defense/src/render/backlightMaterial.ts +++ b/packages/create-threenative/templates/tower-defense/src/render/backlightMaterial.ts @@ -29,6 +29,7 @@ import { vec3, } from "three/tsl"; import { MeshStandardNodeMaterial } from "three/webgpu"; +import { resolveKey, validateControls } from "./backlightControls.js"; export interface IBacklightControls { readonly key: DirectionalLight; @@ -45,50 +46,7 @@ export interface IBacklightControls { fillAdmitted: boolean; } -function validateControls(controls: IBacklightControls) { - if ( - !Number.isFinite(controls.rimGain) || - controls.rimGain < 0 || - !Number.isFinite(controls.key.intensity) || - controls.key.intensity < 0 || - !controls.key.color.toArray().every((value) => Number.isFinite(value) && value >= 0) || - !Number.isFinite(controls.fillGain) || - controls.fillGain < 0 || - !Number.isFinite(controls.fillAngularSize) || - controls.fillAngularSize <= 0 || - controls.fillAngularSize > 1.5 || - !Number.isFinite(controls.fillDirection.lengthSq()) || - controls.fillDirection.lengthSq() === 0 || - !controls.fillColor.toArray().every((value) => Number.isFinite(value) && value >= 0) - ) - throw new Error( - "Backlight controls require finite nonnegative gains, a direction and angular size in (0, 1.5].", - ); -} -function resolveKey(controls: IBacklightControls, direction: Vector3, target: Vector3) { - validateControls(controls); - // Read the renderer/game-updated matrices, as upstream Three light uniforms do. - // Targets outside the scene must be updated by their owner before rendering. - // Never mutate shared light/ancestor matrices inside a material render callback. - target.setFromMatrixPosition(controls.key.target.matrixWorld); - direction.setFromMatrixPosition(controls.key.matrixWorld).sub(target); - if (!direction.toArray().every(Number.isFinite)) throw new Error("Key endpoints must be finite."); - const lengthSq = direction.lengthSq(); - if (!Number.isFinite(lengthSq)) throw new Error("Key direction magnitude must be finite."); - if (lengthSq <= 1e-12) { - direction.set(0, 1, 0); - return 0; - } - direction.normalize(); - if (!controls.key.layers.test(controls.camera.layers)) return 0; - let current: Object3D | null = controls.key; - while (current !== null) { - if (!current.visible) return 0; - if (current === controls.scene) return controls.key.intensity; - current = current.parent; - } - return 0; -} +const graphs = new WeakMap>(); /** * Preserve the upstream standard PBR/normal/skinning paths and original material emissive. @@ -106,6 +64,16 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl ); validateControls(controls); const material = new MeshStandardNodeMaterial().copy(source); + let graph = graphs.get(controls); + if (!graph) { + graph = createGraph(controls); + graphs.set(controls, graph); + } + material.emissiveNode = graph; + return material; +} + +function createGraph(controls: IBacklightControls) { const rimGain = uniform(controls.rimGain).onRenderUpdate(() => { validateControls(controls); return controls.rimGain; @@ -132,13 +100,13 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl }); const keyDirectionValue = new Vector3(0, 1, 0); const keyTargetValue = new Vector3(); - const keyDirection = uniform(keyDirectionValue).onRenderUpdate(() => { - resolveKey(controls, keyDirectionValue, keyTargetValue); + const keyDirection = uniform(keyDirectionValue).onRenderUpdate((frame) => { + resolveKey(controls, keyDirectionValue, keyTargetValue, frame.camera ?? controls.camera); return keyDirectionValue; }); // Removal/visibility/intensity are live. A removed sun cannot leave an invented rim behind. - const keyGain = uniform(0).onRenderUpdate(() => - resolveKey(controls, keyDirectionValue, keyTargetValue), + const keyGain = uniform(0).onRenderUpdate((frame) => + resolveKey(controls, keyDirectionValue, keyTargetValue, frame.camera ?? controls.camera), ); const N = normalView.normalize(); const V = positionViewDirection.normalize(); @@ -173,6 +141,5 @@ export function backlightMaterial(source: MeshStandardMaterial, controls: IBackl .mul(float(1).sub(cosRadius)) .mul(2); const fill = diffuseFill.add(specularFill).mul(fillColor).mul(fillGain); - material.emissiveNode = materialEmissive.add(rim).add(fill); - return material; + return materialEmissive.add(rim).add(fill); }