The 3D engine landscape is broadly divided into two categories:
- Proprietary in-house engines, which power successful games but are used exclusively within the studios that develop them.
- Proprietary general-purpose engines, which showcase impressive technology and are available to all developers, but often face challenges in helping the developer achieving full production maturity across diverse use cases.
GDevice aims to occupy a middle ground providing a lightweight, open-source ecosystem of modular and reusable components for real-time C++ applications, designed to unify CPU and GPU execution. It provides developers with a flexible foundation for building their own engine stack without starting from zero, while serving as a platform for experimental 3D rendering. The project includes an example 3D engine for large open worlds with seamless real-time streaming and procedurally generated content at run-time.
The engine implements a sophisticated terrain LOD (Level of Detail) system based on nested grids, conceptually similar to Geometry Clipmaps but independently designed. It enables Infinite terrain streaming and smooth level transitions in its GPU-based implementation.
The terrain is dynamically generated on the GPU, computing heights, gradients and textures in real time.
The engine provides vec2, vec3, mat4, and related types with syntax closely matching GLSL, including operator overloading and common functions like mix, clamp, and fract. This design allows math logic to be easily shared or ported between CPU and GPU.
The current walker demo primarily uses an object-oriented approach to scene management, while a transition to an ECS (Entity Component System) architecture is planned for a more data-oriented design.
A quasi physically-based rendering (PBR) pipeline is implemented, along with global illumination and atmospheric scattering.
- Highly optimized for Windows, leveraging SSE (Streaming SIMD Extensions) for math operations and Multi-threading.
- It uses specialized
VertexBufferandIndexBufferabstractions, which also support textures-based data storage (e.g. storing vertex attributes such as gradients and blend maps in textures). - A custom tool compiles GLSL shaders into C headers, embedding the shader source directly into the executable for zero-dependency deployment.
- C++
- OpenGL 4.5
- Windows
This project revisits and simplifies many best practices commonly used in professional environments, aiming to explore fundamental design questions such as:
- Can a 3D engine solution build in seconds—say, five?
- What is the simplest design that still works?
- Can C++ source code be written in a DRY style, similar to Java?
- How can a continuous, unsandboxed terrain LOD scheme possibly operate?
- How realistic can quasi physically-based rendering become?
- Is some form of global illumination achievable without pre-baking?
- How could atmospheric scattering and general volumetric rendering be implemented efficiently?
- What roles can procedurally generated content serve?
- Can materials (albedo, normals, etc.) be generated dynamically at runtime?
What began as a proof of concept for a terrain level-of-detail algorithm and a minimalist 3D engine gradually evolved into an open-ended journey through the uncharted intersections of real-time rendering and parallel computing, beyond the boundaries of enterprise settings where risk-taking is tightly constrained.
If you find what I do useful, or if you simply care about empowering creative people to keep building and innovating, please consider supporting a few hours of development or just offering a cup of coffee.
Thank you!
See BUILD.md for build instructions.








