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.37.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.37.0.tar.gz | 11.7 MB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| forge3d-1.37.0-cp310-abi3-win_amd64.whl | CPython 3.10 | abi3 | Windows x86-64 | Details |
| forge3d-1.37.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.37.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | CPython 3.10 | abi3 | Linux glibc 2.17+ ARM64 | Details |
| forge3d-1.37.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 11.0+ ARM64, macOS 10.12+ universal2 (ARM64, x86-64) | Details |
Total release size: 85.2 MB
Release files / forge3d-1.37.0.tar.gz
| Download URL | forge3d-1.37.0.tar.gz |
|---|---|
| Size | 11.7 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c3a235c2d2b06d243dcd50308fc30f7e193dd887226a11488b164f4e7c5012e9
|
|
BLAKE2b-256 checksum How to use checksums |
736a122cd5f0e0fce4c1d16b3d91ec7f7a8ff2a6510a3472e81ea882d076c3be
|
| 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.37.0-cp310-abi3-win_amd64.whl
| Download URL | forge3d-1.37.0-cp310-abi3-win_amd64.whl |
|---|---|
| Size | 15.3 MB |
| Tags | CPython 3.10 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
b0933d8327329dda533cb276e2616497b505e28906881059c43536ac24de8f6d
|
|
BLAKE2b-256 checksum How to use checksums |
f695528599fd6ab2e0130a3fc72aaeba4bc547b73f1f596fbbc596ee19b421b4
|
| 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.37.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | forge3d-1.37.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 16.0 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
5cebca94c22e4a5b7f1b11c1486730e0126254a0fdeaa75e60b2d09b48829f87
|
|
BLAKE2b-256 checksum How to use checksums |
21168000725a853361eb0e4fff444bcf9bbf1750b235ece640cc66a7f96a4d5e
|
| 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.37.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | forge3d-1.37.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 15.6 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
41f072ebdc8a6ee599b8c16d270f7029a80c02a4196e9798ec472f878e32132f
|
|
BLAKE2b-256 checksum How to use checksums |
b9d6aaff1d0de0b75957c849dfd4239de5079fcfd78328384d91a7a914592d62
|
| 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.37.0-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | forge3d-1.37.0-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 26.6 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 |
c3f877cf06416f21ab6c0035e2a32b77a699ff97c4f595bbc054a5f4c2e242c2
|
|
BLAKE2b-256 checksum How to use checksums |
65e1fe2eec58309d2d9828d24944843f6c836d67569dc71c7de7e35f384f6f6f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|