Skip to content

ttaekgeun/PIKA

Repository files navigation

PIKA

Overview

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.


Renderers

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

Features

  • 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

Technical Documentation

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.

Assets

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

Renderer Configuration

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

AppContext

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.

Asset

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:

assets/README.md


Camera Interface

Keyboard Controls

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

Mouse Controls

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

Arrow Key Controls

Input Action
Increase yaw
Decrease yaw
Decrease pitch
Increase pitch

Camera Speed Controls

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

Related Papers

  1. 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.

  2. 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


References

  1. Sascha Willems' Vulkan Repository
    This project is based on Sascha Willems' Vulkan project structure and examples.

  2. Sascha Willems' Vulkan Assets Repository
    Used as a reference for the expected asset directory structure.

  3. NVIDIA RTXGI-DDGI
    Reference implementation and documentation for RTXGI and DDGI.

  4. Dynamic Diffuse Global Illumination with Ray-Traced Irradiance Fields
    JCGT 2019 paper introducing DDGI with ray-traced irradiance fields.

  5. Scaling Probe-Based Real-Time Dynamic Global Illumination for Production
    JCGT 2021 paper on scaling DDGI-style probe-based global illumination for production use.

  6. Ray Tracing the World of Assassin's Creed Shadows
    Ubisoft presentation on ray tracing and global illumination in Assassin's Creed Shadows.

  7. Adaptive Dynamic Global Illumination
    Project page for ADGI, an adaptive extension of probe-based dynamic global illumination.

  8. Adaptive Dynamic Global Illumination Paper
    Paper describing adaptive resource allocation for dynamic global illumination.

  9. MicroWerner's VkRadixSort
    Vulkan-based radix sort implementation used as a reference for GPU sorting.


License

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.

Releases

No releases published

Packages

 
 
 

Contributors