{"id":13588417,"url":"https://github.com/StrandedKitty/streets-gl","last_synced_at":"2025-04-08T03:34:03.060Z","repository":{"id":47296657,"uuid":"295498364","full_name":"StrandedKitty/streets-gl","owner":"StrandedKitty","description":"🗺 OpenStreetMap 3D renderer powered by WebGL2","archived":false,"fork":false,"pushed_at":"2024-09-02T21:31:09.000Z","size":164248,"stargazers_count":853,"open_issues_count":100,"forks_count":70,"subscribers_count":20,"default_branch":"dev","last_synced_at":"2025-04-06T22:05:37.439Z","etag":null,"topics":["3d","data-visualization","map","mapping","maps","openstreetmap","rendering","webgl","webgl2"],"latest_commit_sha":null,"homepage":"http://streets.gl","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/StrandedKitty.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"StrandedKitty"}},"created_at":"2020-09-14T18:05:46.000Z","updated_at":"2025-04-01T07:09:57.000Z","dependencies_parsed_at":"2024-11-30T00:01:26.572Z","dependency_job_id":"dcd02c13-c046-4c5d-95f7-aab5ce7811e3","html_url":"https://github.com/StrandedKitty/streets-gl","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StrandedKitty%2Fstreets-gl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StrandedKitty%2Fstreets-gl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StrandedKitty%2Fstreets-gl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StrandedKitty%2Fstreets-gl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/StrandedKitty","download_url":"https://codeload.github.com/StrandedKitty/streets-gl/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247772937,"owners_count":20993627,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3d","data-visualization","map","mapping","maps","openstreetmap","rendering","webgl","webgl2"],"created_at":"2024-08-01T15:06:42.110Z","updated_at":"2025-04-08T03:34:03.048Z","avatar_url":"https://github.com/StrandedKitty.png","language":"TypeScript","readme":"![cityscape banner](https://user-images.githubusercontent.com/48140945/235281559-9a78fdbb-7b22-4c2d-8d74-dddaf5eaece6.png)\n\n\u003cdiv align=\"center\"\u003e\n    \u003ch1\u003eStreets GL\u003c/h1\u003e\n    \u003c!--\u003ca href=\"https://trello.com/b/WJ1D07lT\"\u003e\u003cimg src=\"https://img.shields.io/static/v1?label=\u0026message=Trello%20board\u0026logo=trello\u0026logoColor=ffffff\u0026color=0052CC\" alt=\"Trello board\" /\u003e\u003c/a\u003e--\u003e\n    \u003ca href=\"https://discord.gg/bewggJ3eMC\"\u003e\u003cimg src=\"https://img.shields.io/discord/1098082266451820544.svg?label=\u0026logo=discord\u0026logoColor=ffffff\u0026color=6A7EC2\" alt=\"Discord\" /\u003e\u003c/a\u003e\n    \u003cimg src=\"https://img.shields.io/github/license/strandedkitty/streets-gl?color=3975cf\" alt=\"License\" /\u003e\n\u003c/div\u003e\n\u003cbr\u003e\n\n**Streets GL** is a real-time 3D map renderer built for visualizing [OpenStreetMap](https://www.openstreetmap.org/) data with a heavy focus on eye-candy features.\n\nThe whole project is written in Typescript. For rendering it uses a custom low-level library that wraps WebGL2 API, and for managing the rendering pipeline it uses a simple render graph (or frame graph) implementation. Geometry generation is done on the fly; supported map features include but are not limited to complex building shapes (according to the de-facto standard [Simple 3D Buildings](https://wiki.openstreetmap.org/wiki/Simple_3D_Buildings) schema), roads and paths, trees, etc.\n\nThe goals of this project include providing a way to explore the feature-rich OSM database in 3D, promoting open data, and offering a way for the mapping community to easily validate the map by visual means.\n\n\u003e **Warning**: This project is still in early development, expect bugs and missing features.\n\n\u003cdiv align=\"center\"\u003e\n\u003cb\u003e\u003ca href=\"https://streets.gl/\"\u003eVisit streets.gl\u003c/a\u003e\u003c/b\u003e\n\u003c/div\u003e\n\n## ⭐ Features\n\n- Support for the most common OpenStreetMap features\n- Configurable time of day\n- Global map search powered by Nominatim\n- Real-time air traffic\n- Terrain with LODs\n- Deferred shading with PBR\n- Rich postprocessing: TAA, SSAO, depth of field, screen-space reflections, bloom\n- Realistic atmosphere and aerial perspective rendering\n\n## 🖼️ Screenshots\n\n\u003cimg src=\"https://user-images.githubusercontent.com/48140945/235284116-a1730bb2-5467-486f-9aca-e7953963fe94.png\" width=\"30%\"\u003e\u003c/img\u003e \u003cimg src=\"https://user-images.githubusercontent.com/48140945/235284103-0f714011-643d-4d73-a4fd-6d6881acd00b.png\" width=\"30%\"\u003e\u003c/img\u003e \u003cimg src=\"https://user-images.githubusercontent.com/48140945/235284113-48afe76d-1ac9-4f00-b5cc-b4fb64587125.png\" width=\"30%\"\u003e\u003c/img\u003e \u003cimg src=\"https://user-images.githubusercontent.com/48140945/235284096-b22d31cf-47c5-4237-9637-fc3de3628778.png\" width=\"30%\"\u003e\u003c/img\u003e \u003cimg src=\"https://user-images.githubusercontent.com/48140945/235284120-3065b7fd-7706-4c4a-83af-a4cdb1ed7f56.png\" width=\"30%\"\u003e\u003c/img\u003e \u003cimg src=\"https://user-images.githubusercontent.com/48140945/235284106-b9c0b90f-002b-47ac-a7f0-e1bd3056e2b6.png\" width=\"30%\"\u003e\u003c/img\u003e \u003cimg src=\"https://user-images.githubusercontent.com/48140945/235664789-a7c19ec2-1dc3-4c03-ba4a-ee18c1cfac0d.png\" width=\"30%\"\u003e\u003c/img\u003e \u003cimg src=\"https://user-images.githubusercontent.com/48140945/235664814-d2be2ac0-bfa3-4407-a3d0-bd67f10e3fd9.png\" width=\"30%\"\u003e\u003c/img\u003e \u003cimg src=\"https://user-images.githubusercontent.com/48140945/235664795-219e41c8-b03f-4f4b-9972-6ce476b71e06.png\" width=\"30%\"\u003e\u003c/img\u003e\n\n## 💻 Minimum requirements\n\nTo run this application, you need a machine that supports WebGL2. It's recommended to use an up-to-date version of Google Chrome. Additionally, for a smooth experience, you will likely need a modern discrete GPU.\n\n## 🗂️ Data sources\n\nStreets GL uses two sources of data to render the map:\n\n- Vector tiles generated from OpenStreetMap data using [modified Planetiler](https://github.com/strandedkitty/planetiler).\n- [Terrain 3D](https://www.arcgis.com/home/item.html?id=7029fb60158543ad845c7e1527af11e4) tileset by Esri to visualize terrain elevation.\n\nVector tiles are generated from the latest OSM data pulled from [Planet.osm](https://planet.openstreetmap.org/) or its mirrors. Water bodies formed by coastlines are filled using Shapefiles from [osmdata.openstreetmap.de](https://osmdata.openstreetmap.de/data/water-polygons.html). Currently, there's no automated pipeline to update the vector tiles, so they are updated manually 2-4 times a month.\n\nMap tiles are served from a small Node.js server located at [tiles.streets.gl](https://tiles.streets.gl/).\n\n## 📦 Modules\n\nThis repository includes several separable modules without any external dependencies that can be used in other projects with minimal modifications.\n\n- [renderer](src/lib/renderer) — a simple WebGL2 renderer built from scratch (WebGPU support is also planned but hasn't been implemented yet).\n- [render-graph](src/lib/render-graph) — a minimal render graph (a.k.a. frame graph) implementation for easier rendering pipeline management. It automatically reorders render passes each frame, taking into account their dependencies, and culls out render passes that don't contribute to the final image. It also does basic memory management for framebuffers.\n- [math](src/lib/math) — math utilities.\n- [core](src/lib/core) — includes scene graph and some basic classes that describe a 3D scene. Depends on `math`.\n- [bmfont](src/lib/bmfont) — a bitmap text geometry generator optimized for large bitmaps and real-time use.\n\n## 💡 Contributing\n\nPlease report any bugs you find by opening a new issue (but first make sure it hasn't been reported yet). Suggestions and pull requests are also welcome.\n\nIf you want to make a significant change, please open an issue first to discuss it.\n\nMore information about contributing can be found in [CONTRIBUTING.md](CONTRIBUTING.md).\n\n### Development\n\n1. Clone this repository\n2. Install dependencies with `npm i`\n3. Run `npm run dev` to start a local development server\n\nKnown to work with Node.js 14.19.1.\n\n## ⭐ Sponsors\n\n- **[ONEGEO](https://onegeo.co/)**\n","funding_links":["https://github.com/sponsors/StrandedKitty"],"categories":["TypeScript","Maps"],"sub_categories":["Web Maps"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FStrandedKitty%2Fstreets-gl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FStrandedKitty%2Fstreets-gl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FStrandedKitty%2Fstreets-gl/lists"}