Path-traced terrain and cartography for Python.
Rust + WebGPU underneath. Real elevation data in, print-resolution maps out.
Mount Shasta, path-traced with global illumination and terrain shadows.
Drag to orbit it live › · USGS 3DEP elevation · 23 cloud-free Sentinel-2 composites
Install
pip install forge3d
Optional extras
pip install "forge3d[jupyter]" # notebook widget support
pip install "forge3d[datasets]" # on-demand sample datasets
pip install "forge3d[all]" # everything
Sixty seconds to a render
import forge3d as f3d
dem_path = f3d.fetch_dem("rainier")
with f3d.open_viewer_async(terrain_path=dem_path, width=1440, height=900) as viewer:
viewer.set_z_scale(0.1)
viewer.set_orbit_camera(phi_deg=28, theta_deg=49, radius=5400, fov_deg=42)
viewer.set_sun(azimuth_deg=302, elevation_deg=24)
viewer.snapshot("rainier.png", width=1920, height=1080)
fetch_dem pulls the elevation model, the viewer opens a real window you can orbit,
and snapshot writes the frame at whatever resolution you ask for.
Made with forge3d
Every map below is rendered end to end by forge3d — titles, legends and scale bars included. Nothing here was hand-edited or composited in another tool.
|
Lyon, LOD2 buildings CityGML extrusion over RGE ALTI terrain |
Egypt, population GHSL R2023A density over shaded relief |
France, climate TerraClimate temperature × precipitation |
|
Iberia, land cover 2024 — Sentinel-2 at 10 m classified over terrain, legend composed in-engine |
Germany, hydrology — HydroSHEDS rivers and lakes over a hypsometric DEM |
Türkiye, population density — a million WorldPop 2020 cells extruded on a log scale, labelled and lit in a single pass
|
|
And it moves. Volumetric smoke driven by HRRR forecast fields, advected across California through the summer 2025 fire season and rendered frame by frame — same scene graph as the stills, one camera, no compositing. Scenes are driven from Python end to end, so a time axis is just another loop:
fetch the fields, step the clock, call |
The renders above are downsampled for this page. Full-resolution masters — up to 7200×7200 — are on the gallery.
What forge3d covers
| Terrain | Interactive viewing via open_viewer_async() and ViewerHandle; snapshots from GeoTIFF or numpy DEMs; clipmaps for large regions |
| Rendering | Path tracing, PBR materials, subsurface scattering, water and reflections, cloud and contact shadows, AOV and EXR output |
| Data | COG streaming, CRS helpers, LAZ/COPC/EPT point clouds, 3D Tiles, GeoJSON, CityJSON, on-demand sample datasets |
| Cartography | Raster and vector overlays, labels with halo and occlusion, graticules, Legend, ScaleBar, NorthArrow, MapPlate |
| Offscreen | Scene, Session, TerrainRenderer and TerrainRenderParams for headless and batch work |
| Output | PNG and PNG16, SVG and PDF vector export, scene bundles, notebook widgets |
MapPlate composition, vector export and the building import pipelines are Pro
features; set a key with forge3d.set_license_key(...) to unlock them.
Documentation
- Quickstart — install, first viewer session, first overlay, first notebook widget
- Feature Map — repo-wide overview of the supported workflows
- Tutorials — guided GIS and Python tracks
- Gallery — finished recipes at full resolution
- API Reference — the full public Python surface
License
The open-source core is released under Apache-2.0 OR MIT. Pro-gated features require a commercial license key.
Metadata
Release files for forge3d 1.40.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| forge3d-1.40.1.tar.gz | 12.1 MB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| forge3d-1.40.1-cp310-abi3-win_amd64.whl | CPython 3.10 | abi3 | Windows x86-64 | Details |
| forge3d-1.40.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.10 | abi3 | Linux glibc 2.17+ x86-64 | Details |
| forge3d-1.40.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | CPython 3.10 | abi3 | Linux glibc 2.17+ ARM64 | Details |
| forge3d-1.40.1-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl | CPython 3.10 | abi3 | macOS 11.0+ ARM64, macOS 10.12+ x86-64, macOS 10.12+ universal2 (ARM64, x86-64) | Details |
Total release size: 88.1 MB
Release files / forge3d-1.40.1.tar.gz
| Download URL | forge3d-1.40.1.tar.gz |
|---|---|
| Size | 12.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
54a299fabaf4ee44fc57611184b989252cb69680f25ff9e1e3485d21eb4b20cc
|
|
BLAKE2b-256 checksum How to use checksums |
48ad7bb8719f3a51fdc3a2abe148fb7bfc6e5fb9ad2a385d16a73c9c9b6c72de
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / forge3d-1.40.1-cp310-abi3-win_amd64.whl
| Download URL | forge3d-1.40.1-cp310-abi3-win_amd64.whl |
|---|---|
| Size | 15.8 MB |
| Tags | CPython 3.10 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
e742fe77c25c1e6a037de29d73c81dd33ad4ed94be2cb6d54d95bb01d11f9bc0
|
|
BLAKE2b-256 checksum How to use checksums |
4c0c82daa1d1ba1b154484859cdda7697ceb71a012c4519ba96eaa322c1e1932
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / forge3d-1.40.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | forge3d-1.40.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 16.5 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
135c39211223138ed47b26cbe659cd44db36b586a098dfec029040b307b1732f
|
|
BLAKE2b-256 checksum How to use checksums |
66c89ea824c8593f1b39b06e8f0e181112e3382bf7b6de9f5171d1ff46b873aa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / forge3d-1.40.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | forge3d-1.40.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 16.1 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
1dd9227f5b88784995c603c5ca7333de46d459608bbfe9b4a7d43e97f727ff2c
|
|
BLAKE2b-256 checksum How to use checksums |
b509d6ed9329099b542f624807d375456d0fbe5578fd67055caf63956d30afb0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / forge3d-1.40.1-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | forge3d-1.40.1-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 27.5 MB |
| Tags | CPython 3.10 abi3 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
61deed28f661f3fe103bcdf1af3f6f3b99454fb44072ffd5bc18dc501bd12454
|
|
BLAKE2b-256 checksum How to use checksums |
ae711b3ca4e08fa880903725d88031beb78fc54f8d9fc69448cf5b9cc7996d2f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|