Unnamed repository; edit this file 'description' to name the repository. (original) (raw)

Contents

Original document location.

gamp /gămp/ noun

… further Gamp stands for Graphics, Audio, Multimedia and Processing, the same way as JogAmp, but natively plus using WebAssembly.

This project’s canonical repositories is hosted on Gothel Software.

Goals

Gamp addresses hardware accelerated graphics, audio, multimedia and processing. It is implemented in C++, supports WebAssembly and perhaps interfacing w/ other languages/systems.

Gamp replicates JogAmp’s experience natively via C++ in a condensed form, allowing a similar workflow on native targets and within the browser via WebAssembly.

Ironically this will bring back runs everywhere including_the web_.

Initial goal is to reimplement Graph/GraphUIutilizing Rami Santina’s Resolution independent NURBS curves rendering using programmable graphics pipeline 2011 (paper,slides).

Gamp uses jaulib for general purpose functionality including linear algebra and geometry.

Coverage

Video Clips

Online WebAssembly Examples

Earlier Work

gfxbox2of our CS class evaluated the C++ to WebAssembly path earlier.

Status

This project is currently very much unstable and heavily_WIP_.

All APIs, if any, will change - but I thought it is nice to share the development with whoever might be interested.

TODO List

API Documentation

C++ API documentation, with topics:

Supported Platforms

Build Dependencies

Install on Debian or Ubuntu

Installing build dependencies for Debian >= 12 and Ubuntu >= 22:

apt install git
apt install build-essential g++ gcc libc-dev libpthread-stubs0-dev
apt install clang-18 clang-tidy-18 clangd-18 clang-tools-18 clang-format-18
apt install libunwind8 libunwind-dev
apt install cmake cmake-extras extra-cmake-modules pkg-config
apt install libsdl2-dev libsdl2-image-dev libsdl2-ttf-dev libsdl2-mixer-dev
apt install doxygen graphviz
apt install emscripten

If using optional clang toolchain, perhaps change the clang version-suffix of above clang install line to the appropriate version.

After complete clang installation, you might want to setup the latest version as your default. For Debian you can use this clang alternatives setup script.

Build Procedure

Build preparations

git clone --recurse-submodules git://jausoft.com/srv/scm/gamp.git
cd gamp

CMake Build via Presets

Analog to jaulib CMake build presets

Following debug presets are defined inCMakePresets.json

Kick-off the workflow by e.g. using preset release-gccto configure, build, test, install and building documentation. You may skip install and doc by dropping it from--target.

cmake --preset release-gcc
cmake --build --preset release-gcc --parallel
cmake --build --preset release-gcc --target test install doc

You may utilize scripts/build-preset.sh for an initial build, install and test workflow.

CMake Build via Hardcoded Presets

Analog to jaulib CMake hardcoded presets

Besides above CMakePresets.json presets,JaulibSetup.cmake contains hardcoded presets for_undefined variables_ if

The hardcoded presets resemble debug-clang presets.

Kick-off the workflow to configure, build, test, install and building documentation. You may skip install and doc by dropping it from --target.

rm -rf build/default
cmake -B build/default
cmake --build build/default --parallel
cmake --build build/default --target test install doc

The install target of the last command will create the include/ and lib/ directories with a copy of the headers and library objects respectively in your dist location.

CMake Variables

Our cmake configure has a number of options, cmake-gui or_ccmake_ can show you all the options. The interesting ones are detailed below:

See jaulib CMake variables for details.

Unit Testing

TBD

Build Status

Will be updated

IDE Integration

Eclipse

Tested Eclipse 2024-03 (4.31).

IDE integration configuration files are provided for

The Hardcoded CMake Presets will use build/default as the default build folder with debug enabled.

Make sure to set the environment variableCMAKE_BUILD_PARALLEL_LEVEL to a suitable high number, best to your CPU core count. This will enable parallel build with the IDE.

You can import the project to your workspace viaFile . Import... andExisting Projects into Workspace menu item.

For Eclipse one might need to adjust some setting in the.project and .cproject (CDT) via Eclipse settings UI, but it should just work out of the box.

Otherwise recreate the Eclipse project by

VSCodium or VS Code

IDE integration configuration files are provided for

For VSCodium one might copy the example root-workspace file to the parent folder of this project (note the filename change) and adjust the path to your filesystem.

cp .vscode/gamp.code-workspace_example ../gamp.code-workspace
vi ../gamp.code-workspace

Then you can open it viaFile . Open Workspace from File... menu item.

Gamp is lead by Gothel Software.

If you like to utilize Gamp in a commercial setting, please contact Gothel Software to setup a potential support contract or just help to fund the ongoing effort.

Common issues

Bugtracker etc to be setup at a later stage.

Changes

See Changes.