/render_engine

Experimental vulkan render engine

Primary LanguageC++

Rener Engine - Fox Engine

Experimental vulkan render engine The goal is to create a flexible render engine that

  • supports multiple windows
  • place for making experimental render code.

Dependencies

Library uses

Multiple Window Support

A render engine is not only for games. Many scientific code uses rendering and compute. Sometimes the only goal is debugging some algorithm. For this purpose multiple window support is essential.

This render API supports this need. Imgui is integrated in a way that it supports multiple context. With different renderer definition one can visualize different things on different windows. multiple window support

This feature sounds easy but not. The most problematic things are with using elegantly the volk function table and how to integrate this with ImGui. See more in Logical Device ADR

Offscreen rendering

Sometimes it is not just about showing the result but saving it or forwarding it to other application. For this purpose this API supports headless rendering. Later on this can be used also to visualize it.

In this way one can distribute the load between a powerfull GPU and a less effective one (like an integrated). I.e.: Rendering and compute on the powerfull machine and then saving the image and visualizing it with an integrated GPU

Open TODOs:

  • Proper multi queue support
  • Parallel rendering support

Volume Rendering

Volume renderer is added to the API. Mostly for experimental reasons. Like computing AO. It is also a nice test of how to integrate Cuda compute inside rendering process. And using subpassload to achive better performance for ray marching. See more details in the Design decision section.

A simple volume rendering without AO

And with AO:

Volume renderer is added to the API. Mostly for experimental reasons. Like computing AO. It is also a nice test of how to integrate Cuda compute inside rendering process. And using subpassload to achive better performance for ray marching. See more details in the Design decision section.

A simple volume rendering without AO

And with AO:

Design decisions

There are some major design decision what was made during the library creation. Some of those are experimental decisions to figure out its consecvencies.

See

Ongoing TODOs: