RayZen is a modern, open-source GPU-accelerated path tracer written in C++ and OpenGL. It is designed for real-time physically-based rendering (PBR) of 3D scenes, supporting advanced features such as BVH acceleration, dynamic scene support, SSBO caching, debug overlays, and interactive camera controls. RayZen is ideal for graphics research, education, and as a foundation for your own renderer.
- Real-Time Path Tracing: Physically-based global illumination using GPU fragment shaders.
- BVH Acceleration: Fast ray traversal using a Bounding Volume Hierarchy (BLAS/TLAS) for high performance.
- Dynamic Scene Support: BVH and SSBOs are rebuilt on-the-fly for moving objects.
- SSBO Caching: BVH and triangle data are cached to disk for fast startup.
- Physically-Based Materials: Support for metallic, dielectric, rough, and transparent materials.
- Multiple Light Types: Point and directional lights.
- OBJ Mesh Loading: Import and render standard OBJ meshes.
- Interactive Camera: WASD movement and mouse look.
- Debug Overlays: Toggle light markers, BVH wireframes, and BLAS/TLAS debug modes.
- Modular C++ Design: Clean, extensible codebase.
Run the provided script to install all dependencies:
bash install_requirements.shgit clone https://github.com/PetoAdam/RayZen.git
cd RayZen/RayZen
mkdir build && cd build
cmake ..
make
./RayZen- WASD: Move camera
- Mouse Drag (LMB): Rotate camera
- L: Toggle light debug markers
- B: Toggle BVH wireframe debug
- N: Toggle BVH debug mode (TLAS/BLAS)
- ESC: Exit
src/— C++ source filesinclude/— C++ headersshaders/— GLSL shadersmeshes/— Example OBJ meshesdocs/— Documentation
- User & Build Guide: See this README.
- Technical & Mathematical Details: See
docs/TECHNICAL_DETAILS.mdfor an in-depth explanation of the rendering algorithms, BVH, and system architecture.
Contributions are welcome! Please open issues or pull requests for bug fixes, new features, or improvements.
This project is licensed under the MIT License. See the LICENSE file for details.
