Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
618 commits
Select commit Hold shift + click to select a range
6c5f1f7
Merge branch 'develop' of github.com:weBIGeo/webigeo into develop
GeraldKimmersdorfer Nov 21, 2024
690f38e
add: make texture write method to be a template
pkomon Nov 26, 2024
5b54a24
add: load image and overlay over specific region
pkomon Nov 26, 2024
810aa04
fix: overlays for tiles, zoomlevels, vertex id
pkomon Nov 26, 2024
77f2ed8
fix: show overlay post shading checkbox
pkomon Nov 26, 2024
bc4e45f
refactor: move buffer to texture node to own file
pkomon Nov 26, 2024
549de6f
refactor: remove obsolete enums
pkomon Nov 26, 2024
c7ec14c
add: TileExportNode
GeraldKimmersdorfer Nov 27, 2024
453e792
add: ImageWriter to nucleus
GeraldKimmersdorfer Nov 27, 2024
25e41eb
refactor: simplify d8 compute shader and utility funcs
pkomon Nov 27, 2024
7843d29
fix: color output in d8
pkomon Nov 28, 2024
085d48f
add: log path in TileExportNode
pkomon Nov 28, 2024
ef81a7e
refactor: remove unused variable
pkomon Nov 28, 2024
5da3e5a
fix: overlay in web build
GeraldKimmersdorfer Nov 28, 2024
4d734ae
Merge branch 'develop' of github.com:weBIGeo/webigeo into develop
GeraldKimmersdorfer Nov 28, 2024
b595313
add: compute release points node
pkomon Nov 28, 2024
bb5cd8f
Merge branch 'develop' of github.com:weBIGeo/webigeo into develop
pkomon Nov 28, 2024
85b6dac
fix: bind group layout of release points node
pkomon Nov 28, 2024
ebbbd8d
fix: uv coords for trajectory node
pkomon Nov 28, 2024
897d9b6
add: release point texture input for trajectory node
pkomon Nov 28, 2024
34a2853
refactor: remove local vars for bind group entries
pkomon Nov 28, 2024
6f4fdb4
add: Export for Trajectory Compute Pipeline
GeraldKimmersdorfer Nov 29, 2024
14e6019
fix: Moves sampling density into release points node
GeraldKimmersdorfer Nov 29, 2024
918c5c7
add: float decoding for PNG-Overlays
GeraldKimmersdorfer Dec 3, 2024
bdfbe8e
add: texture to file debug function
GeraldKimmersdorfer Dec 5, 2024
930a672
add: GPU Tile Stitching Node
GeraldKimmersdorfer Dec 5, 2024
c576114
refactor: changes slider interval for float decoding bound control
GeraldKimmersdorfer Dec 5, 2024
d67006b
add: R32Float export png support for save_to_file function
GeraldKimmersdorfer Dec 6, 2024
bcc603a
add: HeightDecodeNode
GeraldKimmersdorfer Dec 6, 2024
ad1c687
add: utility func for getting tile width and height
pkomon Dec 6, 2024
1f8abd8
refactor: normal node on single texture instead of tiles
pkomon Dec 6, 2024
8c76555
Merge branch 'develop' into refactor/node-graph
pkomon Dec 9, 2024
ed51257
refactor: release point node to single texture
pkomon Dec 9, 2024
7daf993
refactor: trajectory node to single texture
pkomon Dec 10, 2024
ef0041b
refactor: compute slope angle shader func
pkomon Dec 10, 2024
dc55fa5
refactor: remove unused settings
pkomon Dec 10, 2024
ba18f91
add: resolution multiplier for trajectory overlay
pkomon Dec 10, 2024
613cdc1
fix: crash on too large textures
pkomon Dec 11, 2024
aa00a6a
add: line algorithm (bresenham) for trajectories
pkomon Dec 11, 2024
1a9c7ac
fix: read_back_async of texture now const (as it should be)
pkomon Dec 11, 2024
ef86652
add: single texture export for TileExportNode
pkomon Dec 11, 2024
d5b9b64
add: node graph with texture export
pkomon Dec 11, 2024
e8a55ca
refactor: minor cleanup in release points compute shader
pkomon Dec 11, 2024
359be95
fix: multiple off-by-one errors in trajectory shader
pkomon Dec 11, 2024
34e46d1
fix: always write color in buffer to texture
pkomon Dec 12, 2024
881dbb4
fix: add missing wgsl files to qt resource
pkomon Dec 12, 2024
bf25a84
add: fxaa node and pipeline
pkomon Dec 12, 2024
461d9fb
add: iterative simulation node
pkomon Dec 19, 2024
4a5f05b
fix: replace filtering code with textureSampleLevel
pkomon Dec 20, 2024
b36b6a2
wgsl psg pseudo random sequence
GeraldKimmersdorfer Dec 20, 2024
7f99f24
add: mipamping for overlays
GeraldKimmersdorfer Dec 27, 2024
21f0440
add: random simulation for trajectories
pkomon Dec 31, 2024
d060406
refactor: rename trajectory models
pkomon Jan 2, 2025
3e7bfc0
add: slider for normal offset size (trajectories)
pkomon Jan 2, 2025
828f888
add: slider for num samples (trajectories)
pkomon Jan 2, 2025
87eb416
refactor: set default min release point angle to 30
pkomon Jan 2, 2025
1cfb38d
fix: put image overlay options into correct section
pkomon Jan 2, 2025
bab6f18
add: offset for computed direction (trajectories)
pkomon Jan 2, 2025
9b3dad1
fix: web again
GeraldKimmersdorfer Jan 7, 2025
a47724a
add: (maybe slightly broken) simple 2 model
GeraldKimmersdorfer Jan 8, 2025
edade19
fix: avoid device lost on default values when normalizing 0-vector
pkomon Jan 11, 2025
c333fcf
add: flowpy runout model
pkomon Jan 11, 2025
18df605
add: shading for compute overlay
GeraldKimmersdorfer Jan 15, 2025
36f9f58
add: changes to model routing
GeraldKimmersdorfer Jan 15, 2025
28b82f5
refactor: renames, invert density, cleanup settings
pkomon Jan 15, 2025
5ea7847
add: separate num paths from resolutions
pkomon Jan 23, 2025
e1d14cf
fix: bug with requesting height
pkomon Jan 23, 2025
5f650a2
refactor: remove unused settings
pkomon Jan 23, 2025
5cd83e2
fix: sampling density now properly named
pkomon Jan 23, 2025
280cab5
add: update default parameters
pkomon Jan 23, 2025
02b5718
add: documentation stubs
GeraldKimmersdorfer Jan 27, 2025
aafb139
fix: remove rendering zoomlevel restriction
pkomon Jan 29, 2025
ce3601b
add: some sections of technical/developer doc
pkomon Jan 29, 2025
8addb7c
fix: restore grossglockner as default cam preset
pkomon Feb 4, 2025
d3af95f
add: hide image overlay by default
pkomon Feb 4, 2025
a7af698
fix: consistent naming of settings in UI
pkomon Feb 4, 2025
f71bd26
doc: add some sections in user guide
pkomon Feb 4, 2025
37ac012
fix: altitude correction for height decode node
pkomon Feb 4, 2025
8c5ee93
doc: revisit user guide, formatting
pkomon Feb 5, 2025
a60a22d
add: example gpx tracks
pkomon Feb 5, 2025
041402f
doc: add screenshots to user guide
pkomon Feb 5, 2025
7f29f61
doc: update node graph, use lower res jpg for screenshots
pkomon Feb 5, 2025
2a62310
doc: add demo link in main readme
pkomon Feb 5, 2025
2531bc0
doc: remove todo from readme
pkomon Feb 5, 2025
3de82c7
fix: no fxaa and runout bug
GeraldKimmersdorfer Feb 11, 2025
2c39e67
fix: move altitude correction to normals node
pkomon Feb 11, 2025
eea663b
add: change slider to drag components and enable bilinear filter
GeraldKimmersdorfer Feb 11, 2025
01718b0
fix: check runout model before drawing
GeraldKimmersdorfer Feb 11, 2025
842878a
add: logo to gui and new imgui theme
GeraldKimmersdorfer Feb 19, 2025
5ef32f7
fix: changes default release point angle range to [30,45]
GeraldKimmersdorfer Feb 19, 2025
2eacb86
fix: dark mode on windows and refactor styling functions into seperat…
GeraldKimmersdorfer Feb 19, 2025
eef77ea
fix: adds default breite ries track
GeraldKimmersdorfer Feb 19, 2025
0768bd2
add: auto load and compute execute on debug build
GeraldKimmersdorfer Feb 19, 2025
545d119
add: doc screenshots with new interface
GeraldKimmersdorfer Feb 19, 2025
d467ee0
fix: compile error with emscripten
pkomon Mar 3, 2025
cfebc59
fix: replace deprecated swapchain with new surface api
pkomon Mar 3, 2025
5388120
add: log webgpu device request error msg
pkomon Mar 4, 2025
932031e
fix: device request error for chrome canary
pkomon Mar 4, 2025
ba223b1
fix: replace deprecated webgpu API
pkomon Mar 4, 2025
8d26677
Merge branch 'main' into develop-merge
pkomon Mar 5, 2025
7b54f14
Merge remote-tracking branch 'upstream/main' into develop-merge
pkomon Mar 6, 2025
0b34a9f
fix: downgrade Qt version to 6.7
pkomon Mar 17, 2025
06fa833
refactor: complete merge
pkomon Mar 17, 2025
4480f7e
fix: correct names in GpuHashMap test
pkomon Mar 24, 2025
5dde154
fix: crash on exit
pkomon Mar 24, 2025
190a319
fix: weird warning
pkomon Mar 24, 2025
eb59de4
add: aabb file output for single texture
pkomon Mar 24, 2025
2d30eae
add: export of trajectory texture
pkomon Mar 24, 2025
23d9d51
add: load texture node
pkomon Mar 24, 2025
f41b8d6
add: node failure when texture file cannot be loaded
pkomon Mar 25, 2025
2780540
add: node for loading region aabb from txt file
pkomon Mar 25, 2025
f1d759d
add: compute graph with custom file inputs + ui
pkomon Mar 31, 2025
a5a47f6
add: slider to change max zoom level
pkomon Apr 3, 2025
6f73072
add: dtm/dsm selection, move max zoomlevel to app section
pkomon Apr 7, 2025
a1710ec
add: todo comment
pkomon Apr 7, 2025
17c3b1a
add: disable linear filtering for trajectories texture
pkomon Apr 7, 2025
7f31bb6
fix: removes verification pipeline ui elements in web
GeraldKimmersdorfer Apr 16, 2025
f9f597a
add: layers to trajectory node
GeraldKimmersdorfer Apr 16, 2025
dc616bb
add: dawn flag use_user_defined_labels_in_backend on debug
GeraldKimmersdorfer Apr 16, 2025
a93bb46
add: hides mipmap debug message
GeraldKimmersdorfer Apr 16, 2025
68fc798
add: node graph editor
pkomon Apr 16, 2025
d23182f
adds: initial graph layout algorithm
GeraldKimmersdorfer Apr 16, 2025
c893b08
add: compose overlay also uses range encoding function
GeraldKimmersdorfer Apr 18, 2025
d8671d7
add: DAWN toggle output and vsync per default deactivated
GeraldKimmersdorfer Apr 18, 2025
829af17
add: set NodeGraphSize only on startup
GeraldKimmersdorfer Apr 18, 2025
0098eed
add: BufferExportNode
GeraldKimmersdorfer Apr 18, 2025
90ddf48
add: button to toggle node editor
pkomon Apr 19, 2025
ca6340a
add: compute and write parameters into layers
pkomon Apr 20, 2025
9b5a06b
add: height difference texture
pkomon Apr 21, 2025
9ac7920
add: timestamp to export directory name
pkomon Apr 23, 2025
79080a1
add: export pipeline settings as json file
pkomon Apr 23, 2025
037e96c
add: load eval dir and settings file
pkomon Apr 23, 2025
f90ad97
add: error message when pipeline cannot be run
pkomon Apr 23, 2025
6c2368f
fix: write gamma instead of delta for travel angle output
pkomon Apr 26, 2025
2ff595c
add: output node timings
pkomon Apr 26, 2025
10ada6c
fix: exit simulation when sampled height is zero
GeraldKimmersdorfer Apr 29, 2025
c8b52c2
add: cli app for webigeo evaluation
pkomon May 5, 2025
2be32c9
fix: typo in comment
pkomon May 5, 2025
2d74671
add: generate batch script as part of cmake build
pkomon May 6, 2025
2845b2a
add: relative paths for webigeo_eval cli
pkomon May 6, 2025
d919805
fix: unhandled errors, use qFatal everywher
pkomon May 7, 2025
34928b2
add: add model selection back to ui
pkomon May 7, 2025
cceb218
add: output normal texture in eval pipeline
pkomon May 16, 2025
190d0c9
wip physical model
May 17, 2025
336f565
add: adjustable random_seed in GUI and CLI
GeraldKimmersdorfer May 19, 2025
fab1b2e
add: configurable shading parameters
GeraldKimmersdorfer May 19, 2025
e713a2c
wip physical model
May 17, 2025
0a0fe98
add: flowpy color mapping and z_delta as default overlay
GeraldKimmersdorfer May 20, 2025
842423e
add: changes track color to webigeo blue
GeraldKimmersdorfer May 20, 2025
fc5449e
add: hides debug axis and changes default material to white
GeraldKimmersdorfer May 20, 2025
f5316d6
add: multiple run support for avalanche trajectory node
GeraldKimmersdorfer May 21, 2025
fd08db6
add: transparency based on cellCounts
GeraldKimmersdorfer May 21, 2025
903adca
refactor: webigeo logo resize fix and removal of obsolete node graph …
GeraldKimmersdorfer May 21, 2025
d87fb69
add: graph part run, adjustable legend, velocity conversion
GeraldKimmersdorfer May 21, 2025
9dd4bbc
add: unit to legend
GeraldKimmersdorfer May 21, 2025
5ab87d2
add: ScreenSpace Heightlines
GeraldKimmersdorfer May 21, 2025
bab35f6
add: adjustable ortho tile source
GeraldKimmersdorfer May 21, 2025
d5f4633
add: node enable state and no export on part run
GeraldKimmersdorfer May 21, 2025
ac0ec28
add: overlay post shading for compute overlay
GeraldKimmersdorfer May 21, 2025
cfcaf54
wip models
May 27, 2025
f897dc1
add: moves heightlines into the center and applies distance based AA
GeraldKimmersdorfer May 27, 2025
0b01451
fix: better aa for height lines far away
GeraldKimmersdorfer May 27, 2025
ceac151
fix: improved lighting parameters
GeraldKimmersdorfer May 27, 2025
1f33508
fix: normals on tile edges (port of adam's fix)
pkomon May 27, 2025
229ac09
lawinensymposium models
May 27, 2025
5888c12
Merge branch 'models' of github.com:Gro2mi/alpinemapsrenderer into Gr…
pkomon May 27, 2025
be54238
add: copyright
pkomon May 27, 2025
5ad16a7
Merge branch 'Gro2mi-models' into feature/eval
pkomon May 27, 2025
926b460
fix: repaint every frame
GeraldKimmersdorfer May 28, 2025
ce52955
fix: cosine_weight and speedup
GeraldKimmersdorfer May 28, 2025
c45f148
fix: uniform sampling per default
GeraldKimmersdorfer May 28, 2025
633dae7
add: toggle texture interpolation and fixes mipmapping of compute ove…
GeraldKimmersdorfer May 28, 2025
a19935e
add: model comparisons
May 29, 2025
3cc8d44
add: doc params for reference models
pkomon May 29, 2025
a85abb1
fix: rename evaluation doc
pkomon May 29, 2025
a1d12f4
fix: unconnected transparency buffer in eval pipeline
pkomon May 29, 2025
28f6023
adds: layer scaling (disabled), changeable overlays and print_mode fo…
GeraldKimmersdorfer May 29, 2025
d469577
Merge branch 'feature/eval' of github.com:weBIGeo/webigeo into featur…
GeraldKimmersdorfer May 29, 2025
be62923
refactor: move code to focus region into method
pkomon Jun 4, 2025
73d0a0a
refactor: move code to focus region into method (2d)
pkomon Jun 4, 2025
35d9a5f
fix: use of wrong variable
pkomon Jun 4, 2025
d4872a3
add: last run time in node graph
GeraldKimmersdorfer Jun 25, 2025
8bc74ac
Merge branch 'feature/eval' of github.com:weBIGeo/webigeo into featur…
GeraldKimmersdorfer Jun 25, 2025
f40b7e1
add: only partial pipeline rerun for more compute gui elements
GeraldKimmersdorfer Jun 25, 2025
a2942c5
add: implement roughness calculation for terrain analysis
Jun 25, 2025
4c87d40
Merge remote-tracking branch 'upstream/main' into feature/eval
pkomon Sep 8, 2025
b5add50
fix: flickering when ortho not yet loaded
pkomon Sep 8, 2025
3495612
fix: dtm/dsm selection works again
pkomon Sep 8, 2025
af5ecc2
fix: level of detail slider works again
pkomon Sep 8, 2025
8e4f314
fix: max zoom level slider works again
pkomon Sep 8, 2025
aa94aba
add: cmake option to exclude webigeo cli from build
pkomon Sep 8, 2025
a4eff14
fix: build error in wasm build
pkomon Sep 11, 2025
905bb9d
Update to new webGPU version, update dependencies and readme
pkomon Sep 16, 2025
1b2700d
refactor: replace enable()/disable() with set_enabled(bool)
pkomon Oct 7, 2025
58c0112
refactor: move export nodes into correct factory method
pkomon Oct 7, 2025
079f02c
fix: set default maximum zoom level back to 18
pkomon Oct 7, 2025
13910de
refactor: slightly wider ui panel
pkomon Oct 7, 2025
2a696b6
fix: shader compile error in firefox for render_tiles.wgsl
pkomon Oct 7, 2025
6666343
refactor: clean up ui
pkomon Oct 7, 2025
7bccc0a
fix: better default settings
pkomon Oct 7, 2025
e0060f9
fix: wgsl compile error in firefox
pkomon Oct 7, 2025
41fe47a
fix: crash on changing settings without running pipeline
pkomon Oct 13, 2025
cddac6e
add: disclaimer popup
pkomon Oct 13, 2025
2cee9aa
add: about page
pkomon Oct 16, 2025
86a7906
fix: disable broken pipelines
pkomon Oct 16, 2025
3786ad0
fix: set default angle for snow to 45 instead of 30
pkomon Oct 16, 2025
c1f41e3
Merge branch 'develop'
pkomon Oct 16, 2025
a952dfe
fix: persistence slider maximum and step
pkomon Oct 16, 2025
bf5ed7e
fix: snow compute node
pkomon Oct 22, 2025
3ab5abc
add: new NodeGraphLayout with Animation
GeraldKimmersdorfer Oct 29, 2025
22a8f17
fix: north animation and input recording+playback
pkomon Oct 29, 2025
4732567
fix: incorrect normal when height tile has not loaded yet
pkomon Oct 29, 2025
705d057
add: node graph ui and smooth camera animation recorder
GeraldKimmersdorfer Nov 3, 2025
8d0a65c
fix: update webigeo cli to use new webgpu api
pkomon Nov 3, 2025
ad65ad7
fix: not receiving webgpu callbacks on CLI version
pkomon Nov 23, 2025
cdd7401
fix: compile error for webigeo_eval target
pkomon Nov 24, 2025
721bde2
fix: color mapped texture for avalanche eval graph
pkomon Nov 24, 2025
3bffc3b
refactor: rename fields of webigeo_eval settings struct
pkomon Nov 24, 2025
2f195ec
add: make most CLI settings optional
pkomon Nov 24, 2025
f1a7f14
refactor: better name, add descriptive comment
pkomon Nov 24, 2025
8ec161c
add: documentation for webigeo CLI tool
pkomon Nov 24, 2025
79215bf
add: simplify native build
pkomon Nov 26, 2025
034850e
refactor: fixes warnings on MSVC debug build
GeraldKimmersdorfer Dec 4, 2025
1bc6dda
refactor: fix webbuild, cleanup, remove warnings
GeraldKimmersdorfer Dec 4, 2025
9235faa
add: dawn, sdl and dawnport python installation scripts for cmake
GeraldKimmersdorfer Dec 5, 2025
c29a0b1
add: cleanup message
GeraldKimmersdorfer Dec 5, 2025
58a79b7
fix: adapted about page
GeraldKimmersdorfer Dec 6, 2025
bb1edf1
add: updated Setup-Instructions
GeraldKimmersdorfer Dec 6, 2025
136f829
fix: respect python naming conventions and unify scripts
GeraldKimmersdorfer Dec 11, 2025
3317867
add: remove hashmap tests and use qt deploytool for dlls
GeraldKimmersdorfer Dec 15, 2025
967672b
add: vs and vs code directory ignore
GeraldKimmersdorfer Dec 15, 2025
7186052
add: script to serve wasm files
GeraldKimmersdorfer Dec 15, 2025
767a654
add: install targets for web and native build
GeraldKimmersdorfer Dec 15, 2025
78e977e
add: CMakePresets for web and native builds
GeraldKimmersdorfer Dec 15, 2025
e428daf
add: explicit variables for emsdk and ninja to CMakePresets and updat…
GeraldKimmersdorfer Dec 16, 2025
1c86c58
fix: CmakePresets on Qt Creator
GeraldKimmersdorfer Dec 16, 2025
f69633f
fix: makes ALP_WEBGPU_APP_ENABLE_IMGUI work again
GeraldKimmersdorfer Dec 16, 2025
f21d62c
add: file monitor for wasm serving script
GeraldKimmersdorfer Dec 16, 2025
4e4390f
add: fixes (the one) test and adds test cmake preset
GeraldKimmersdorfer Dec 17, 2025
4102719
add: new ShaderPreprocessor
GeraldKimmersdorfer Dec 18, 2025
d40cd5b
fix: log in powershell and cmd
GeraldKimmersdorfer Dec 18, 2025
6179707
add: tests for ShaderPreprocessor
GeraldKimmersdorfer Dec 18, 2025
08f4650
add: use new preprocessor in ShaderModuleManager
GeraldKimmersdorfer Dec 18, 2025
f9fef99
add: simple shader minification and new wasm file
GeraldKimmersdorfer Dec 19, 2025
7071a89
add: error callback for shader preprocessor
GeraldKimmersdorfer Dec 19, 2025
e05151e
add: new wasm-publish target
GeraldKimmersdorfer Dec 19, 2025
ae029eb
Merge pull request #38 from Gro2mi/feature/roughness
GeraldKimmersdorfer Dec 19, 2025
bf41d89
add: make roughness filtering optional via preprocessor directives
GeraldKimmersdorfer Dec 19, 2025
72b5516
fix: CPU Timing
GeraldKimmersdorfer Dec 20, 2025
651f0c7
Merge branch 'AlpineMapsOrg:main' into develop
GeraldKimmersdorfer Dec 20, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,8 @@
/doc/*
/doc
/build/*
/install/*
.vs
.vscode
.qtcreator
__pycache__
49 changes: 42 additions & 7 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
#############################################################################
# Alpine Terrain Renderer
# Copyright (C) 2023 Adam Celarek <family name at cg tuwien ac at>
# Copyright (C) 2024 Gerald Kimmersdorfer
# Copyright (C) 2024 Patrick Komon
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
Expand All @@ -19,16 +21,23 @@
cmake_minimum_required(VERSION 3.25)
project(alpine-renderer LANGUAGES CXX)

option(ALP_UNITTESTS "include unit test targets in the buildsystem" ON)
option(ALP_UNITTESTS "include unit test targets in the buildsystem" OFF)
option(ALP_GL_ENGINE "include the gl engine in the buildsystem" OFF)
option(ALP_WEBGPU_ENGINE "include the webgpu engine in the buildsystem" ON)
option(ALP_WEBGPU_APP "include the webgpu app in the buildsystem" ON)
option(ALP_WEBIGEO_EVAL "include the webigeo eval cli in the buildsystem" OFF)
option(ALP_PLAIN_RENDERER "include the plain renderer in the buildsystem" OFF)
option(ALP_QML_APP "include the qml app in the buildsystem" OFF)

option(ALP_ENABLE_ADDRESS_SANITIZER "compiles atb with address sanitizer enabled (only debug, works only on g++ and clang)" OFF)
option(ALP_ENABLE_THREAD_SANITIZER "compiles atb with thread sanitizer enabled (only debug, works only on g++ and clang)" OFF)
option(ALP_ENABLE_ASSERTS "enable asserts (do not define NDEBUG)" ON)
option(ALP_ENABLE_TRACK_OBJECT_LIFECYCLE "enables debug cmd printout of constructors & deconstructors if implemented" OFF)
option(ALP_ENABLE_APP_SHUTDOWN_AFTER_60S "Shuts down the app after 60S, used for CI testing with asan." OFF)
option(ALP_ENABLE_LTO "Enable link time optimisation." OFF)
option(ALP_ENABLE_GL_ENGINE "Enable OpenGL/WebGL engine" ON)
option(ALP_ENABLE_GL_ENGINE "Enable OpenGL/WebGL engine" OFF)
option(ALP_ENABLE_AVLANCHE_WARNING_LAYER "Enables avalanche warning layer (requires Qt Gui in nucleus)" OFF)
option(ALP_ENABLE_LABELS "Enables label rendering" ON)
option(ALP_ENABLE_LABELS "Enables label rendering" OFF)

set(ALP_EXTERN_DIR "extern" CACHE STRING "name of the directory to store external libraries, fonts etc..")

Expand All @@ -38,8 +47,8 @@ endif()

if (EMSCRIPTEN)
set(ALP_WWW_INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}" CACHE PATH "path to the install directory (for webassembly files, i.e., www directory)")
option(ALP_ENABLE_THREADING "Puts the scheduler into an extra thread." OFF)
option(ALP_ENABLE_DEV_TOOLS "HotReload, Renderstats, .. (increases binary size)" OFF)
option(ALP_ENABLE_THREADING "Puts the scheduler into an extra thread." ON)
option(ALP_ENABLE_DEV_TOOLS "HotReload, Renderstats, .. (increases binary size)" ON)
elseif(ANDROID)
option(ALP_ENABLE_THREADING "Puts the scheduler into an extra thread." ON)
option(ALP_ENABLE_DEV_TOOLS "HotReload, Renderstats, .. (increases binary size)" OFF)
Expand Down Expand Up @@ -82,13 +91,18 @@ if (ALP_USE_LLVM_LINKER)
string(APPEND CMAKE_EXE_LINKER_FLAGS " -fuse-ld=lld")
endif()

# Disable Qt debug output in release builds
if(CMAKE_BUILD_TYPE STREQUAL "Release")
add_compile_definitions(QT_NO_DEBUG_OUTPUT)
endif()

########################################### dependencies #################################################
find_package(Qt6 REQUIRED COMPONENTS Core Gui OpenGL Network Quick QuickControls2 LinguistTools)
qt_standard_project_setup(REQUIRES 6.8)
qt_standard_project_setup(REQUIRES 6.7)

alp_add_git_repository(renderer_static_data URL https://github.com/AlpineMapsOrg/renderer_static_data.git COMMITISH v23.11 DO_NOT_ADD_SUBPROJECT)
alp_add_git_repository(alpineapp_fonts URL https://github.com/AlpineMapsOrg/fonts.git COMMITISH v24.02 DO_NOT_ADD_SUBPROJECT)
alp_add_git_repository(doc URL https://github.com/AlpineMapsOrg/documentation.git COMMITISH origin/main DO_NOT_ADD_SUBPROJECT DESTINATION_PATH doc)
alp_add_git_repository(doc URL https://github.com/AlpineMapsOrg/documentation.git COMMITISH origin/main DO_NOT_ADD_SUBPROJECT DESTINATION_PATH extern/doc)


if (ANDROID)
Expand All @@ -109,6 +123,27 @@ if (ALP_ENABLE_GL_ENGINE)
add_subdirectory(app)
endif()

if (ALP_GL_ENGINE)
add_subdirectory(gl_engine)
endif()
if (ALP_PLAIN_RENDERER)
add_subdirectory(plain_renderer)
endif()
if (ALP_QML_APP)
add_subdirectory(app)
endif()
if (ALP_UNITTESTS)
add_subdirectory(unittests)
endif()
if (ALP_WEBGPU_APP OR ALP_WEBGPU_ENGINE)
add_subdirectory(webgpu)
if (ALP_WEBGPU_ENGINE)
add_subdirectory(webgpu_engine)
endif()
if (ALP_WEBGPU_APP)
add_subdirectory(webgpu_app)
endif()
if (ALP_WEBIGEO_EVAL)
add_subdirectory(webigeo_eval)
endif()
endif()
146 changes: 146 additions & 0 deletions CMakePresets.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
{
"version": 6,
"cmakeMinimumRequired": {
"major": 3,
"minor": 25,
"patch": 0
},
"configurePresets": [
{
"name": "msvc-base",
"hidden": true,
"generator": "Ninja",
"binaryDir": "${sourceDir}/build/${presetName}",
"installDir": "${sourceDir}/install/${presetName}",
"architecture": {
"value": "x64",
"strategy": "external"
},
"toolset": {
"value": "host=x64",
"strategy": "external"
},
"cacheVariables": {
"CMAKE_C_COMPILER": "cl.exe",
"CMAKE_CXX_COMPILER": "cl.exe",
"Qt6_DIR": "C:/Qt/6.10.1/msvc2022_64/lib/cmake/Qt6"
},
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
}
},
{
"name": "msvc-debug",
"displayName": "MSVC Debug (Windows)",
"description": "Debug build using MSVC compiler",
"inherits": "msvc-base",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"CMAKE_CXX_FLAGS": "/DQT_DEBUG"
}
},
{
"name": "msvc-release",
"displayName": "MSVC Release (Windows)",
"description": "Release build using MSVC compiler",
"inherits": "msvc-base",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release"
}
},
{
"name": "msvc-debug-test",
"displayName": "MSVC Debug Tests (Windows)",
"description": "Debug build for unit tests using MSVC compiler",
"inherits": "msvc-debug",
"cacheVariables": {
"ALP_UNITTESTS": "ON",
"ALP_WEBGPU_APP": "OFF"
}
},
{
"name": "msvc-release-test",
"displayName": "MSVC Release Tests (Windows)",
"description": "Release build for unit tests using MSVC compiler",
"inherits": "msvc-release",
"cacheVariables": {
"ALP_UNITTESTS": "ON",
"ALP_WEBGPU_APP": "OFF"
}
},
{
"name": "emscripten-base",
"hidden": true,
"generator": "Ninja",
"binaryDir": "${sourceDir}/build/${presetName}",
"installDir": "${sourceDir}/install/${presetName}",
"toolchainFile": "C:/Qt/6.10.1/wasm_multithread/lib/cmake/Qt6/qt.toolchain.cmake",
"environment": {
"PATH": "C:/Qt/Tools/Ninja;$penv{PATH}",
"EMSDK": "C:/tmp/webigeo/emsdk"
}
},
{
"name": "wasm-debug",
"displayName": "WebAssembly Debug",
"description": "Debug build for WebAssembly using Emscripten",
"inherits": "emscripten-base",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"CMAKE_CXX_FLAGS": "-DQT_DEBUG"
}
},
{
"name": "wasm-release",
"displayName": "WebAssembly Release",
"description": "Release build for WebAssembly using Emscripten",
"inherits": "emscripten-base",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release"
}
},
{
"name": "wasm-publish",
"displayName": "WebAssembly Publish",
"description": "Production build for WebAssembly using Emscripten",
"inherits": "emscripten-base",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release",
"CMAKE_CXX_FLAGS": "-DQT_NO_DEBUG_OUTPUT -DQT_NO_WARNING_OUTPUT -DQT_NO_INFO_OUTPUT",
"ALP_ENABLE_WGSL_MINIFICATION": "ON"
}
}
],
"buildPresets": [
{
"name": "msvc-debug",
"configurePreset": "msvc-debug"
},
{
"name": "msvc-release",
"configurePreset": "msvc-release"
},
{
"name": "msvc-debug-test",
"configurePreset": "msvc-debug-test"
},
{
"name": "msvc-release-test",
"configurePreset": "msvc-release-test"
},
{
"name": "wasm-debug",
"configurePreset": "wasm-debug"
},
{
"name": "wasm-release",
"configurePreset": "wasm-release"
},
{
"name": "wasm-publish",
"configurePreset": "wasm-publish"
}
]
}
63 changes: 10 additions & 53 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,62 +1,19 @@
# AlpineMaps.org Renderer
This is the software behind [alpinemaps.org](https://alpinemaps.org).
![weBIGeo Sujet](https://github.com/weBIGeo/ressources/blob/main/for_md/webigeo_sujet_v3_github.png?raw=true)

A developer version (trunk) is released [here](https://alpinemapsorg.github.io/renderer/), including APKs for android. Be aware that it can break at any time!
# weBIGeo
WeBIGeo is a research project focused on real-time 3D computer graphics, large data visualization, and human-computer interaction. The goal is to offer a platform that is easy to use and allows for fast analysis and visualization of geographical datasets. (Further information can be found [here](https://www.netidee.at/webigeo).)

[If looking at the issues, best to filter out projects!](https://github.com/AlpineMapsOrg/renderer/issues?q=is%3Aissue%20state%3Aopen%20no%3Aproject)
To that end, WeBIGeo uses existing technologies from the [AlpineMaps.org Project](https://alpinemapsorg.github.io/renderer/) and introduces a new WebGPU rendering engine.

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

# Cloning and building
`git clone git@github.com:AlpineMapsOrg/renderer.git`
# [Demo](https://webigeo.alpinemaps.org/)

After that it should be a normal cmake project. That is, you run cmake to generate a project or build file and then run your favourite tool. All dependencies should be pulled automatically while you run CMake.
We use Qt Creator (with mingw on Windows), which is the only tested setup atm and makes setup of Android and WebAssembly builds reasonably easy. If you have questions, please go to Discord.

## Dependencies
* Qt 6.8.0, or greater
* g++ 12+, clang or msvc
* OpenGL
* Qt Positioning and Charts modules
* Some other dependencies will be pulled automatically during building.

## Building the native version
* just run cmake and build

## Building the android version
* We are usually building with Qt Creator, because it works relatively out of the box. However, it should also work on the command line or other IDEs if you set it up correctly.
* You need a Java JDK before you can do anything else. Not all Java versions work, and the error messages might be surprising (or non-existant). I'm running with Java 19, and I can compile for old devices. Iirc a newer version of Java caused issues. [Android documents the required Java version](https://developer.android.com/build/jdks), but as said, for me Java 19 works as well. It might change in the future.
* Once you have Java, go to Qt Creator Preferences -> Devices -> Android. There click "Set Up SDK" to automatically download and install an Android SDK.
* Finally, you might need to click on SDK Manager to install a fitting SDK Platform (take the newest, it also works for older devices), and ndk (newest as well).
* Then Google the internet to find out how to enable the developer mode on Android.
* On linux, you'll have to setup some udev rules. Run `Android/SDK/platform-tools/adb devices` and you should get instructions.
* If there are problems, check out the [documentation from Qt](https://doc.qt.io/qt-6/android-getting-started.html)
* Finally, you are welcome to ask in discord if something is not working!

## Building the WebAssembly version:
* [The Qt documentation is quite good on how to get it to run](https://doc-snapshots.qt.io/qt6-dev/wasm.html#installing-emscripten).
* Be aware that only specific versions of emscripten work for specific versions of Qt, and the error messages are not helpfull.
* [More info on building and getting Hotreload to work](https://github.com/AlpineMapsOrg/documentation/blob/main/WebAssembly_local_build.md)
# Documentation
- [Setup](docs/Setup.md)
- [Usage](docs/Usage.md)
- [Technical documentation](docs/Technical.md)

# 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 [the Qt recommendations](https://wiki.qt.io/API_Design_Principles#Naming_Boolean_Getters,_Setters,_and_Properties) 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](https://wiki.qt.io/API_Design_Principles) and the [c++ core guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines) 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 ([instructions](https://github.com/AlpineMapsOrg/renderer/blob/main/creating_apk_keys.md)).
We adhere to the coding guidelines of [AlpineMaps.org](https://github.com/AlpineMapsOrg/renderer?tab=readme-ov-file#code-style).
1 change: 1 addition & 0 deletions app/TerrainRendererItem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,7 @@ QQuickFramebufferObject::Renderer* TerrainRendererItem::createRenderer() const
return r;
}


void TerrainRendererItem::touchEvent(QTouchEvent* e)
{
this->setFocus(true);
Expand Down
Loading
Loading