Repository navigation
v0.84.0
🎯T168 — Cube-sphere tile pyramid
Globe-scale imagery for consumer games: one nested pack, fully-resident coarse-first loading, device-tier depth cap. Driven by yourworld2's 1 km/px Blue Marble globe.
Added
.getptile-pack format (TilePackFormat.h): per-face quadtree pyramid of compressed tiles, multiple planes per pack (imagery / country-ID / SDF), coarse→fine blob layout with a byte-prefix truncation property — a capped cook is byte-identical to a prefix of the full pack. Frozen on-disk structs; data-breaking to change.bin/ge-texpackcook (ge::cookTilePack): equirectangular master → gnomonic per-face reprojection with supersampled leaf sampling, box-filtered pyramid levels, gutters via continuous face extension, per-tile mips, parallel astcenc. JSON config; plane encodings Astc4x4, R8, and Rg8 (16-bit IDs as lo/hi bytes, for region sets that overflow u8).ge::TilePyramidloader (TilePack.h): fully-resident coarse-first loading — background reader thread, budgeted render-thread upload pump (tilepack.uploads_per_frametweak), ancestor-fallbackresolve(), capped/truncated-pack presence rule, defensive parsing, FAILED-state resource checks.ge::CubeSphere(CubeSphere.h): shared cube-sphere conventions — face basis matching sokol cubemap slice addressing, tile/patch math,tileAncestorRemap, equirect helpers. Pinned by convention-oracle tests.ge::queryDeviceTier(DeviceTier.h): Full / Capped / Legacy texture tier from physical RAM (sysctl / sysinfo) + live ASTC support, mapped to a pyramid load-depth cap. Logged and reported on the app channel.
Changed
- Apple-silicon macOS Metal now samples ASTC/ETC2/EAC (vendored sokol patch, runtime
MTLGPUFamilyApple7gate) — M-series desktops get dev parity with mobile compressed textures. sg_setupimage/view pools raised to 2048/4096 on all backends (tile fleets need more than sokol's 128 default).GeTilePlaneEncodinggainsRg8;.getex(GETX) format unchanged.
Fixed
- Cook gunzip path uses
gunzip -c(BSDzcatdemands.Zsuffixes on macOS).
Follow-ups filed: 🎯T168.4 (cook band-streaming — whole-image float loading currently peaks ~4× source bytes), 🎯T168.5 (pack size: per-tile mip redundancy, EacR11 SDF encoding).