A planet in the browser
A Rust engine compiled to WebAssembly renders the globe with WebGPU. A small TypeScript layer manages controls, panels and data loading. WebGPU support is required.
THE PROJECT / 001
MarsSimulator is an independent effort to make Mars explorable by anyone with a modern browser. Real orbital images and elevation measurements form the foundation; more detailed observations can be added progressively as they are prepared.
An evolving visualisation, not a substitute for scientific analysis or a photograph of the surface.
01 / THE MISSION
You should be able to fly from a view of Mars as a planet down toward the landscape, without downloading a specialist application.
The ambition is a continuously improving, openly accessible window into the Martian surface. Rather than claiming every metre is known, the explorer can use the best prepared observation at each location, fall back to coarser measurements where necessary, and make the difference clear.
This is a visual exploration tool in development. Scientific accuracy matters, including being honest where source data ends and visual approximation begins.
02 / UNDER THE HOOD
Rendered on your device, with detailed map data arriving only when needed.
A Rust engine compiled to WebAssembly renders the globe with WebGPU. A small TypeScript layer manages controls, panels and data loading. WebGPU support is required.
Terrain is divided into progressively refined patches. The renderer chooses more detailed geometry near the camera and avoids drawing every part of the planet at full resolution.
Images and elevation tiles live as static files in object storage. The browser loads relevant regions on demand, using lower-detail data while higher-resolution data is missing or loading.
The project uses a Vite/TypeScript entrypoint (src/main.ts) and Rust/WASM engine (engine/src/lib.rs). Terrain LOD is a cube-sphere quadtree with geometric-error refinement, visibility culling, skirts and per-frame construction budgets (engine/src/terrain_lod.rs). Camera-relative coordinates reduce precision loss close to the ground.
Elevation samplers combine coarse global MOLA, higher-resolution regional or global MOLA, a streamed HRSC–MOLA blend where prepared, and the optional Jezero CTX stereo pilot. The Tianwen-1 colour pyramid is served in moving texture atlases. Manifest-driven loaders handle tile availability and fallback. This is a static-data client, not a real-time NASA feed.
Current limitations: there is no WebGL fallback; available resolution varies with geographic coverage and installed assets; some ground detail, surface materials, rocks and atmospheric effects are generated rather than observed.
03 / DATA & PROVENANCE
Sources have different coverage, pixel sizes and scientific meaning. Image sharpness is not the same thing as terrain accuracy.
A processed global colour orthomosaic provides the preferred basemap and streamed colour tiles. The distributed image is approximately 326 m/pixel at the equator; it is not a metres-scale view of the surface.
Global imagery, if assets availableLaser-altimeter-derived heights from the Planetary Data System's MOLA MEGDR underpin broad terrain. Prepared 4, 16 and 64 pixels/degree layers are sampled and interpolated, not measured at each rendered vertex.
Global base; detail depends on tilesA roughly 200 m global elevation product blends MOLA with stereo data from Mars Express HRSC. A progressive conversion pipeline produces tiles, which appear in the explorer only where the converted dataset has been published. USGS Astrogeology.
Progressively prepared coverageAn optional, geographically limited Jezero package uses a USGS/JPL Mars 2020 CTX stereo terrain product (~20 m samples) and matched panchromatic orthomosaic (~5 m pixels). Gaps in stereo coverage fall back to coarser height data. Sharp imagery does not imply matching rock-scale geometry.
Local pilot; optional assetsNASA/USGS-derived global albedo serves as a fallback. Viking MDIM 2.1 north and south polar mosaics supplement high latitudes; all imagery is rendered with simulation lighting and colour adjustments.
Fallback and polar coverageAt scales finer than the available observations, rock distributions, ground materials, small-scale relief, shading and atmospheric appearance may be algorithmic. Terrain may be interpolated between measured samples or blended across dataset boundaries. These are visual devices, not new measurements.
Synthetic — not surveyed
A note on scientific use: MOLA elevations are relative to the Martian areoid. The explorer uses a simplified reference-sphere geometry and optionally exaggerated relief. Neither colours nor simulated near-ground features should be treated as calibrated field observations.
04 / THE ROAD AHEAD
Direction, not a delivery schedule. Status reflects code and documented pipelines; deployment coverage is conditional on published assets.
05 / KEEPING IT ONLINE
The application is comparatively small; the planetary datasets are not.
The site is designed to separate browser code from static planetary assets. The current approach uses Cloudflare Pages for the client and Cloudflare R2 for published datasets. Larger source archives require offline downloading, reprojection, conversion, tiling, validation and upload before the browser can use them. The proposed 6–7 TB figure is a planning estimate, not a measured final tile package; for context, Caltech’s CTX V01 mosaic is about 5.6 TB compressed or 11.5 TB uncompressed.
Costs can include storage for published tiles, processing and temporary storage for conversions, requests to fetch individual objects, and transfer charges where the chosen provider or network path bills for bandwidth. Caching reduces repeated origin requests. Actual costs depend on the image pyramid, compression, audience and provider pricing.
Published provider rates and a storage scenario, not a claim about MarsSimulator's invoices. Amounts are labelled USD; no automatic conversion to AUD is assumed.
R2 Standard storage at USD $0.015 per GB-month, after its included allowance.
For the planned 6–7 TB footprint held for a full month. This excludes request charges, ingest and conversion compute, and any other services. Actual usage may differ.
| Component | Published rate or status | Classification |
|---|---|---|
| R2 Standard object storage | See storage scenario above | Scenario estimate, USD |
| R2 Class B reads | USD $0.36 / million after 10,000,000 included | Unit price; actual volume unknown |
| R2 Class A writes / lists | USD $4.50 / million after 1,000,000 included | Unit price; actual volume unknown |
| Cloudflare Pages static files | Static asset requests currently free under published pricing | Provider policy; other features may cost money |
| CTX conversion, processing and maintenance | Not yet costed | Unestimated, not zero |
| Other infrastructure / education deployments | Scoped with a partner if needed | Unestimated, not zero |
Provider rates checked . Cloudflare R2 pricing · Cloudflare Pages pricing. Cloudflare quotes these rates in USD; if verified AUD expenses are supplied later, their AUD currency label will be preserved rather than silently converted. Free tiers, rounding and regional tax treatment can change.
06 / WORK WITH US
Public access is intended to remain free, without a paid content tier. Support need not be financial: data expertise, infrastructure and opportunities to reach learners are just as valuable.
This is an invitation to discuss possible support and collaboration, not an active fundraising campaign. No payment mechanism is enabled by default.
Rendering, geospatial tiling, WebGPU, Rust/WASM, accessibility, testing and performance are all meaningful areas for contribution.
Discuss a collaboration ↓Help validate datasets, coordinate frames, uncertainty, scientific provenance and accurate explanations of what the imagery really shows.
Discuss a collaboration ↓Help shape guided journeys, accessible science interpretation, classroom resources and installations that introduce the geography of Mars.
Discuss a collaboration ↓Help host the observations with object storage, hosting credits, data delivery, compute and infrastructure advice. The 6–7 TB target is an ambition, not a dataset already hosted.
Discuss a collaboration ↓Possible support for storage, conversion and long-term operations, through owner-approved destinations when available.
Recognition and funding ↓Have a question, an idea or a potential research, education or infrastructure partnership? Get in touch by email.
If funding becomes appropriate, the owner may enable an approved GitHub Sponsors profile or another payment link. No funds are being collected through this page at present.
Payment links are not currently enabled.
Acknowledgments appear only with permission, and must accurately describe each organisation's role. Use of NASA, ESA, USGS or other public scientific data does not imply institutional sponsorship or endorsement. MarsSimulator is not presented as a registered charity, and contributions are not represented as tax-deductible.
For now, start with the experience.
Launch the explorer