Lightweight and modern 3D demo with OpenGL
This is a hobby 3D graphics project, primarily for learning more about rendering, developed on Linux.
Bouncing ball behaviour with shadows
Terrain mesh with shadows and skybox
- OpenGL 4.5+
- Modern OpenGL backend using Direct State Access (DSA)
- Efficient rendering pipeline with shared buffer access and draw batching to limit state switching
- Multiple rendering passes for deferring lighting and shadows
- GLTF model support with tinygltf
- ECS architecture
- Behaviour components for adding scripts to objects
- Lua script support
This project uses CMake without any special requirements, and can be built for example:
mkdir build
cmake -B build
cmake --build build
After building, launch OpenGL-Demo from the build folder, for example:
// Assuming current directory is the project root
./build/src/OpenGL-Demo
The is a long term ongoing personal project, I would like to reach the following milestones in time:
- Improved shadows
- Particle effects
- Advanced lighting effects
- Animations
This project is licensed under the MIT license (see LICENSE)
This project makes use of the following 3rd party libraries:
- glad
- glfw
- glm
- nlohmann (JSON parser)
- sol2 (LUA library)
- lua
- stb
- tinygtlf

