The goal of this project is to build a foundation for research in high-performance computer graphics with aim on integrating neural networks into existing pipelines.
-
Vulkan:
- Fully automatic resource management with my helper library vulkan_backend
- Support for GLSL, Slang and SPIR-V shaders
- Bindless textures and buffers
- Graphics pipeline library
- MSAA
-
Engine:
- Physically-based rendering (PBR) with metallic-roughness pipeline
- glTF 2.0 scene loading
- Entity component system based on EnTT
- Scene graph
- Editor
This project targets Vulkan 1.3 and C++20 with plans to remove headers entirely in favour of named modules and the C++23 std module. Currently it compiles successfully with recent releases of GCC, Clang and MSVC.
- Clone the Repository:
git clone https://github.com/noir-nik/NRay.git
cd NRay
git submodule update --init --recursive
- Build the Project:
mkdir build
cd build
cmake ..
cmake --build . -j8
- Render a Scene:
./NRay <path-to-gltf>
You can inspect your scene using Maya-like controls.
- Ray Tracing: research of ray tracing acceleration methods including BVH traversal with machine learning.
- Differentiable rendering: optimization of materials and textures with the help of Slang automatic differentiation.
- Neural rendering of meshes and volumes and replacing PBR lighting functions with neural networks.
This project is licensed under the MIT License.
Asset used in preview was created by me using industry standard PBR metallic-roughness pipeline