1 个不稳定版本
0.0.3 | 2023 年 2 月 18 日 |
---|---|
0.0.2 |
|
0.0.1 |
|
#300 在 图形 API 中
用于 2 存储库
475KB
12K SLoC
WebGL 演示 | 书籍 | API | Matrix 空间聊天
项目状态
该项目处于概念验证状态。概念验证已完成,除了文本渲染。Rust 生态系统非常适合这个项目。
将来,该项目可能被 Maplibre 采用和支持,以实现下一代映射解决方案。
📰 我们最近发布了一篇关于 maplibre-rs 的论文,名为 maplibre-rs:可移植地图渲染器的方向!
描述
maplibre-rs 是一个可移植且性能良好的矢量地图渲染器。我们的目标是支持 Web、移动和桌面应用程序。这是通过新颖的 WebGPU 规范实现的。已有许多本地实现正在实现这个规范。在 Web 上,它由 Firefox、Chrome 和 Safari 实现。还有独立实现,直接使用 Vulkan、OpenGL 或 Metal 作为后端。这些后端允许 maplibre-rs 在移动和桌面应用程序上运行。
Rust 在所有平台上作为通用语言使用。这是由 WebAssembly 实现的,它允许我们使用 Rust 进行 Web 开发。
maplibre-rs 的目标是渲染地图以可视化数据。目前 maplibre-rs 的目标不是取代现有的矢量地图渲染器,如 Google Maps、Apple Maps 或 MapLibre。当前的实现是所使用技术堆栈的概念验证。目前尚不清楚是否可以使用当前堆栈实现渲染矢量图形所需的高性能。
演讲:矢量世界
(外部链接)
演示
- WebGL
- 具有多线程的 WebGL - 目前不支持在 Safari 上运行
- WebGPU - 仅支持 Firefox 和 Chrome 的开发版本
当前功能
- 支持在 Linux、Android、iOS、macOS、Firefox 和 Chrome 上运行
- 渲染矢量瓦片数据集
- 由 winit 驱动的简单导航
- 所有平台都支持多线程
- 查询要素数据
缺失的功能
- 渲染文本
- 按要素渲染
- 渲染
- 标签
- 符号
- 栅格数据
- 3D 地形
- 阴影(DEM)
- 碰撞检测
- 支持
- GeoJSON
- API 支持
- TypeScript
- Swift
- Java/Kotlin
构建和运行
克隆项目
git clone https://github.com/maplibre/maplibre-rs.git
在桌面环境中构建和运行它
cargo run -p maplibre-demo
有关在不同平台上运行演示的更多信息,请参阅此处。
Rust 设置
安装 rustup,因为这是设置 Rust 工具链的推荐方式。
构建此项目时将自动下载工具链。有关工具链的详细信息,请参阅./rust-toolchain.toml。
API 文档
此功能生成此包的文档并打开浏览器。这还包括每个依赖项的文档。
cargo doc --open
您还可以在此处查看最新的文档。
书籍
maplibre-rs 的书籍从用户和开发人员的角度提供了对项目的概述。
RFC
我们建立了一个 RFC 流程,必须用于描述 maplibre-rs 的重大更改。当前 RFC 可在书中浏览。
引用
如果您希望在科学出版物中引用此项目,请使用以下格式
@article{maplibre_rs,
title = {maplibre-rs: toward portable map renderers},
author = {Ammann, M. and Drabble, A. and Ingensand, J. and Chapuis, B.},
year = 2022,
journal = {The International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences},
volume = {XLVIII-4/W1-2022},
pages = {35--42},
doi = {10.5194/isprs-archives-XLVIII-4-W1-2022-35-2022},
url = {https://www.int-arch-photogramm-remote-sens-spatial-inf-sci.net/XLVIII-4-W1-2022/35/2022/}
}
致谢
maplibre-rs 的渲染器在很大程度上基于 bevy 的渲染器。为了有一个坚实和通用的基础,将 Bevy 的渲染器分叉到这个项目中。
依赖项
~18–60MB
~1M SLoC