From d99a7026bd623f0817bde2e1aafc43ecd6fbc485 Mon Sep 17 00:00:00 2001 From: alowpoly Date: Mon, 5 Oct 2026 16:33:52 -0300 Subject: [PATCH] perf(objects): Haumea draws 452 faces instead of 1,444; a dataset switch took 177 to 225 ms on an iPad, now 47 to 106 --- packages/bake/src/presentation/leaf-box.ts | 3 +- src/objects/haumea/README.md | 2 ++ src/objects/haumea/inventory.json | 28 +++++++++---------- .../source/preparation/shape-model.json | 4 +-- 4 files changed, 20 insertions(+), 17 deletions(-) diff --git a/packages/bake/src/presentation/leaf-box.ts b/packages/bake/src/presentation/leaf-box.ts index 0f8ec4de6ae..1f679bc2999 100644 --- a/packages/bake/src/presentation/leaf-box.ts +++ b/packages/bake/src/presentation/leaf-box.ts @@ -28,7 +28,8 @@ export { LEAF_BOX_FACTOR } from '@cssearth/objects'; export const LEAF_BOX_SCREEN_PIXELS = 2; /** Leaves per group: the smallest repaint the runtime can schedule in one frame (prepared-leaf-box-blocks.ts paces the * groups by the frames they cost). In the iOS simulator a Moon leaf repaints in about 0.7 ms and a Haumea leaf in about - * 2.5 ms, so a group of 8 stays near one frame on either. The Moon's 448 leaves make 56 blocks, Haumea's 1,444 make 180. */ + * 2.5 ms, so a group of 8 stays near one frame on either. The Moon's 448 leaves make 56 blocks; Haumea's 1,444 made 180 + * until its mesh went from 32 by 48 to 16 by 32 on 2026-10-05. */ export const LEAF_BOX_GROUP_LEAVES = 8; /** Leaf boxes never shrink below this many silhouette pixels' worth: a body smaller than this on screen keeps its first step. */ const FIRST_STEP = 16; diff --git a/src/objects/haumea/README.md b/src/objects/haumea/README.md index 35db912d7d2..81901ac9c7b 100644 --- a/src/objects/haumea/README.md +++ b/src/objects/haumea/README.md @@ -40,6 +40,8 @@ The shared `disc-integrated-color` method ([disc-integrated-color.ts](../../../p For the Illustration, each texel is found through the model's own texture coordinates on its ellipsoid and placed on the measured triaxial shape at the same normalized direction; the texture is not repainted. Its longitudes are arbitrary. Color stays the default dataset, and the illustration never counts as imagery: Haumea stays "Shape only". +The ellipsoid is drawn as 16 latitude bands of 32 faces and four polar caps (452 faces), as the other globes are. Its flat faces sit at most 2.19 px from the true ellipsoid at rest, against 2.20 px for a sphere on the same mesh. Until 5 October 2026 it had 32 bands of 48 (1,444 faces, 0.77 px): a dataset switch repaints every face and took 177 to 225 ms on an iPad, against 47 to 106 ms now. + ## Evidence Each published color uncertainty moves an sRGB channel by at most 2 of 255, and the albedo uncertainty moves every channel by 3. The [MBOSS](https://doi.org/10.26093/cds/vizier.35460115) three-epoch mean (B−V 0.631, V−R 0.370, V−I 0.687) gives 190, 189, 191. The Herschel and Spitzer albedo of 0.804 that Ortiz et al. (2017) replace would give 230, 232, 234. diff --git a/src/objects/haumea/inventory.json b/src/objects/haumea/inventory.json index 0f034f31b5b..a632a2f55d0 100644 --- a/src/objects/haumea/inventory.json +++ b/src/objects/haumea/inventory.json @@ -16,14 +16,14 @@ { "location": "public", "filename": "haumea-arrival.webp", - "bytes": 48986, - "sha256": "c99bfac0ee57cb418d7e58da4d5c476a218442905380d7b88ab6ecf7e190bef1" + "bytes": 46896, + "sha256": "933382630bab9142a36d0f8aea419058f2e4c3b22c793748a218349fc0a5d51c" }, { "location": "public", "filename": "haumea-billboard.webp", - "bytes": 5128, - "sha256": "f35b82ed761b5d6bf392d015da3ef13779cb51ac7803c6a74f6a1c8bfc038811" + "bytes": 5022, + "sha256": "99e55f73d95900a30b51e7a873b4fa96b2e7c168b8dd16eebfcd2e675e2b1e30" }, { "location": "public", @@ -46,8 +46,8 @@ { "location": "public", "filename": "poles-illustration.webp", - "bytes": 75844, - "sha256": "ceb4de7e2d997b2b0cda4ef9fc932e5bd8edd1cc0052dd85c3fc716c3ec9d8b1" + "bytes": 97670, + "sha256": "e2970904f89b619403cb947532ddb89437d12edc763d7de3c518c895904dc091" }, { "location": "public", @@ -58,14 +58,14 @@ { "location": "public", "filename": "surface-color.webp", - "bytes": 342, - "sha256": "ad3e5db9db6f594a967970ac8cde7bab9724f4d208310efe95f7ef7233fed0a5" + "bytes": 346, + "sha256": "0640ba905d3930a9be8ee6566d52351f14341c844b6ceb8adf2f6af4bfee91d6" }, { "location": "public", "filename": "surface-illustration.webp", - "bytes": 3525294, - "sha256": "c69a552407aa144d2c47741928cfac6bfdc798a25503c29941d2639b96f60742" + "bytes": 3552420, + "sha256": "d40d63f7f29680241858897fc7ca1065c2dd7f42d8f6ac40049217263506cb55" }, { "location": "prepared", @@ -118,14 +118,14 @@ { "location": "prepared", "filename": "runtime.json", - "bytes": 634110, - "sha256": "ef25172f86a3c5beb548dddc0f230408422d6ba311997fb890679e9696b298e2" + "bytes": 214899, + "sha256": "bf4fb310261159c590308bd370bd515da5b324d37545d7493804d8fa0f7a741b" }, { "location": "prepared", "filename": "scene.json", - "bytes": 955890, - "sha256": "0caac01892d1b06310db43a98074b12197adffe45c7aa3f7821e1455d2fd3908" + "bytes": 328087, + "sha256": "8fa1f4d37ab753d4d69b08309eb5a81c064a097bbe290c3829737955f58b5621" }, { "location": "prepared", diff --git a/src/objects/haumea/source/preparation/shape-model.json b/src/objects/haumea/source/preparation/shape-model.json index e175beae6e5..93e929cd0ae 100644 --- a/src/objects/haumea/source/preparation/shape-model.json +++ b/src/objects/haumea/source/preparation/shape-model.json @@ -4,8 +4,8 @@ "displayRadius": 230, "quadBudget": 2000, "mesh": { - "latitudeSegments": 32, - "longitudeSegments": 48, + "latitudeSegments": 16, + "longitudeSegments": 32, "width": 3072, "height": 1536, "poleSize": 256,