Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions docs/BACKLOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ Items with a **→ details** link have a full write-up in [`backlog/`](backlog/)

## Rendering

- [ ] **Field-star body braided to `select` slot** `ready` **important** — `#focus=star-<id>` arrives at an invisible star and deselect-at-close-range blinks the body out; sphere gates on `select` while URL fills `focus` and the sprite is distance-retired in-shader. → [details](backlog/2026-07-21-star-body-selection-braid.md)
- [ ] **Multi-star sphere presence** `deferred` — the field-star sphere is one-at-a-time (nearest wins); a Gaia-resolved double a few AU apart would leave the companion sprite-retired with no body. → [details](backlog/2026-07-21-multi-star-sphere-presence.md)
- [ ] **Saturn ring brightness** `ready` — the ring reads too dim next to the new limb-darkened disc; retune ring albedo/exposure (surfaced in the planet-atmospherics per-body visual pass).
- [ ] **Photoreal-Earth follow-ups** `deferred` — drift traps + fidelity gaps from plans A–E (equirect-uv mirror, setMap kind table, shared proxy-sphere idiom). → [details](backlog/2026-07-19-photoreal-earth-followups.md)
- [ ] **Titan atmosphere** `needs-design` — minimal params-row-over-flat-sphere vs full Venus-style cloud-as-surface + limb treatment (needs a texture through the fetch/build pipeline). → [details](backlog/2026-07-19-titan-atmosphere.md)
Expand All @@ -51,7 +51,6 @@ Items with a **→ details** link have a full write-up in [`backlog/`](backlog/)
- [ ] **Perf-harness findings: measured hotspots** `needs-design` — large tier ≈ 3× medium (blows 60fps alone), small slower than medium (unexplained), solar-system 16.9 ms with vertex-bound hdr·NEAR0 at 60%. → [details](backlog/2026-07-21-perf-harness-findings.md)
- [ ] **Lower-res offscreen star-aggregate pass** `ready` — try `STAR_AGGREGATE_DIVISOR` 2 → 4 (`renderTargets.ts`); ~4× further fill cut if the upsampled glow field survives visually.
- [ ] **Bright star clump at ~5.9 kpc** `deferred` — flux verified conserved; residual over-exposure is display policy (mid-anchor slider + summed knee shipped; retune or tone-map shoulder next). → [details](backlog/2026-07-17-star-clump-brightness-5-9kpc.md)
- [ ] **Field-star resolve predicate duplicated** `ready` — `starResolves` (focusedFieldStarSphereLayer) restates partitionStarsByResolution's per-star diameter+resolve rule; extract a shared `starResolvesToSphere` util both call.
- [ ] **Foreground body draw/drawPick share a per-frame resolved set** `deferred` — mirrored partition/cull invocations can desync under future edits; star partition runs up to 4×/frame at deep zoom. → [details](backlog/2026-07-17-foreground-body-resolved-set.md)
- [ ] **Star drawBudget small-tier mobile cap + iOS device pass** `deferred` — lower `hardCap` for `tier === 'small'` in `gaia-stars.ts`, tuned on a real device; verify the new vertex-stage storage bindings under WebKit's stricter WebGPU in the same pass.
- [ ] **Star field → own slab** `needs-design` — the depthless star map (points/captions/connectors) inherits NEAR0's Earth-scale depth bracket; a STARS slab row deletes the three clip-z clamps + far-plane coupling. → [details](backlog/2026-07-13-star-field-own-slab.md)
Expand Down
33 changes: 33 additions & 0 deletions docs/backlog/2026-07-21-multi-star-sphere-presence.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Multi-star sphere presence (resolved double systems)

**Surfaced:** 2026-07-21, designing presence-by-proximity (`fieldStarSphereLayer`).
Deliberately shipped single-sphere; this is the extension if a real double ever
matters.

## The gap

The layer draws ONE sphere — the nearest resolvable star (nearest-wins with
hysteresis). A second catalogued star inside its own sprite-dissolve band
(would-be sphere size 4–16 px, roughly 3–12 AU of camera distance for solar
radius at 1080p) has its point sprite faded/retired but gets no sphere: the
companion of a close pair goes invisible while the primary shows.

Why this is acceptable today: the window only opens for two Gaia records within
a few AU of each other. Gaia resolves pairs down to ~0.4–0.6 arcsec — a few AU
of separation even at 10 pc — so such pairs are vanishingly rare in the bin,
further thinned by magnitude subsampling. No known repro in the shipped data.

## Extension sketch

- `nearestResolvableStar` → `starsWithinRadius`: same expanded-box octree
descent, return ALL hits within the OFF radius (bounded small; the radius is
~AU-scale).
- Layer keeps per-star hysteresis over a small present-set (≤K, K≈4) instead of
one `PresentStar`; `draw`/`drawPick` loop the set — `starRenderer.draw` and
`drawFlooredSpherePick` are already per-sphere calls, so the loop is the only
change. Pick pass handles multiple spheres as-is (depth-tested nearest-wins).
- All spheres share the one representative solar radius (no per-star radii in
the bin) — a true double renders as two identical suns.

Design bits to settle: K and whether the ON takeover rule stays nearest-only or
admits any star crossing ON (probably the latter once presence is a set).
50 changes: 0 additions & 50 deletions docs/backlog/2026-07-21-star-body-selection-braid.md

This file was deleted.

Loading
Loading