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.38.0
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.38.0.tar.gz | 12.0 MB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| forge3d-1.38.0-cp310-abi3-win_amd64.whl | CPython 3.10 | abi3 | Windows x86-64 | Details |
| forge3d-1.38.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.10 | abi3 | Linux glibc 2.17+ x86-64 | Details |
| forge3d-1.38.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | CPython 3.10 | abi3 | Linux glibc 2.17+ ARM64 | Details |
| forge3d-1.38.0-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl | CPython 3.10 | abi3 | macOS 10.12+ x86-64, macOS 10.12+ universal2 (ARM64, x86-64), macOS 11.0+ ARM64 | Details |
Total release size: 87.4 MB
Release files / forge3d-1.38.0.tar.gz
| Download URL | forge3d-1.38.0.tar.gz |
|---|---|
| Size | 12.0 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
12db2afa9814b2f13c1ebd77847206588b72dcbcb55f9531a70d7380632d9ea3
|
|
BLAKE2b-256 checksum How to use checksums |
7883adc3f4d8174522217fbacdbac0fa329d2a99e4f177a4c89d2c1a64b7c70e
|
| 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.38.0-cp310-abi3-win_amd64.whl
| Download URL | forge3d-1.38.0-cp310-abi3-win_amd64.whl |
|---|---|
| Size | 15.7 MB |
| Tags | CPython 3.10 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
df242d187eb059da1aa841d5090dbdde495aec2dbadfdacac1e8265321e946d3
|
|
BLAKE2b-256 checksum How to use checksums |
2c235ea3cb50975c90e1a7e1b285b51082b731053bd0a29c623362555cec8e2f
|
| 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.38.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | forge3d-1.38.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 16.3 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
87cc3194a2f4000fd0eaa2602815788cf00ada7a8dce78fe90491cba0a1ebd02
|
|
BLAKE2b-256 checksum How to use checksums |
3fc00e0c19e98f91033e142e4a80a4294d28b57f8c92ea5af9e991e5c3cd5a84
|
| 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.38.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | forge3d-1.38.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 16.0 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
601f45b42d42516323271eeba51405dd2469522677635b9ea1ef2805a66c9112
|
|
BLAKE2b-256 checksum How to use checksums |
e592ad4cc7c8cc1d3fa8149c3967ca6f6912f50b729799d9a0cb0059c50ab867
|
| 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.38.0-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | forge3d-1.38.0-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 27.3 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 |
e32d092d841720fc8a47035224561b56d1845b4dfb4d5578fe89891b7e65e90b
|
|
BLAKE2b-256 checksum How to use checksums |
ca1f9049213fd14a1a581e93a549859650273d8756b5214f69b516f7450d6d5a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|