Skip to content

nagard98/zorya-renderer

Repository files navigation

Warning! It's still a work in progress, far from being stable.

A DX11 real-time renderer developed as a way to experiment with interesting rendering and engine features. Uses a Render Graph to ease the implemenentation of new features by automatically managing transient resources (currently only textures, not constant buffers). One of the main features is the presence of multiple subsurface scattering techniques. Planning to also integrate a DX12 backend.

feature

Features

  • Deferred Renderer
  • Phisically Based Rendering
  • Render Graph for management of transient resources (inspired by Frostbite's Halcyon Engine )
  • Abstract Render Command List
  • Subsurface scattering algorithms
  • Directional, Point & Spot lights
  • Shader Reflection
  • Custom Arena & Pool Allocator

Subsurface Scattering

Multiple subsurface scattering techniques are supported, specifically:

  • Jimenez Gaussian [Jim09]
  • Jimenez Separable [Jim15]
  • Golubev [Gol18]
  • Golubev Plus (an extension developed during my thesis that improves performance, while keeping the quality approximately the same)
gauss_med separable_med golubev_med golubev+_med

Planning

Some of the features with highest priority that I plan to implement:

  • DX12 backend
  • Surfel based Global Illumination
  • Screen Space Shadows (Contact Shadows)
  • SSAO
  • SSR
  • Volumetric Rendering
  • Water Rendering
  • Virtual Geometry (maybe)

3rd Party Libraries

The external libraries used inside this project:

  • assimp
  • stb_image
  • xxHash
  • imgui
  • libyaml
  • DirectXMath

About

DX11 real-time renderer developed in C/C++

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published