WorldWind Kotlin v2.0.4
Release 2.0.4
43 commits since 2.0.3.
3D Tiles
- Render KTX2 (
KHR_texture_basisu) textures instead of dropping them. - Enable glb-wrapped Gaussian splats out of the box.
- Throttle Gaussian-splat parses inside the layer, and move the Gaussian view-Z sort to
Dispatchers.Defaultto keep it off the render thread. - Depth-pick now lands on the Gaussian-splat surface.
- Expose the root bounding-volume sector for fly-to.
- Priority-ordered fetch queue with off-permit cache writes.
- Evict cold
.json-grafted subtrees to bound theTile3dnode count. - Combine vbo + ebo + batchIds into one
BufferObjectper primitive; cache hot-path render-resource-cache refs inMeshSubmesh; inline traversal distance onTile3dand drop thesortDistancesHashMap. - GL-thread feedback for the adaptive install throttle.
- Stencil-mask terrain inside mesh / point-cloud coverage so terrain no longer pokes through.
- Mesh tiles cast into the sightline moments cube, and always pick the sightline-spliced program variant.
- Reset the altitude-bake cache when a tileset drops on auth-expired; create the blob-store table on NGA's handle and fix the per-class DAO cache; report cached blob-store size from
sizeBytesOf.
WFS
- Viewport auto-refresh with a GeoPackage cache (download-once & tiled).
- Retry transient fetch failures with linear backoff.
MVT
- Shared
TiledVectorLayerbase, earcut polygon fills, progressive cut, and configurable background + label density.
GeoPackage
- Read-only handle pool for concurrent feature reads.
- Add
deleteFeatureTableand narrow the features bbox to the actual extent.
Sightline
- Bind benign textures on the no-sightline receiver path.
- Clamp the moments texture wrap to edge.
- Identity-keyed receiver cache; drop
frameStamp.
Rendering & Performance
- WebGL: per-target buffers for 3D Tiles and DPI-correct curved labels.
- Cache: stale-while-revalidate on the cached-tile fast path, with discard-on-cancel.
- Elevation: keep cache decode and miss-retry off the render thread.
RenderResourceCache: per-frame eviction time budget, and the Web path is now implemented.BasicTessellator: stableBufferObjectkeys with a version bump on re-prepare.- Shapes: one-primitive outlines and exact (non-MSAA) surface-shape picking.
- Placemark/Label: claim near-plane depth and discard transparent fragments; adaptive Label depth offset.
Texture: caller opt-out for mipmap generation.Drawables: reference-only resets.- OSM Buildings: persist render config in the cache and filter redundant outlines.
Fixes & Internals
- WMS capabilities: treat Layer attributes (
queryable,cascaded,opaque,noSubsets,fixedWidth,fixedHeight) as unqualified per the XML standard, fixing parsing under xmlutil 1.0.0. HttpClient: installsocketTimeoutMillison all platforms.- Tutorials (JVM): export
sun.awtto silence JOGLAppContextInfospam. - Fix unresolvable Dokka KDoc links.
Build & Dependencies
compileSdk/targetSdkraised to 37 (required by lifecycle-compose 2.11.0).- lifecycle-compose
2.10.0→2.11.0 - ktor
3.5.0→3.5.1 - xmlutil
0.91.3→1.0.0 - mil-sym (android
2.11.0→2.11.1, java2.8.0→2.8.1, ts2.9.0→2.9.1) - javafx
21.0.5→26.0.1 - webp-imageio
0.10.2→0.11.0