/NarvalEngine

Engine with emphasis in physically based rendering techniques using ray and path tracing.

Primary LanguageC++MIT LicenseMIT

Narval Engine

Engine with emphasis in physically based rendering techniques using ray and path tracing. Our goal is to achieve real-time results with physical foundations. The goal in the near future is to incorporate the Vulkan API into the abstractation layer and enable the ray tracing extension for better real-time performance and ease of use.

Features

  • OpenGL support
    • Abstraction layer over the OpenGL API.
  • Scene editor
    • Allows to read from scene files and edit it in real time by changing object and material properties.
    • Can either use PBR in Real time mode or Pathtracer mode for path tracing with tiled rendering live visualization.
  • EXR and PNG frame export
    • Supports exporting the current frame both in EXR and PNG file formats.
  • CPU path tracing
    • Multi-threaded CPU path tracing supporting both volumetric and opaque objects.
    • Real-time visualization under the Scene Editor.
  • GPU path tracing
    • Supports only a single volumetric object for now.
    • Real-time visualization under the Scene Editor.
  • Scene file descriptor
    • Materials supported: Microfacet GGX, Emitters, Volumes in .vdb and .vol format.
    • Primitives supported: Point, Rectangle, Sphere, Volume, OBJ and GLTF files.
    • Pinpoint camera with support to aperture and focus (in path tracing mode only).
  • Node Editor
    • Supports Materials editing for surfaces and soon for volumes.
    • Simple Math Operations
  • Dark/Light Mode

Screenshots

Scene Editor

Camera can be moved around using W, A, S, D or dragging the mouse. Q and E for up and down movements.

Installation setup

Tested on windows 7 and 10. Should work with Linux..

Steps to compile:
  1. Install vcpkg
  2. vcpkg install openvdb
  3. git submodule init
  4. git submodule update
  5. mkdir build
  6. cd build
  7. cmake .. -DCMAKE_TOOLCHAIN_FILE=PathToYourVCPKG\vcpkg\scripts\buildsystems\vcpkg.cmake