Who is this for?

This Learning Path is for Vulkan developers who are familiar with rendering and are interested in deploying ray tracing in their applications.

What will you learn?

Upon completion of this Learning Path, you will be able to:

  • Describe how the Vulkan ray tracing API works.
  • Describe how to use ray tracing to implement realistic shadows, reflections, and refractions.
  • Implement basic ray tracing effects in a Vulkan renderer.

Prerequisites

Before starting, you will need the following:

  • An appropriate Android device that supports the required Vulkan extensions (for example, Vivo X100).
  • Knowledge of the Vulkan API.
  • A Vulkan renderer. Most code is generic and should be easy to incorporate into any deferred PBR renderer.

Summary

AI-assisted

This summary was drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.

Close
?
You’ll add Vulkan ray tracing effects to an Android renderer. First, you’ll query and enable the required extensions, then use a ray tracing pipeline or ray queries to traverse the scene. After that, you’ll build acceleration structures and use bindless resources for material data. Finally, you’ll implement reflections, shadows, and refractions, and use Arm tools to debug and optimize ray traversal.

Frequently asked questions

AI-assisted

These FAQs were drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.

Close
?
How do I know my Android device can run the ray tracing steps?
Confirm that the device exposes the required Vulkan ray tracing extensions. Immortalis GPUs such as Immortalis‑G715, Immortalis‑G720, and Immortalis‑G925 support ray tracing, while some Mali G7‑series GPUs after Mali‑G715 might or might not depending on the phone model.
Should I use ray tracing pipeline or ray query as the ray traversal option?
Use VK_KHR_ray_query for most simple effects because it lets you add traversal to existing shaders. Use VK_KHR_ray_tracing_pipeline when you need its dedicated ray-tracing shader stages and driver-managed traversal.
What should exist after I build the acceleration structure?
After you build an acceleration structure, use it to represent scene geometry for fast ray-intersection tests. Vulkan exposes it through VK_KHR_acceleration_structure; the implementation is opaque but typically tree-like.
Do I need bindless materials to implement ray tracing effects?
No. VK_EXT_descriptor_indexing is independent of ray tracing. Use it when you need shaders to dynamically index arrays of buffers and textures, such as when accessing material data for ray hits.
Which build preference should I use for acceleration structures?
For static Bottom-Level Acceleration Structures (BLASes), use VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR. For Top-Level Accelerations Structures (TLASes) and dynamic BLASes, use VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR, usually with VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR.
Next