1 个不稳定版本
0.1.0 |
|
---|---|
0.0.3 | 2023 年 2 月 18 日 |
#21 在 #web-gpu
每月 70 次下载
30KB
117 行
WebGL 示例 | 书籍 | API | 在 Matrix Space 中聊天
项目状态
此项目处于原型验证状态。除了文本渲染外,原型验证已完成。Rust 生态系统非常适合此项目。
将来,此项目可能会被 Maplibre 采用并支持,以实现下一代映射解决方案。
📰 我们最近发布了一篇关于 maplibre-rs 的论文,标题为 maplibre-rs: towards portable map renderers!
描述
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 的渲染器分叉到这个项目中。
依赖项
~22–62MB
~1M SLoC