feat(geo-layers): coverage LOD tile prefetching - #10306
Conversation
chrisgervang
left a comment
There was a problem hiding this comment.
There are a couple of interesting things in the demo that I'm not really sure how to improve:
- As the low-resolution tiles are loading in and the high-resolution tiles are loading on top, I can see almost like a parallax or perspective shift between the low-res and high-res tiles. I'm curious what the root cause of that is.
- I see a lot of z-fighting as we zoom into the final destination in New York between the low-res and high-res tiles. There's a lot of z-fighting in the before as well, so this isn't a regression and more a limitation with our renderer
I wrote a draft of docs for this that I'll push up for you to review.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 4be9e53. Configure here.
Almost certain this is a
Yeah it resolves ever-so-slightly faster in the new strategy due to the center priority, but its nowhere near as bad when testing with the |
1321c68 to
149a855
Compare
a32e93b to
2b5d3cc
Compare
Willing to put this into the 9.4 release as a means of moving this forward without the risk of regression? |
|
@copilot resolver los conflictos de combinación en esta rama. |
Merge conflicts resolved in 4f61a0b (initial merge) and fixed in the follow-up commit. The resolution:
All 29 tests pass. |
…ty-on-master-demo
…ty-on-master-demo
Greptile SummaryAdds opt-in ancestor-tile prefetching to TileLayer and TerrainLayer to preserve coarse visual coverage while selected high-resolution tiles load.
Confidence Score: 4/5The implementation appears safe to merge, with a non-blocking reproducibility issue in the new demo package manifest. The coverage-prefetch lifecycle, priority, and refinement paths have no accepted functional failure, but the new demo dependencies are not captured in the committed lockfile as required by repository guidance. Files Needing Attention: test/apps/lod-strategy-demo/package.json
|
| Filename | Overview |
|---|---|
| modules/geo-layers/src/tileset-2d/tileset-2d.ts | Implements coverage ancestor selection, request prioritization, eviction handling, and coverage-aware best-available refinement without an accepted behavioral defect. |
| modules/geo-layers/src/tile-layer/tile-layer.ts | Adds and forwards the public lodStrategy option with the existing behavior retained as the default. |
| modules/geo-layers/src/terrain-layer/terrain-layer.ts | Forwards TerrainLayer's lodStrategy into its internal tileset options. |
| test/modules/geo-layers/tileset-2d/tileset-2d.spec.ts | Adds focused tests for coverage selection, priority tiers, resolution floors, and placeholder refinement. |
| test/apps/lod-strategy-demo/package.json | Defines the new demo dependencies, but their resolutions are not represented by a corresponding lockfile update. |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Viewport update] --> B[Select target tiles]
B --> C{lodStrategy = coverage?}
C -- No --> D[Request selected tiles]
C -- Yes --> E[Find ancestor coverage tiles]
E --> F[Request selected tiles first]
F --> G[Request visible placeholders]
G --> H[Request prefetch ancestors]
H --> I{Selected tile loaded?}
I -- No --> J[Render immediate children and nearest allowed ancestor]
I -- Yes --> K[Render selected high-resolution tile]
Reviews (1): Last reviewed commit: "Merge remote-tracking branch 'upstream/m..." | Re-trigger Greptile

lod_strategy_comparison.mov
Summary
Adds opt-in coverage LOD prefetching for TileLayer/TerrainLayer so animated transitions can keep coarse coverage available while high-resolution target tiles load.
Why
During fast camera transitions, high-resolution requests can saturate the queue and leave temporary blank coverage. Prefetching ancestor tiles gives the viewport useful lower-resolution coverage, then lets sharper selected tiles replace it as they arrive.
Change
Validation
Split Notes
The center-priority/default request ordering and public getPriority accessor were moved to the independent PR #10364. This PR is now scoped to lodStrategy coverage prefetching only.