- A simple OpenGL based graphics engine, built to learn C++ and graphics programming
- This isn't a serious, production-quality engine, please don't treat it as one
- Despite the project being for learning, any contributions are still welcome
- See
docs/CONTRIBUTING.md
to get started - If you found this project interesting, any donations are greatly appreciated :)
- See
- Model loading, using
libassimp
- Internal thread pool
- Shader program caching
- Keyboard and mouse input handling
- A
c++23
compatible compiler (g++ 12+
/clang 17+
)- Toolchain support for thread-local variables
- All build and runtime dependencies installed
- A 64-bit Linux system
- Some functions may have AVX-512 / VAES accelerated versions
- Build with
FAST=true
to enable these, if supported
- An OpenGL 4.5+ compatible driver
- Alternatively, an OpenGL 3.2+ driver supporting the following extensions can be used
ARB_direct_state_access
ARB_shader_storage_buffer_object
ARB_texture_storage
ARB_texture_cube_map_array
- OpenGL debugging is supported with
KHR_debug
- Program caching is supported with
ARB_get_program_binary
- No error contexts are supported with
KHR_no_error
make library
sudo make install
make build
will compile the library and all demos on the current branch- Demos can be listed with
./launch.sh --demo
- Run a specific demo with
./launch.sh --demo [DEMO]
- For example:
./launch.sh --demo object-field
- Running the binary directly will only work if
libammonite
is installed to the system
- For example:
make clean
will clean the build area, to start from fresh- Screenshots of some demos can be found at the end of the README
- Compiled demos have a few arguments supported:
--help
: Displays a help menu--benchmark
: Start a benchmark--demo
: List available demos--demo [DEMO]
: Launch a specific demo--vsync
: Enable / disable VSync (true
/false
)
-
build
andlibrary
support-j[CORE COUNT]
make build
- Builds the demo and thread demomake library
- Buildsbuild/libammonite.so
make install
- Installslibammonite.so
to system directories- The install path can be configured, by setting the environment variable
INSTALL_DIR
- The install path can be configured, by setting the environment variable
make headers
- Installs Ammonite headers to the system- The install path can be configured, by setting the environment variable
HEADER_DIR
- The install path can be configured, by setting the environment variable
make uninstall
- Removes installed library- Custom install locations can be removed using the environment variable
INSTALL_DIR
- Custom install locations can be removed using the environment variable
make clean
- Cleans the build area (build/
) and default runtime cache (cache/
)
- All targets and optional flags are documented here
- Package names are correct for Debian, other distros may vary
make
pkg-config
coreutils
g++
ORclang
- If using clang, use
CXX="clang++" make [TARGET]
- When swapping between different compilers, run
make clean
- If using clang, use
-
libglm-dev libglfw3-dev libglew-dev libstb-dev libassimp-dev
libdecor-0-0 libdecor-0-plugin-1-gtk
are required for Wayland window decorations
-
clang-tidy
-
inkscape optipng
- Due to the small size of this project, only a small range of hardware can be tested
- If you hardware / driver meets the requirements listed here, but the engine doesn't work, please file a bug report
- Issues, feature requests and bug reports can be filed here
- Feel free to work on any issues / feature ideas, suggestions are welcome :)
- Some very basic usage information can be found in
docs/USAGE.md
- Better documentation is planned in the future
- Some models in
assets/
may have been created by third parties, attribution can be found indocs/CREDITS.md
- Reference materials:
- This project is available under the terms of the MIT License
- These terms can be found in
LICENCE.txt
- These terms can be found in