diff --git a/README.md b/README.md index 3a64ee98..1abb89a6 100644 --- a/README.md +++ b/README.md @@ -130,3 +130,8 @@ cargo doc --open ``` You can also view the up-to-date documentation [here](https://maplibre.org/maplibre-rs/docs/api/maplibre/). + +## Acknowledgements + +The renderer of maplibre-rs is heavily based on the renderer of [bevy](https://bevyengine.org/). Bevy's renderer was +forked into this project in order to have a solid and generic base. diff --git a/docs/.gitignore b/docs/.gitignore index 7585238e..712ac012 100644 --- a/docs/.gitignore +++ b/docs/.gitignore @@ -1 +1,2 @@ book +*.bkp \ No newline at end of file diff --git a/docs/src/SUMMARY.md b/docs/src/SUMMARY.md index 4d3be428..cbc6c259 100644 --- a/docs/src/SUMMARY.md +++ b/docs/src/SUMMARY.md @@ -9,7 +9,8 @@ - [Development Guide](./development-guide/index.md) - - [Building](./development-guide/building.md) + - [How to Run Demos](./development-guide/how-to-run.md) + - [Building Libraries](./development-guide/building-libraries.md) - [Debugging](./development-guide/debugging.md) diff --git a/docs/src/development-documents/architecture.md b/docs/src/development-documents/architecture.md index 74749710..8f67e2ff 100644 --- a/docs/src/development-documents/architecture.md +++ b/docs/src/development-documents/architecture.md @@ -8,15 +8,11 @@ The big picture of wgpu is as follows: A simplified version is shown below: -![](./figures/gpu-stack.drawio.svg) +![](./figures/render-stack.drawio.svg) Notes: * wgpu is able to create an interface through which we can reach any device with a GPU. -## OS Architecture - -![](./figures/os-stack.drawio.svg) - Notes: * The ability to use shared memory or the atomic instruction set of WASM comes by enabling compilation features. * `threads` support here does not introduce threads like we know them from Linux. It introduces diff --git a/docs/src/development-documents/design.md b/docs/src/development-documents/design.md index f0324aaf..ac1cb396 100644 --- a/docs/src/development-documents/design.md +++ b/docs/src/development-documents/design.md @@ -1,16 +1,28 @@ # Design - - +## Domain Model - +
+ +
+ +## Data Model + +
+ +
+ +## Crate and Project Structure + +
+ +
\ No newline at end of file + diff --git a/docs/src/development-documents/figures/crate-and-projects-structure.drawio.svg b/docs/src/development-documents/figures/crate-and-projects-structure.drawio.svg new file mode 100644 index 00000000..b59b3a25 --- /dev/null +++ b/docs/src/development-documents/figures/crate-and-projects-structure.drawio.svg @@ -0,0 +1,4 @@ + + + +
maplibre-headless
(bin)
maplibre-headless...
maplibre-winit
(lib)
maplibre-winit...
maplibre
maplibre
maplibre-renderer-canvas
maplibre-renderer-canvas
maplibre-renderer-wgpu
maplibre-renderer-wgpu
Gradle Project
Gradle Project
XCode Project
XCode Project
NPM Project
NPM Project
maplibre-web
(lib)
maplibre-web...
maplibre-apple
(lib)
maplibre-apple...
maplibre-android
(lib)
maplibre-android...
maplibre-demo
(bin)
maplibre-demo...
Rust
Rust
Android
Android
Apple
Apple
Web
Web
Text is not SVG - cannot display
\ No newline at end of file diff --git a/docs/src/development-documents/figures/data-model.drawio.svg b/docs/src/development-documents/figures/data-model.drawio.svg new file mode 100644 index 00000000..30692f7b --- /dev/null +++ b/docs/src/development-documents/figures/data-model.drawio.svg @@ -0,0 +1,4 @@ + + + +MapRenderStateSchedulertrait ScheduleMethodStyleStyleLayerSourcetrait HTTPClientReqwestHttpClientWHATWGFetchHttpClientBufferPoolTileCacheGeometryIndexIndexedGeometrygeometries: Vec<Geometry>propertiesTesselatedTilelayers: Vec<PreparedLayer>TileRequestStatewgpu::Devicewgpu::Queuewgpu::InstanceFPSMeterTileViewPatternCameraPerspectiveTileInViewRingIndexVecDeque<IndexEntry>
...
...
TesselatedMessageTesselatedMessage::Tilecoordsrequest_idTesselatedMessage::LayercoordsLayer::AvailableLayer::Unavailablelayer_namePreparedLayervertex/indices bufferfeature_indicesnameversionextentViewRegionMapStatezoom: ZoomTileCoordsWorldTileCoordsInnerCoordsWorldCoords
Creates
Creates
ThreadBus/ThreadLocalStatetile_request_state: Arc<Mutex<TileRequestState>>tessellate_result_sender: Sender<Message>geometry_index: Arc<Mutex<GeometryIndex>>MessageQueryResultMessagefeatures1PreparedFeatureidgeometryproperties
Use
Use
Use
Use
PolygonLineSymbolTexLabel
features
features
Can we await Messages via Rust async?
Can we await Messages via...
TileCache is not shared over threads.
TileCache is not shared o...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/docs/src/development-documents/figures/domain-model.drawio.svg b/docs/src/development-documents/figures/domain-model.drawio.svg index 6d4f4169..b2b516ba 100644 --- a/docs/src/development-documents/figures/domain-model.drawio.svg +++ b/docs/src/development-documents/figures/domain-model.drawio.svg @@ -1,4 +1,4 @@ -MapRenderStateSchedulerScheduleMethodStyleStyleLayerSourceSourceClientReqwestHttpClientWHATWGFetchHttpClientBufferPoolTileCacheGeometryIndexIndexedGeometrygeometries: Vec<Geometry>propertiesTesselatedTileTileRequestStatewgpu::Devicewgpu::Queuewgpu::InstanceFPSMeterTileViewPatternCameraPerspectiveTileInViewRingIndexVecDeque<IndexEntry>
...
...
1TesselatedMessageTesselatedMessage::Tilecoordsrequest_idTesselatedMessage::LayercoordsLayer::Availablevertex/indices bufferfeature_indicesLayer::Unavailablelayer_nameLayernameversionfeaturesextentViewRegionMapStatezoom: ZoomTileCoordsWorldTileCoordsInnerCoordsWorldCoords
Creates
Creates
ThreadBustile_request_state: Arc<Mutex<TileRequestState>>tessellate_result_sender: Sender<Message>geometry_index: Arc<Mutex<GeometryIndex>>MessageQueryResultMessagefeatures1FeatureidgeometrypropertiesTesselatedLayerfeature_indiceslayer: Layervertex/indices buffer
Use
Use
Use
Use
Text is not SVG - cannot display
\ No newline at end of file +ECSRender GraphHeadlessRenderNodeMultiple ProjectionsRaster TilesDEM TilesVector TilesSDF Text RendererQuadratic Bezier Text RendererVector Layer RendererText RendererCollision DetectionSymbol LayerFill LayerLine LayerTileData LoadingGeoJSON/FlatGeobufMulti ThreadingCoordinatesStyleMapBoxStyleSourceProtocolInput/OutputBufferTextureSamplerCameraProjectionCacheTesselltion CacheNetwork CacheScheduler/ScheduleMethodTessellatorGeometryIndexInput \ No newline at end of file diff --git a/docs/src/development-documents/figures/gpu-stack.drawio.svg b/docs/src/development-documents/figures/gpu-stack.drawio.svg deleted file mode 100644 index 4769a974..00000000 --- a/docs/src/development-documents/figures/gpu-stack.drawio.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
maplibre-rs
maplibre-rs
wgpu
wgpu
Metal
Metal
Vulkan
Vulkan
WebGPU JS
WebGPU JS
OpenGL (ES)
Angle
OpenGL (ES)...
Renderer in
Browser
Renderer in...
WebGPU    Specification
WebGPU    Specification
Text is not SVG - cannot display
\ No newline at end of file diff --git a/docs/src/development-documents/figures/modules.drawio.svg b/docs/src/development-documents/figures/modules.drawio.svg new file mode 100644 index 00000000..1c4ede77 --- /dev/null +++ b/docs/src/development-documents/figures/modules.drawio.svg @@ -0,0 +1,4 @@ + + + +
schedule
schedule
window
window
input
input
renderer
renderer
data pipeline
data pipeline
maplibre
maplibre
android
android
apple
apple
web
web
...
...
drives
drives
feeds
feeds
uses
uses
uses
uses
platform-specific modules
platform-specific modules
stage
stage
stage
stage
drives
drives
drives
drives
stage
stage
processes
processes
initializes
initializes
maplibre-winit
maplibre-winit
event loop
event loop
drives
drives
Text is not SVG - cannot display
\ No newline at end of file diff --git a/docs/src/development-documents/figures/os-stack.drawio.svg b/docs/src/development-documents/figures/os-stack.drawio.svg deleted file mode 100644 index acafd4b9..00000000 --- a/docs/src/development-documents/figures/os-stack.drawio.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
Operating System
Operating System
Compilation Target
Compilation Target
maplibre-rs
maplibre-rs
WASM with threads support
WASM with threads support
Native Code (X86, ARM)
Native Code (X86, ARM)
Browser (Firefox/Chrome)
Browser (Firefox/Chrome)
Linux/Anroid/iOS
Linux/Anroid/iOS
Rust Compiler 
Rust Compiler 
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/docs/src/development-documents/figures/render-stack.drawio.svg b/docs/src/development-documents/figures/render-stack.drawio.svg new file mode 100644 index 00000000..96446975 --- /dev/null +++ b/docs/src/development-documents/figures/render-stack.drawio.svg @@ -0,0 +1,4 @@ + + + +
maplibre-rs
maplibre-rs
wasm target (with threads)
wasm target (with threads)
wgpu
wgpu
Metal
Metal
Hardware Abstraction Layer (HAL)
Hardware Abstraction Layer (HAL)
DirectX
DirectX
Web-based app
(e.g. chrome, firefox,
safari, etc.)

Web-based app...
Non-web app
(e.g. deno)
Non-web app...
Vulkan
Vulkan
OpenGL
OpenGL
wasm target (with threads)
wasm target (with threads)
Native
Rust app
(on linux, windows, macos, ios, android, etc.)
Native...
native targets
native targets
WebGPU
WebGPU
OS Drivers
OS Drivers
WebGL
WebGL
HAL
HAL
Text is not SVG - cannot display
\ No newline at end of file diff --git a/docs/src/development-guide/building-libraries.md b/docs/src/development-guide/building-libraries.md new file mode 100644 index 00000000..f9f75266 --- /dev/null +++ b/docs/src/development-guide/building-libraries.md @@ -0,0 +1,3 @@ +# Building Libraries + +TODO diff --git a/docs/src/introduction.md b/docs/src/introduction.md index 090405b9..0ab20c00 100644 --- a/docs/src/introduction.md +++ b/docs/src/introduction.md @@ -2,4 +2,9 @@ # Introduction -maplibre-rs is a portable and performant vector maps renderer. \ No newline at end of file +maplibre-rs is a portable and performant vector maps renderer. + + +## Name + +The name of the library is "maplibre-rs". The camel-case version of it is "MapLibreRs".