Skip to content

adam-ce/alpine_renderer

 
 

Repository files navigation

AlpineMaps.org

License AlpineMaps.org | live weBIGeo | live Discord

This is a mono-repository containing the AlpineMaps.org and weBIGeo projects alongside their shared dependencies. Both are under active development and aim to provide state-of-the-art real-time rendering and processing for large-scale, tile-based geodata.

Qt Quick / OpenGL frontend, the original alpinemaps.org client.

WebGPU rendering engine with ImGui UI and GPU compute graph.

If looking at the issues, best to filter out projects!

We are in discord, talk to us! https://discord.gg/p8T9XzVwRa

Architecture

graph TD
    app["AlpineMaps.org [app]"]
    webgpu_app["weBIGeo [webgpu_app]"]
    gl_engine(["gl_engine"])
    webgpu_compute(["webgpu_compute"])
    webgpu(["webgpu"])
    nucleus(["nucleus"])
    webgpu_engine(["webgpu_engine"])

    app ---> gl_engine
    webgpu_app --> webgpu_engine
    webgpu_app --> webgpu_compute
    gl_engine --> nucleus
    webgpu_engine --> webgpu
    webgpu_compute --> webgpu
    webgpu --> nucleus


Loading

...only top-level dependencies are shown.

Module Description
nucleus Shared core: tile management, camera, data structures
webgpu RAII WebGPU wrappers (device, pipelines, buffers), WGSL preprocessor and GPU resource registry
gl_engine OpenGL rendering engine (used by the QML app)
webgpu_engine WebGPU rendering engine (used by the webgpu_app)
webgpu_compute CPU/GPU compute node graph library

Code style

  • class names are CamelCase, method, function and variable names are snake_case.
  • class attributes have an m_ prefix and are usually private, struct attributes don't and are usually public.
  • "use void set_attribute(int value) and int attribute() const for setters and getters (that is, avoid the get_)." Use Qt recommendations for naming boolean getters.
  • structs are usually small, simple, and have no or only few methods. they never have inheritance.
  • files are CamelCase if the content is a CamelCase class. otherwise they are snake_case, and have a snake_case namespace with stuff.
  • the folder/structure.h is reflected in namespace folder::structure{ .. }
  • indent with space only, indent 4 spaces
  • ideally, use the clang-format file provided with the project (in case you use Qt Creator, go to Preferences -> C++ -> Code Style: Formatting mode: Full, Format while typing, Format edited code on file save, don't override formatting)
  • follow the Qt recommendations and the C++ core guidelines everywhere else.

Developer workflow

  • Fork this repository.
  • Enable github pages from actions (Repository Settings -> Pages -> Source -> GitHub Actions)
  • Work in branches or your main.
  • Make pull requests from your main branch.
  • Github Actions will run the unit tests and create packages for the browser and Android and deploy them to your_username.github.io/your_clone_name/.
  • Make sure that the unit tests run through.
  • We will also look at the browser version during the pull request.
  • Ideally you'll also setup the signing keys for Android packages.

About

Rendering system for alpine maps.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • C++ 76.9%
  • QML 7.2%
  • WGSL 6.3%
  • CMake 3.9%
  • GLSL 3.3%
  • Python 1.3%
  • Other 1.1%