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.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.40.0.tar.gz | 12.1 MB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| forge3d-1.40.0-cp310-abi3-win_amd64.whl | CPython 3.10 | abi3 | Windows x86-64 | Details |
| forge3d-1.40.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.40.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | CPython 3.10 | abi3 | Linux glibc 2.17+ ARM64 | Details |
| forge3d-1.40.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.9 MB
Release files / forge3d-1.40.0.tar.gz
| Download URL | forge3d-1.40.0.tar.gz |
|---|---|
| Size | 12.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a9671b11549a0634f4089b29357714004562ec23a5dd2d29234e744090d1a284
|
|
BLAKE2b-256 checksum How to use checksums |
a73a572be9060b87398f6088ed42e13c43d7a9aade3f1fce7b28232fa6eb45ee
|
| 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.0-cp310-abi3-win_amd64.whl
| Download URL | forge3d-1.40.0-cp310-abi3-win_amd64.whl |
|---|---|
| Size | 15.8 MB |
| Tags | CPython 3.10 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
a2201013ff3affb3e884470e0c6b4b6a8e5bbef374eb03df056dbe814e743715
|
|
BLAKE2b-256 checksum How to use checksums |
b23cb33484b57658f75ea28df3ad8e42696eabdd0c134500cb391bb149501a64
|
| 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.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | forge3d-1.40.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 16.4 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
686aa67a9f2282ad6c474c91f7cc8b454503118b9055318e953f41f604e6c33b
|
|
BLAKE2b-256 checksum How to use checksums |
776516fdad53b5499db4c86c2177c707d45eba3b61afcac26ec9fa1f0fe205de
|
| 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.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | forge3d-1.40.0-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 |
bceb8da39003ad1ead0743a0788366e8d1acafc345dfa0e074dce9952425153a
|
|
BLAKE2b-256 checksum How to use checksums |
472d931bd2d33e2ea231e9790632522d71c214c88fbd44fd159b3003e0ddadee
|
| 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.0-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | forge3d-1.40.0-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 |
905e0f835a941e30d3c5b9b535415e686ce258706b37bba5ef61caac22f05c92
|
|
BLAKE2b-256 checksum How to use checksums |
6d8676b7817e9283c90ac8e6c8ce619c4885b10d4e7cf11779cd6c93064316eb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|