Skip to content

perf: small bodies keep the dataset they left, bodies draw on one mesh at one atlas size, and picture layers decode before they show - #1330

Merged
alowpoly merged 29 commits into
mainfrom
perf/dataset-pool-keeps
Oct 5, 2026
Merged

alowpoly merged 29 commits into
mainfrom
perf/dataset-pool-keeps

Conversation

@alowpoly

@alowpoly alowpoly commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

Change

Small bodies keep the images of the dataset they left. Guide.

A dataset takes its own mesh only when it is another shape; a body's datasets share one atlas size. One mesh: Mathilde, comet 67P, Bennu. One atlas size: Phoebe, Tethys, Mimas, Vesta, Enceladus. Smaller atlases: Deimos, Phobos. Datasets of Phoebe, Tethys and Deimos no longer freeze an iPad's page. Rules.

Enceladus, Dione and Rhea get the image-sized face boxes other globes have; the bake had missed them.

A nebula's layer stack decodes its images before it shows.

Evidence and limits

Proves the change: iPad, longest frame of a dataset switch: Bennu 345-349 to 74-78 ms; comet 67P 487-1,153 to 202-236; Phoebe 729-947 to 200-210; Tethys 733-1,008 to 139-142; Mimas 346-398 to 89-94; Vesta's geology 293-335 to 75-76; Enceladus 189-613 to 50-85; Deimos 5,010-13,227 to 223-353; Phobos 312-552 to 166-187. NGC 2392 turn 235 to 31, switch 270 to 30; M33 zoom 220 to 91. iPad screenshots after each switch show whole bodies.

Clean: typecheck, the bake's and the renderer's tests, the bodies' presentation audits.

Limits: Deimos keeps 1/4 of its atlas pixels, Phobos 9/16. After main's Eta Carinae change a bank of patches draws at full opacity: Cassiopeia A's zoom has a 276 ms frame (162 before this PR), not measured on main alone. 32.1 to 33.5% of a 67P VIRTIS atlas stays gridded; 67P's install grows 20 MB. The Helix's turns are 72 to 104 ms (82, 40, 38 before). No phone measured.

  • Prepared assets published.

…its dataset pool states a byte budget of two selections
@alowpoly alowpoly added the pipeline-change Shared pipeline change that legitimately touches more than 12 objects label Oct 5, 2026
@alowpoly alowpoly changed the title perf(objects): a small body keeps the images of the dataset it left; its dataset pool states a byte budget of two selections perf(objects): a small body keeps the images of the dataset it left, and a mesh change attaches its faces a slice a frame Oct 5, 2026
@alowpoly alowpoly changed the title perf(objects): a small body keeps the images of the dataset it left, and a mesh change attaches its faces a slice a frame perf(objects): a small body keeps the images of the dataset it left Oct 5, 2026
@alowpoly alowpoly changed the title perf(objects): a small body keeps the images of the dataset it left perf(objects): a small body keeps the images of the dataset it left; Mathilde draws every dataset on one mesh Oct 5, 2026
@alowpoly alowpoly changed the title perf(objects): a small body keeps the images of the dataset it left; Mathilde draws every dataset on one mesh perf(objects): small bodies keep the dataset they left, and Mathilde and comet 67P draw every dataset on one mesh Oct 5, 2026
@alowpoly alowpoly changed the title perf(objects): small bodies keep the dataset they left, and Mathilde and comet 67P draw every dataset on one mesh perf: small bodies keep the dataset they left, Mathilde and comet 67P draw on one mesh, and picture layers decode before they show Oct 5, 2026
@alowpoly alowpoly changed the title perf: small bodies keep the dataset they left, Mathilde and comet 67P draw on one mesh, and picture layers decode before they show perf: small bodies keep the dataset they left, three bodies draw on one mesh, and picture layers decode before they show Oct 5, 2026
@alowpoly alowpoly changed the title perf: small bodies keep the dataset they left, three bodies draw on one mesh, and picture layers decode before they show perf: small bodies keep the dataset they left, bodies draw on one mesh at one atlas size, and picture layers decode before they show Oct 5, 2026
… size; two Tethys datasets no longer freeze an iPad's page
…celadus, Dione and Rhea get image-sized boxes
… datasets; picking it took 568 to 613 ms on an iPad, now 51 to 68
# Conflicts:
#	packages/renderer/src/image-layers/prepared-image-layer-runtime.test.ts
#	packages/renderer/src/image-layers/prepared-image-layer-runtime.ts
#	packages/renderer/src/universe/universe-catalog-banks.test.ts
#	site/build/prepare/prepare-object-json.mts
#	src/objects/observable-universe/inventory.json
…t pick froze an iPad's page for 5 to 13 seconds, now 223 to 353 ms
@alowpoly
alowpoly enabled auto-merge October 5, 2026 19:16
@alowpoly
alowpoly disabled auto-merge October 5, 2026 19:18
@alowpoly
alowpoly merged commit 993c493 into main Oct 5, 2026
23 of 24 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pipeline-change Shared pipeline change that legitimately touches more than 12 objects

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant