{"id":24313634,"url":"https://github.com/stuarthayhurst/ammonite-engine","last_synced_at":"2025-09-26T19:31:24.799Z","repository":{"id":39965143,"uuid":"440551625","full_name":"stuarthayhurst/ammonite-engine","owner":"stuarthayhurst","description":"A simple OpenGL based graphics engine for experiments","archived":false,"fork":false,"pushed_at":"2025-01-05T02:35:40.000Z","size":4545,"stargazers_count":3,"open_issues_count":10,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-09T03:08:08.352Z","etag":null,"topics":["cpp","engine","opengl"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stuarthayhurst.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":null,"code_of_conduct":"docs/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"stuarthayhurst","custom":"https://paypal.me/stuartahayhurst"}},"created_at":"2021-12-21T14:49:28.000Z","updated_at":"2025-01-05T02:35:44.000Z","dependencies_parsed_at":"2023-10-20T17:50:38.507Z","dependency_job_id":"0cdfb21f-f89f-4d9f-91f8-5ad13c8f1d93","html_url":"https://github.com/stuarthayhurst/ammonite-engine","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stuarthayhurst%2Fammonite-engine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stuarthayhurst%2Fammonite-engine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stuarthayhurst%2Fammonite-engine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stuarthayhurst%2Fammonite-engine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stuarthayhurst","download_url":"https://codeload.github.com/stuarthayhurst/ammonite-engine/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234338050,"owners_count":18816450,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","engine","opengl"],"created_at":"2025-01-17T09:12:43.399Z","updated_at":"2025-09-26T19:31:24.794Z","avatar_url":"https://github.com/stuarthayhurst.png","language":"C++","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/stuarthayhurst/ammonite/raw/master/assets/icons/icon.svg\" alt=\"ammonite\" width=\"200px\"\u003e\n\u003c/p\u003e\n\n## Ammonite Engine\n[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://paypal.me/stuartahayhurst)\n  - A simple OpenGL based graphics engine, built to learn C++ and graphics programming\n    - This isn't a serious, production-quality engine, please don't treat it as one\n  - Despite the project being for learning, any contributions are still welcome\n    - See `docs/CONTRIBUTING.md` to get started\n    - If you found this project interesting, any donations are greatly appreciated :)\n\n## Features:\n  - Model loading, using `libassimp`\n  - Shader program caching\n  - Key binding and mouse input support\n  - Command prompt for engine control\n  - Miscellaneous utilities (thread pool, thread-safe logging, timers, random number generation)\n\n## Requirements:\n  - A `c++23` compatible compiler (`g++ (14+)` / `clang (18+)`)\n    - Toolchain support for thread-local variables\n    - All build and runtime dependencies installed\n  - A 64-bit Linux system\n    - Some functions may have AVX-512 / VAES accelerated versions\n    - Build with `FAST=true` to enable these, if supported\n  - An OpenGL 4.5+ compatible driver\n  - Alternatively, an OpenGL 3.2+ driver supporting the following extensions can be used\n    - `ARB_direct_state_access`\n    - `ARB_shader_storage_buffer_object`\n    - `ARB_texture_storage`\n    - `ARB_texture_cube_map_array`\n  - OpenGL debugging is supported with `KHR_debug`\n  - Program caching is supported with `ARB_get_program_binary`\n  - No error contexts are supported with `KHR_no_error`\n\n## Building + installing libammonite:\n  - `make library`\n  - `sudo make install`\n\n## Running a demo:\n  - `make build` will compile the library and all demos on the current branch\n  - Demos can be listed with `./launch.sh --demo`\n  - Run a specific demo with `./launch.sh --demo [DEMO]`\n    - For example: `./launch.sh --demo object-field`\n    - Running the binary directly will only work if `libammonite` is installed to the system\n  - `make clean` will clean the build area, to start from fresh\n  - Screenshots of some demos can be found at the end of the README\n\n## Options:\n  - Compiled demos have a few arguments supported:\n    - `--help`: Displays a help menu\n    - `--benchmark`: Start a benchmark\n    - `--demo`: List available demos\n    - `--demo [DEMO]`: Launch a specific demo\n    - `--vsync`: Enable / disable VSync (`true` / `false`)\n\n## Build system:\n  - ### Targets:\n    - `build` and `library` support `-j[CORE COUNT]`\n    - `make build` - Builds the demo\n    - `make library` - Builds `build/libammonite.so`\n    - `make install` - Installs `libammonite.so` to the system\n    - `make headers` - Installs Ammonite headers and `ammonite.pc` to the system\n    - `make uninstall` - Removes installed library and headers\n      - Custom install locations must be specified the same way as they were installed\n    - `make clean` - Cleans the build area (`build/`) and default runtime cache (`cache/`)\n  - All targets and optional flags are documented [here](docs/CONTRIBUTING.md#build-system)\n  - Set the environment variable `PREFIX_DIR` to configure the base install path\n    - The `install`, `headers` and `uninstall` targets have additional path options\n\n## Dependencies:\n  - Package names are correct for Debian, other distros may vary\n  - `make`\n  - `pkgconf`\n  - `coreutils`\n  - `sed`\n  - `python3`\n  - `g++` **OR** `clang`\n    - If using clang, use `CXX=\"clang++\" make [TARGET]`\n      - `USE_LLVM_CPP=true` might be useful for systems without (a new enough) GCC\n    - When swapping between different compilers, run `make clean`\n  - ### Libraries:\n    - `libglm-dev libglfw3-dev libepoxy-dev libstb-dev libassimp-dev`\n    - `libdecor-0-0 libdecor-0-plugin-1-gtk` are required for Wayland window decorations\n  - ### Linting:\n    - `clang-tidy (21+)`\n  - ### Icons:\n    - `inkscape optipng`\n\n## Issues:\n  - Due to the small size of this project, only a small range of hardware can be tested\n    - If you hardware / driver meets the requirements listed [here](#requirements), but the engine doesn't work, please file a bug report\n  - Issues, feature requests and bug reports can be filed [here](https://github.com/stuarthayhurst/ammonite/issues)\n  - Feel free to work on any issues / feature ideas, suggestions are welcome :)\n\n## Usage:\n  - Some very basic usage information can be found in `docs/USAGE.md`\n  - Better documentation is planned in the future\n\n## Screenshots:\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/stuarthayhurst/ammonite/raw/master/docs/demo-1.png\" alt=\"Demo 1\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/stuarthayhurst/ammonite/raw/master/docs/demo-2.png\" alt=\"Demo 2\"\u003e\n\u003c/p\u003e\n\n## Credits:\n - Some models in `assets/` may have been created by third parties, attribution can be found in `docs/CREDITS.md`\n - Reference materials:\n   - [OpenGL Tutorial](https://www.opengl-tutorial.org/)\n   - [Learn OpenGL](https://learnopengl.com/Introduction)\n\n## License\n  - This project is available under the terms of the MIT License\n    - These terms can be found in `LICENCE.txt`\n","funding_links":["https://github.com/sponsors/stuarthayhurst","https://paypal.me/stuartahayhurst"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstuarthayhurst%2Fammonite-engine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstuarthayhurst%2Fammonite-engine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstuarthayhurst%2Fammonite-engine/lists"}