Skip to content

fix(templates): share backlight graph and honor the render camera - #440

Merged
jonit-dev merged 11 commits into
developfrom
fix/prd345-shooter-perf
Oct 5, 2026
Merged

jonit-dev merged 11 commits into
developfrom
fix/prd345-shooter-perf

Conversation

@jonit-dev

@jonit-dev jonit-dev commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

The generated backlight shader now shares one render graph per controller across twelve material templates. Each converted material retains its own PBR inputs, maps and original emissive. A regression repair also resolves key-light layers against the actual render camera: when a second camera has different layers from the controller camera, it now receives the correct key contribution.

The controller owns the shared graph through a WeakMap. The render callbacks read current gains, light state and actual camera layers without changing light matrices. Rain keeps its custom shader.

The historical 21-launch study at unchanged 1920×1080 and 33 ms measured mean per-run p95 46.93 ms for per-material graphs (0/6 passes) and 30.43 ms for shared graphs (3/3). Raw reports, captured sources and PNG hashes remain in docs/benchmark/prd345/shooter-causes1/. This historical result does not admit the complete current source: runtime/package/cooked-model and resource differences remain, and the camera callbacks have since been repaired.

Current verification:

  • Actual-camera regression was RED before repair; camera/matrix/lifecycle tests pass 31/31.
  • Merged scaffold/compiler contracts pass 101/101, including all thirteen hashes measured through the real generator. Latest merged exposure/docs/instruction contracts pass 35/35.
  • Ordinary JS/DTS build, root typecheck, lint, docs and budgets pass. Lint retains existing warnings; budgets reports existing native-census drift.
  • Fresh local difficult-lighting PNGs pass the unchanged decoded-pixel qualifier and independent visual review: edge/body p99 52/2 versus zero-rim 7/0; fill p99 43 versus black 0. Black fails only the two intended tone assertions. The omitted-marker runner passes, and its external marker qualifier rejects the missing marker. Actual camera matrices match across all four assertion arms.
  • Independent final source/evidence review found no remaining actionable source defect.
  • Published head 30d7847bb passed CI37272442106. Its exact candidate 673639ae has the same tree. The complete run passed 65 jobs with one explicit Android payload publish skip. All thirteen template nonvisual/pristine-typecheck legs, all four root unit shards (8,155 passed / 40 skipped tests), package, native, browser, playtest, typecheck and lint pass. These CI gates do not replace hardware template appearance or the unchanged 33 ms scenario.
  • Current Linux-x64 native starter and relocated/container captures each pass 300 frames. The native consumer passes movement, collection and restart. Source admission gates, CPU material-identity controls and actual enabled=false / convertedMaterials=0 execution jointly verify original-material preservation. Environment radiance honestly remains unknown and fill stays unadmitted. Independent review inspected the pixels and verified retained report/screenshot hashes. This is fallback execution and preservation evidence; matched current visual/cost observations remain unverified.

Current integrated performance acceptance is RED. Six unchanged 1920×1080 / warmup60 / 33 ms scenarios measured shooter p95 112.9 / 144.5 / 88.9 ms and snow 59.8 / 48.6 / 51.8 ms; one shooter run also failed minimum FPS. Draw and triangle limits passed. These runs used two physical helper cores on a busy host and do not isolate code causality. Every failed outcome is retained. A same-current-assets comparison on physical cores 6–8 and their siblings passed measured suitability checks, then an actual CI Runner.Worker arrived eight seconds into the per-material launch. That arm was aborted; the shared arm was unrun, and no completed report, screenshot or new p95 statistic was produced. A preceding preparation-only attempt was retained separately after an idle-listener poll exposed an overly strict harness check; the focused listener classification regression is now 14/14 green. The scenario thresholds stayed unchanged, and the capture stopped without an automatic retry.

Current acceptance checkpoint and report seals distinguish verified, failed and unrun criteria. PRD-345 phases 2–3 remain open: integrated gameplay/performance and repeated startup admission, the complete all-template hardware gate and matched visual/cost observations, multi-camera and mixed-material/disposal GPU pixels, and rain's custom convention. Native original-material preservation and targeted Linux-x64 execution are verified. Enabled native grazing/fill is outside the documented admission scope; it is not an extra completion requirement. No local native build or denied replay was attempted in this task.

Published head 30d7847bb preserves the owner reconciliation and develop d5d16970 by normal merges. Develop subsequently advanced to 9b3c4824 through animation PR #395; the recorded qualification belongs to the explicitly named source tree above, and no new-base qualification is claimed. All new images remain local pending sharing approval; none were uploaded or added to Git. No performance limit, assertion, deadline or hook was weakened or bypassed.

@jonit-dev jonit-dev added the prd:50% PRD half the phases verified label Oct 5, 2026
jonit-dev and others added 5 commits October 4, 2026 21:15
…erim root run

primary-docs and instruction-budget specs pass 17/17. The root and native box stays open with the
interim result, and the shooter perf regression is still unmeasured.
… evidence

The twelve material templates now share one controller-owned render graph, so
their generated scaffold trees move; rain is unchanged. Recompute the PRD-201
parent hashes through the spec that asserts them.

Retained literal source/helper files under docs/benchmark/prd345/shooter-causes1
are raw evidence, like docs/benchmark/sweeps and docs/verification/visuals; ignore
the tree from formatting so the evidence bytes stay literal.
@jonit-dev
jonit-dev force-pushed the fix/prd345-shooter-perf branch from c916625 to ef5cbb2 Compare October 5, 2026 04:32
@jonit-dev jonit-dev changed the title fix(templates): finish PRD-345 shooter backlight perf and close the open boxes fix(templates): share the backlight render graph per controller, clearing the PRD-345 shooter p95 regression Oct 5, 2026
@jonit-dev
jonit-dev marked this pull request as ready for review October 5, 2026 04:32
…-perf

# Conflicts:
#	packages/create-threenative/__tests__/scaffold.spec.ts
@jonit-dev
jonit-dev enabled auto-merge October 5, 2026 05:25
@jonit-dev
jonit-dev added this pull request to the merge queue Oct 5, 2026
@jonit-dev
jonit-dev removed this pull request from the merge queue due to a manual request Oct 5, 2026
@jonit-dev jonit-dev changed the title fix(templates): share the backlight render graph per controller, clearing the PRD-345 shooter p95 regression fix(templates): share backlight graph and honor the render camera Oct 5, 2026
@jonit-dev
jonit-dev added this pull request to the merge queue Oct 5, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 5, 2026
@jonit-dev
jonit-dev added this pull request to the merge queue Oct 5, 2026
Merged via the queue into develop with commit d3c009e Oct 5, 2026
77 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

prd:50% PRD half the phases verified

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant