Rabbithole
3D game engine using Vulkan API
Install / Use
/learn @dekanac/RabbitholeREADME
rabbithole
3D Game Engine written in C++ and Vulkan using GLTF models


Rabbithole editor style using Dear ImGui

<b>List of features:</b>
- <b>Texture Debugging</b>

- <b>Light params</b>
- <b>SSAO params</b>
- <b>Volumetric Fog</b>
- <b>GPU Profiler</b>
Raytraced shadows and denoiser

- software raytracing using compute shaders
- support for multiple lights (up to 4 for now)
- fully raytraced shadows with soft shadows
- support for omni and directional lighting (point and area)
- fully integrated AMD FX Shadows Denoiser <url>https://gpuopen.com/fidelityfx-denoiser</url>
- tweaking light size will soften the shadow

FSR 2.0 upscaling
- upscaling with multiple modes and resolution scale factors
- https://gpuopen.com/fidelityfx-superresolution-2
Volumetric Fog

- volumetric fog with multiple lights support in compute shader with raytraced shadows
- implementation based on Bart Wronski's idea from SIGGRAPH 2014 : <url>https://bartwronski.com/publications/</url>
Bloom
- bloom fully implemented in compute shader
- based on http://www.iryoku.com/next-generation-post-processing-in-call-of-duty-advanced-warfare
- 5 downscale passes into mips of a single texture with temporally stable box filtering
- 5 upscale passes back to original resolution with tent filtering
- whole bloom pass, with apply (on RTX3070) takes less than 0.3ms on 1080p resolution
SSAO

- ssao generation using compute shader (fragment shader option also available)
- simple cheap blur
- less then 0.6ms in total on RTX3070
Other features
- PBR technique for lighting and tweakable basic SSAO for ambient occlusion
- GLTF models
- SPIR-V reflection and VMA for shader reflection and GPU memory allocation
- ImGui <url>https://github.com/ocornut/imgui</url>
