Skip to content

v0.84.0

Choose a tag to compare

@marcelocantos marcelocantos released this 26 Jul 14:21
· 57 commits to master since this release
272dc06

🎯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

  • .getp tile-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-texpack cook (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::TilePyramid loader (TilePack.h): fully-resident coarse-first loading — background reader thread, budgeted render-thread upload pump (tilepack.uploads_per_frame tweak), ancestor-fallback resolve(), 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 MTLGPUFamilyApple7 gate) — M-series desktops get dev parity with mobile compressed textures.
  • sg_setup image/view pools raised to 2048/4096 on all backends (tile fleets need more than sokol's 128 default).
  • GeTilePlaneEncoding gains Rg8; .getex (GETX) format unchanged.

Fixed

  • Cook gunzip path uses gunzip -c (BSD zcat demands .Z suffixes 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).