PIKA is a Vulkan-based renderer designed for mobile ray tracing and DDGI-based global illumination.
The renderer was developed to support ray tracing and global illumination in performance-constrained mobile environments. It provides multiple rendering paths so that different implementations can be evaluated and compared under the same framework.
The ray tracing implementation is divided into two API-level approaches:
| Type | Description |
|---|---|
| Ray Tracing | Uses Vulkan ray tracing pipeline-based execution. |
| Ray Query | Uses inline ray queries inside shader stages. |
The renderer is also divided into two rendering architecture categories:
| Type | Description |
|---|---|
| Hybrid Ray Tracer | Performs deferred rasterization first, then applies ray tracing or ray query for selected effects. |
| Full Ray Tracer | Uses ray tracing or ray query as the primary rendering method. |
In terms of lighting features, the ray tracers are further classified into:
| Type | Description |
|---|---|
| Whitted-style Ray Tracer | Supports basic ray tracing effects such as reflection, refraction, and shadow. |
| DDGI Ray Tracer | Supports probe-based dynamic diffuse global illumination using DDGI. |
Each renderer can be switched in real time through the UI. The project runs on devices that support Vulkan ray tracing or ray query extensions, as well as devices that do not support these extensions. On devices without ray tracing or ray query support, only the deferred rasterization renderer is available.
PIKA provides the following rendering modes:
| Renderer | Rendering Architecture | Ray API | Global Illumination |
|---|---|---|---|
| Deferred Rasterization Renderer | Deferred rasterization | None | None |
| Full Ray Tracing (FRT) | Full ray tracer | Ray tracing pipeline | None |
| Full Ray Query (FRQ) | Full ray tracer | Ray query | None |
| Full Ray Tracing DDGI | Full ray tracer | Ray tracing pipeline | DDGI |
| Full Ray Query DDGI | Full ray tracer | Ray query | DDGI |
| Hybrid Ray Tracing (HRT) | Hybrid ray tracer | Ray tracing pipeline | None |
| Hybrid Ray Query (HRQ) | Hybrid ray tracer | Ray query | None |
| Hybrid Ray Tracing DDGI | Hybrid ray tracer | Ray tracing pipeline | DDGI |
| Hybrid Ray Query DDGI | Hybrid ray tracer | Ray query | DDGI |
| Path Tracer | Path tracing | Ray tracing pipeline | Path-traced global illumination |
- Vulkan-based rendering framework
- Mobile-oriented ray tracing renderer
- Vulkan ray tracing pipeline support
- Vulkan ray query support
- Deferred rasterization renderer
- Hybrid ray tracing and ray query renderers
- Full ray tracing and ray query renderers
- DDGI-based dynamic diffuse global illumination
- Whitted-style reflection, refraction, and shadow
- Path tracing renderer
- Runtime renderer switching through UI toggles
- Fallback deferred rasterization path for devices without ray tracing or ray query support
Additional technical details and evaluation results are provided in the docs directory.
| Document | Description |
|---|---|
| Mobile-DDGI | Describes the Mobile-DDGI algorithm, including adaptive probe update, probe importance metric, probe state machine, and rendering pipeline. |
| Results | Summarizes rendering results, performance measurements, and comparisons across supported rendering modes. |
This project uses custom glTF assets prepared for research purposes.
The asset directory should follow a structure similar to the one used in Sascha Willems' Vulkan Assets repository.
Expected asset directory structure:
assets
├── renderer_config.ini
├── models
├── textures
├── Roboto-Medium.ttf
└── Roboto-Medium-license.txt
The renderer is configured through renderer_config.ini.
Example:
[AppContext]
width=2560
height=1440
overlay=1
validation=0
vsync=0
fullscreen=0
compile_shaders=1
[Asset]
# config_path=models/cornellbox/CornellBox.json| Field | Description |
|---|---|
width |
Initial window width. |
height |
Initial window height. |
overlay |
Enables or disables the UI overlay. |
validation |
Enables or disables Vulkan validation layers. |
vsync |
Enables or disables vertical synchronization. |
fullscreen |
Enables or disables fullscreen mode. |
compile_shaders |
Enables or disables shader compilation at startup. |
| Field | Description |
|---|---|
config_path |
Path to the scene configuration JSON file used for loading a glTF asset. |
For detailed instructions on model placement, scene configuration JSON files, texture paths, and required asset files, see:
| Input | Action |
|---|---|
W |
Move forward |
S |
Move backward |
A |
Move left |
D |
Move right |
E |
Move up |
Q |
Move down |
R |
Reset to the original camera position and rotation |
| Input | Action |
|---|---|
| Left mouse button | Rotate camera using pitch and yaw |
| Right mouse button | Roll camera |
| Middle mouse button | Move camera along the X and Y axes |
| Mouse wheel | Move camera forward or backward |
| Input | Action |
|---|---|
→ |
Increase yaw |
← |
Decrease yaw |
↓ |
Decrease pitch |
↑ |
Increase pitch |
| Input | Target | Action |
|---|---|---|
- |
Keyboard movement speed: W, A, S, D, E, Q |
Decrease speed |
+ |
Keyboard movement speed: W, A, S, D, E, Q |
Increase speed |
{ |
Mouse control speed: left, middle, and right mouse buttons | Decrease speed |
} |
Mouse control speed: left, middle, and right mouse buttons | Increase speed |
-
Taekgeun You.
"Development and Performance Profiling of a Mobile Ray Tracing System Supporting Global Illumination."
Master's thesis, Graduate School of Sogang University, Seoul, Korea, 2026. -
T. You, W. Seo, D. Han, and I. Ihm.
"Mobile-DDGI: Lightweight Probe-Based Global Illumination via Adaptive Budget Allocation."
2026 ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games, I3D '26 Posters, San Francisco, U.S.A., May 2026.
Paper Poster
-
Sascha Willems' Vulkan Repository
This project is based on Sascha Willems' Vulkan project structure and examples. -
Sascha Willems' Vulkan Assets Repository
Used as a reference for the expected asset directory structure. -
NVIDIA RTXGI-DDGI
Reference implementation and documentation for RTXGI and DDGI. -
Dynamic Diffuse Global Illumination with Ray-Traced Irradiance Fields
JCGT 2019 paper introducing DDGI with ray-traced irradiance fields. -
Scaling Probe-Based Real-Time Dynamic Global Illumination for Production
JCGT 2021 paper on scaling DDGI-style probe-based global illumination for production use. -
Ray Tracing the World of Assassin's Creed Shadows
Ubisoft presentation on ray tracing and global illumination in Assassin's Creed Shadows. -
Adaptive Dynamic Global Illumination
Project page for ADGI, an adaptive extension of probe-based dynamic global illumination. -
Adaptive Dynamic Global Illumination Paper
Paper describing adaptive resource allocation for dynamic global illumination. -
MicroWerner's VkRadixSort
Vulkan-based radix sort implementation used as a reference for GPU sorting.
This project is not distributed under the MIT License as a whole.
PIKA contains original work by Taekgeun You and may also include or reference third-party components, algorithms, assets, and code governed by their own licenses. In particular, this project is based on Sascha Willems' Vulkan project structure and examples, which are distributed under the MIT License. DDGI-related references and implementations may be governed by different license terms, including NVIDIA RTXGI/DDGI-related licenses.
Third-party components remain under their original licenses.
See the LICENSE file for the full license terms and third-party license notices.