WorldWind Kotlin v1.14.0
WorldWindKotlin 1.14.0 — Release Notes
Highlights
- iOS support — New Kotlin/Native target (
iosX64,iosArm64,iosSimulatorArm64) across:worldwind,:worldwind-compose,:worldwind-compose-samples, and:worldwind-tutorials. SwiftUI tutorial shell included. - Toolchain bump — Migrated to AGP 9 / Gradle 9 / Kotlin 2.3.21.
- Unified Compose API — Single
@Composable WorldWindowthat works across Android, JVM (Desktop), JS, and iOS. - 3D Ellipsoid shape — New tri-axial ellipsoid renderable with rotation and lighting.
New Features
- Compose:
@Composable WorldWindowunified across Android, JVM, and JS (b29cdc7) - Shapes: 3D rotation / tri-axial Ellipsoid with lighting (caeaa3f)
- Sightline: embedded-receiver path for in-shader self-shadow (f584eaf)
- Navigation: fling + zoom-anchor gestures for 2D projections (2bd48a0)
- GeoTiff: unified reader/writer in
commonMain, dropping the JVM-onlymil.nga.tiffdependency (2815097)
Fixes
- Sightline/Shadow: restore caller's framebuffer instead of unbinding to NONE (12ab237)
- DrawableSightline: directional regression — re-run depth per face (faf7366)
- Path: emit second trailing miter dummy so WebGL accepts surface lines (0a95ae0)
- Shape: invalidate geometry cache on vertical-exaggeration change (938f30e)
- Shapes: keep
BoundingDataacrossreset()to stop fall-through blinking (961a40d) - Placemark/Label: recompute
placePointeach frame (drop stale cartesian cache) (b9c8fd1) - SelectDragDetector: placemark select/drag on macOS Safari (6aa7cb5)
- SelectDragDetector: route depth-tested point into pick/context/double-tap (4117c83)
- PickedObject: opt out of depth unprojection for surface shapes (696f18d)
- WorldWind: 2D pan stuck when subclasses override
gestureDidBegin(7c7426d) - WorldWind: skip
COLLISION_THRESHOLDon globe-state reclamp (8b5c7ea) - RequestRedraw: don't block sequential calls from background threads (050602d)
- Tutorials: request redraw after async COLLADA/glTF parse completes (4ed2c48)
Rendering / Performance
- ViewshedSightline: multi-WorldWindow correctness + RRC-managed output texture (db3f54f)
- Programs: per-WorldWindow shader-program storage (ccff546)
- Programs: zero-overhead no-shadow variants for shadow receivers (2c2f4c8)
- Shadows: per-platform MSM moment bias (66dcf51)
- Atmosphere: drop shadow modulation from
GroundProgramSECONDARY pass (ea3675d) - Shadow: route surface-shape rasterize-pass disable through helper (95f32a2)
- DrawableSightline: dispatch
SightlineReceiverin occlusion passes (7be1f70) - RenderContext: reified
getShaderProgramoverload; dropKEYcompanions (9bcb7c6)
Build / Tooling
- JVM/macOS: tutorials run on Apple Silicon JBR (eaa1ef3)
- Build: strip moko-resources iOS pack on non-Mac hosts (Windows/Linux CI) (79abeec)
- JVM: bump vlcj to 4.12.1 + assorted dependency bumps (3e7e111)
- GeoTiffReader: drop ignored-key/tag log spam to DEBUG (2c87ad9)
- Skip signing for local MavenLocal publishes (56c2033)
- Examples: drop day-night terminator from basic Android activities (e2d9a0e)
Full Changelog: v1.13.1...v1.14.0 (38 commits)