Skip to content

Latest commit

 

History

History
74 lines (55 loc) · 2.19 KB

README.md

File metadata and controls

74 lines (55 loc) · 2.19 KB

NRay

Rendering Engine with Vulkan backend

Editor preview

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.

Features:

  1. 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
  2. Engine:

    • Physically-based rendering (PBR) with metallic-roughness pipeline
    • glTF 2.0 scene loading
    • Entity component system based on EnTT
    • Scene graph
    • Editor

Requirements

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.

Dependencies:

Installation

  1. Clone the Repository:
git clone https://github.com/noir-nik/NRay.git
cd NRay
git submodule update --init --recursive
  1. Build the Project:
mkdir build
cd build
cmake ..
cmake --build . -j8
  1. Render a Scene:
./NRay <path-to-gltf>

You can inspect your scene using Maya-like controls.

Future plans:

  1. Ray Tracing: research of ray tracing acceleration methods including BVH traversal with machine learning.
  2. Differentiable rendering: optimization of materials and textures with the help of Slang automatic differentiation.
  3. Neural rendering of meshes and volumes and replacing PBR lighting functions with neural networks.

License

This project is licensed under the MIT License.


Asset used in preview was created by me using industry standard PBR metallic-roughness pipeline