@graphical-playground/gp-engine
Table of content
Overview
┕ Getting Started
┕ Prerequisites
┕ Building the Engine
┕ Gallery
Architecture
┕ Core Systems
┕ Progressive Abstractions
┕ Rendering Pipelines (OpenGL / Vulkan / DirectX / ...)
Usage & Experimentation
┕ Sample Projects
┕ Shader Programming
Documentation
┕ API Reference
┕ Learning Paths
Contributing
┕ Code of Conduct
┕ Security
┕ License
┕ Donations
gp-engine is a C++ graphics engine specifically engineered for learning, experimentation, and teaching modern rendering architectures.
Built around a Deconstructionist Pedagogy, the engine bridges the gap between high-level creative
tools and low-level hardware programming. Rather than hiding complexity behind a black-box system,
gp-engine provides progressive abstractions over modern rendering APIs (OpenGL and Vulkan). It
empowers users to tear down, study, modify, and cleanly reimplement core graphics concepts, from
foundational rendering algorithms to advanced GPU architectures, without needing to master millions
of lines of legacy code.
Welcome to the Graphical Playground ecosystem. To start experimenting with gp-engine, you will need
to clone the repository and set up the build environment. The engine is built using a modern C++23
toolchain and relies on a modular, production-grade architecture.
First, clone the repository along with its submodules:
git clone --recursive https://github.com/GraphicalPlayground/gp-engine.git
cd gp-engineBecause gp-engine takes advantage of modern graphics APIs and the latest C++ features, ensure
your development environment meets the following requirements:
- Compiler: A C++23 compatible compiler (GCC 13+, Clang 16+, or MSVC 19.38+)
- Build System: CMake (Version 3.20 or higher)
- Graphics Drivers: Up-to-date GPU drivers with support for:
- Vulkan
tba - OpenGL
tba - DirectX
tba(Windows only) - Metal
tba(macOS only)
- Vulkan
The engine uses standard CMake build procedures. We recommend performing an out-of-source build to keep your project directory clean.
1. Generate build files:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release(Note: You can pass
-DGP_USE_VULKAN=ONor-DGP_USE_OPENGL=ONdepending on the rendering backend you wish to target.). Read the documentation for more details on configuring rendering backends.
2. Compile the project:
cmake --build build --config Release -j$(nproc)Once the build successfully completes, the compiled binaries and sample experimentation projects
will be located in the binaries/bin/ directory. You can run one of the basic sample
executables to verify that the rendering pipeline and windowing context have initialized correctly.
wip...
wip...
wip...
wip...
wip...
wip...
wip...
wip...
Comprehensive documentation for gp-engine is hosted on our main documentation portal. Whether you
are building your first triangle or writing a custom Vulkan rendering pass, our guides are designed
to support your experimentation.
Our detailed C++ API documentation outlines the core classes, rendering pipelines, and math
libraries that make up gp-engine. If you are extending the engine or modifying its core
components, please review our C++ guides and formatting rules to ensure your code aligns
with the project's architecture.
Graphical Playground is built around a Deconstructionist Pedagogy, we want you to tear the engine apart and learn how it works. To help guide your studies, we have curated structured learning paths that take you from foundational graphics programming concepts to advanced engine architecture.
We welcome contributions from graphics enthusiasts, students, and rendering engineers! Whether you are fixing a bug, implementing a new Vulkan rendering pass, or improving our documentation, your help is appreciated. Please see our full CONTRIBUTING.md guide for detailed information on our C++23 coding standards, CMake build workflows, and the pull request review process.
To ensure a welcoming, collaborative, and inclusive environment for everyone learning and building within the Graphical Playground ecosystem, all contributors and participants are expected to adhere to our Code of Conduct. Please review it before engaging in community discussions or submitting code.
If you discover a security vulnerability within gp-engine (such as buffer overflows in the
rendering backend, dependency issues, or unsafe shader compilation vectors), please do not report
it by opening a public issue. Instead, refer to our Security Policy for
instructions on how to securely disclose the vulnerability to the maintainers.
gp-engine is open-source software. Please see the LICENSE.md file in the root
directory for full terms regarding modification, distribution, and use in your own projects.
If you find gp-engine helpful for your learning, academic research, or game development journey,
please consider supporting the project. Maintaining a modern C++ graphics engine takes
significant time and resources!
You can sponsor the Graphical Playground project through the following links:
You can see the full list of sponsors and supporters on our Sponsors Page or in DONORS.md. Your support helps us continue to develop high-quality educational resources and maintain the engine for the next generation of graphics engineers.
© 2026 Graphical Playground. Built for the next generation of graphics engineers.