kririae / envoy

Envoy: an experimental BVH system

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Envoy

linux

Envoy is an experimental and personal(for now) BVH backend for renderers, with the following ideas inspired by Nanite and Disney Hyperion Renderer,

  1. Generally, a single mesh manipulated on an artist's workstation is relatively easy to process.
  2. The number of these meshes can be large in industrial cases.
  3. Some post-processing or simplification can be performed on these meshes to achieve real-time performance in exchange for negligible visual effects.
  4. LoD is required to achieve maximum performance. There's no need to perform that large number of triangle intersections even if BVH effectively reduces the effort.
  5. While assets need to be loaded from disk (streaming or virtual geometry), the latency of intersection can be large. Techniques to reduce or hide latency are required. We want to make this process not that intrusive.

Usage

xmake is required. Just download this repository, install all the dependencies through xmake, then execute xmake r envoy.

TODO

  • SIMD triangles intersection
  • Complement simple non-continuous partition with Z-order curve
  • Implement "Maximizing Parallelism in the Construction of BVHs" with mesh partition
  • Implement page management system between disk and memory
  • Test partition heuristics with METIS
  • Implement or use CGAL to simplify mesh and build the LoD DAG presented in Nanite
  • Implement the real-time LoD DAG splitting

About

Envoy: an experimental BVH system


Languages

Language:C++ 95.8%Language:Lua 4.0%Language:Shell 0.2%