kuafu
kuafu copied to clipboard
Real-Time Ray Tracer with Vulkan
Kuafu: A Real-Time Ray Tracing Renderer
Kuafu is real-time ray tracing renderer implemented using Vulkan. Kuafu supports physically based materials (PrincipledBSDF) and various realistic light settings. The project is developed as a rendering backend for the high-performance simulator SAPIEN. It can also serve as a standalone renderer / scene builder.

The name Kuafu (夸父) is from the Chinese mythology Kuafu chasing the Sun (夸父追日).
New: Active Light Sensing Support Now Added
Kuafu now features full active light sensing support. A Demo simulating Intel RealSense D415:

Compilation
TODO
Examples
mkdir build && cd build && cmake .. && make kuafu_example -j && ./kuafu_example;
Features & TODOs
-
Physically based materials (PrincipledBSDF / Disney PBR)
- [x] Diffuse
- [x] Diffuse texture
- [x] Specular
- [x] Specular texture
- [x] Roughness
- [ ] Oren–Nayar reflectance
- [ ] Roughness Metallic texture
- [x] Roughness texture
- [x] Transmission
- [x] Transmission texture
- [ ] Refraction w/ roughness
- [ ] Caustics
- [ ] Align behavior with Blender
- [ ] Beer's Law & Fresnel
- [x] Emission
- [ ] Align behavior with Blender
- [ ] Check numerical issues
- [ ] Normals texture
- [x] Diffuse
-
Realistic Lights
- [x] Directional Light (Sun / Distant)
- [x] Point Light
- [x] Spot Light
- [x] Active Light
- [x] Area Light
- [ ] Shadow ray traced area light
- [x] Environment Map
- [ ] Load from images
-
Pipeline
- [x] Image download
- [ ] Lazy image downloads
- [ ] Fix validation error when downloading
- [ ] Async rendering
- [ ] Separate scene from Renderer
- [ ] Depth download
- [ ] Segmentation download
- [ ] Offscreen rendering
- [x] Online shader compilation
- [ ] (Maybe) Use libgls
- [x] Hide render
- [ ] No rebuilding Blas
- [ ] As an instance property
- [x] Image download
-
Import / Export
- [x] Assimp scene loader
- [ ] Embedded materials
- [ ] Async loading
- [x] Load full glTF
- [x] Check with blender glTF
- Note: Blender (2.93) does not export Specular, IOR and Transmission
- [x] Check with blender glTF
- [ ] Load
.blend - [ ] Check
.objappearance with blender
-
Viewer
- [ ] Improve mouse control
- [ ] Fix segfault / vk Exceptions when resizing in SAPIEN
Acknowledgement
This project itself is licensed under the MIT License. A large portion of code in this repository is derived from open source projects e.g. Rayex, vkCore and vk_raytracing_tutorial_KHR. Please DO NOT remove license information in the headers. We sincerely thank Christian Hilpert for their substantial work on Rayex, which is the cornerstone of this project.