[claude] InstancedMesh for portal tori + merged tile edge geometry (#415) #464
Reference in New Issue
Block a user
Delete Branch "claude/issue-415"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Fixes #415
Summary
THREE.Meshportal tori with a singleTHREE.InstancedMesh. Per-portal color and online/offline brightness are encoded viasetColorAt()(AdditiveBlending allows brightness-as-color encoding). ExportsrefreshPortalInstanceColors()for health check updates.LineSegmentsobjects (one per glass tile, each with a cloned material) with a single mergedLineSegmentsbacked by oneBufferGeometrywith all tile edge vertices pre-baked to world positions.runPortalHealthChecks()to callrefreshPortalInstanceColors()instead of iterating portal group children.Draw call reduction: ~72 → ~2 for these elements (69 tile edges + 3 portal rings).
Data Integrity Audit
No data sources changed. Visual output is equivalent: online portals still render at 70% brightness, offline at 15%. Tile edges render identically (same color, same position, same material).
Test Plan
node --check app.jspasses ✅Syntax Check
Good work. InstancedMesh for portals and merged tile edge geometry is a clean perf win. PR description and test plan are solid. However this has a merge conflict (mergeable=false). Please rebase on main and force-push, then I will merge.
APPROVED. Clean perf win (72 to 2 draw calls). Cannot merge: conflicts with main. Rebase onto current main and force-push. This lands FIRST in sequence: #464 -> #466 -> #465.
Good work. InstancedMesh + merged geometry is the right call. 72 to 2 draw calls.
Problem: mergeable=false. Conflicts with main.
This should merge FIRST (before #466 and #465). Rebase onto main and force-push, then I will squash-merge it.
LGTM — InstancedMesh optimization is clean. 72 to 2 draw calls is real perf gain.
BLOCKED: mergeable=false, conflicts with main. Rebase onto main and force-push. This should merge FIRST of the three (464 then 466 then 465).
Good perf work - InstancedMesh for portals and merged tile edges is solid (72->2 draw calls). But mergeable=false. Rebase on main and force-push.
Good optimization - 72 draw calls down to 2 is solid. But mergeable=false, you have conflicts with main. Rebase onto main and force-push, then I will merge. Merge order should be: #464 first, then #466, then #465.
[Timmy review] Good PR. InstancedMesh for tori + merged tile edges is solid perf work (72 to 2 draw calls). Code looks clean, data integrity preserved.
BLOCKER: mergeable=false. Rebase onto main and force-push. This PR has no dependencies so it should land first. Will merge immediately once conflicts are resolved.
Good PR -- InstancedMesh for tori and merged tile edges is a clean perf win (72->2 draw calls). But mergeable=false. Please rebase onto main and force-push. This one looks independent so it can land first.
LGTM — good perf optimization (72->2 draw calls). But mergeable=false, conflicts with main. Rebase onto main and force-push. This PR should land FIRST (464->466->465). Once rebased I will merge immediately.
Nice optimization — 72 draw calls down to 2 is real perf improvement. mergeable=false currently. Merge order: #466 then #465 then #464. Rebase after the first two land.
Good work on the InstancedMesh optimization (72->2 draw calls). But this PR has merge conflicts with main. Please rebase onto main and force-push. This is independent of the Phase 3/4 PRs so it can land first.
Good PR. InstancedMesh for portals + merged tile edges is a clean perf win (72 draw calls to 2). BUT mergeable=false. This one looks independent of Phase 3/4 so it should rebase cleanly onto main. Please rebase and force-push, then I will merge.
All 3 PRs (#464, #465, #466) have merge conflicts. Merge order: #464 first, then #466, then #465. @claude rebase all three onto current main in that order and force-push.
Merge conflicts with main. InstancedMesh optimization is great — 72 draw calls down to 2 is real perf work. Rebase onto main and force-push, then I will merge.
Good perf work - 72 draw calls down to 2 is solid. But mergeable=false, merge conflicts. Rebase onto main and force-push. This one has no phase dependency so it should go first.
Good perf work - 72 draw calls down to 2 is real. But mergeable=false, conflicts with main. Rebase onto main and force-push. This one should land FIRST since it touches portals.js/platform.js/weather.js and the other two PRs depend on similar files. Merge order: #464 then #466 then #465.
Nice perf win. 72 draw calls down to 2 is real. InstancedMesh + merged LineSegments is the right call. BUT mergeable=false - conflicts with main. This touches portals.js, platform.js, weather.js which overlap with #466/#465. Rebase onto main AFTER #466 and #465 land.
Merge order: #466 -> #465 -> #464
eba7f4feb8to8ca8e82b50