
GPU-accelerated vector map engine offering WGPU-based rendering, RustyBuzz text shaping, custom tiles and tile server, routing integration, plus navigation features like map‑matching and dead‑reckoning.
A WIP map engine written in Rust using WGPU.
The initial goal of the project is to learn a new cross-platform tech stack to build a mobile and Linux KMS-ready map engine. The project focuses on rendering and navigation features, including dead reckoning and map matching.
I'm writing about the tech I've learned here
Running on macOS, Android, iOS and Linux via KMS
The stack leverages the following approaches and libraries:
In root folder:
cargo run --package winit-run --release
./gradlew :composeApp:installRelease && adb shell am start -n "com.shashlik.demo/com.shashlik.demo.MainActivity"
Open "kmp/iosApp" project in XCode and just Run it
The current version has been tested on a Raspberry Pi 4 with Raspberry Pi OS Lite. It works via KMS and doesn't require a window subsystem.
Prerequisites for the Linux device:
sudo apt install mesa-vulkan-drivers vulkan-tools libvulkan1
sudo apt install libfontconfig1 libgbm1 libinput10 libxkbcommon-x11-0
Prerequisites for the building machine:
Execute kms_deploy.sh script:
chmod +x kms_deploy.shTARGET_HOST=admin@raspberrypi.local ./kms_deploy.sh. Note: Replace with your actual device user and address.[versions]
shashlikMap = "0.2.1"
[libraries]
shashlikmap = { module = "io.github.shashlikmap:mapshared", version.ref = "shashlikMap" }
In build.gradle.kts(KMP or Android):
implementation(libs.shashlikmap)
ShashlikMap { _, _ -> } anywhere in your Compose UI @Composable
fun App() {
MaterialTheme {
ShashlikMap { _, _ -> }
}
}Software one.A WIP map engine written in Rust using WGPU.
The initial goal of the project is to learn a new cross-platform tech stack to build a mobile and Linux KMS-ready map engine. The project focuses on rendering and navigation features, including dead reckoning and map matching.
I'm writing about the tech I've learned here
Running on macOS, Android, iOS and Linux via KMS
The stack leverages the following approaches and libraries:
In root folder:
cargo run --package winit-run --release
./gradlew :composeApp:installRelease && adb shell am start -n "com.shashlik.demo/com.shashlik.demo.MainActivity"
Open "kmp/iosApp" project in XCode and just Run it
The current version has been tested on a Raspberry Pi 4 with Raspberry Pi OS Lite. It works via KMS and doesn't require a window subsystem.
Prerequisites for the Linux device:
sudo apt install mesa-vulkan-drivers vulkan-tools libvulkan1
sudo apt install libfontconfig1 libgbm1 libinput10 libxkbcommon-x11-0
Prerequisites for the building machine:
Execute kms_deploy.sh script:
chmod +x kms_deploy.shTARGET_HOST=admin@raspberrypi.local ./kms_deploy.sh. Note: Replace with your actual device user and address.[versions]
shashlikMap = "0.2.1"
[libraries]
shashlikmap = { module = "io.github.shashlikmap:mapshared", version.ref = "shashlikMap" }
In build.gradle.kts(KMP or Android):
implementation(libs.shashlikmap)
ShashlikMap { _, _ -> } anywhere in your Compose UI @Composable
fun App() {
MaterialTheme {
ShashlikMap { _, _ -> }
}
}Software one.