# Optimize hardware ray tracing with Lumen on Android devices

## In this learning path

- [Introduction](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/best-practices-for-hwrt-lumen-performance/)
- [Lumen and Ray Tracing](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/best-practices-for-hwrt-lumen-performance/1-ray-tracing/)
- [Acceleration Structure](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/best-practices-for-hwrt-lumen-performance/2-acceleration-structure/)
- [Only Add Important Objects into Ray Tracing](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/best-practices-for-hwrt-lumen-performance/4-add-object/)
- [Take Full Advantage of Instancing](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/best-practices-for-hwrt-lumen-performance/5-instancing/)
- [Optimize Acceleration Structure](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/best-practices-for-hwrt-lumen-performance/6-optimize-as/)
- [Reduce Acceleration Structure Run-time Update Cost](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/best-practices-for-hwrt-lumen-performance/7-run-time-update/)
- [Lumen General Setting Optimizations](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/best-practices-for-hwrt-lumen-performance/8-lumen-general/)
- [Next Steps](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/best-practices-for-hwrt-lumen-performance/_next-steps/)

## About this Learning Path

| Skill level:   | Introductory          |
|----------------|-----------------------|
| Reading time:  | 30 min                |
| Last updated:  | 05 Aug 2026           |

| Author:        | Owen Wu, Arm          |
|----------------|-----------------------|
| Arm IP:        | [Immortalis](https://support.arm.com/?tab=compute-ip&Product%20Type=Graphics%20Processors) |
| Tags:          | [Gaming](https://learn.arm.com/tag/gaming), [Android](https://learn.arm.com/tag/android), [Unreal Engine](https://learn.arm.com/tag/unreal-engine) |

### Who is this for?
This is an introductory topic for Unreal Engine developers interested in optimizing hardware ray tracing with Lumen on android devices.

### What will you learn?
Upon completion of this Learning Path, you will be able to:
- Learn about ray tracing.
- Understand what an acceleration structure is.
- Learn about the best practices for getting the maximum performance of hardware ray tracing on Lumen for Arm devices.

### Prerequisites
Before starting, you will need the following:
- A computer capable of running [Unreal Engine 5.3 or later version](https://www.unrealengine.com/en-US/download).
- An Android mobile device that has a Mali GPU with hardware ray tracing support.
- A USB cable to connect the mobile device to your computer.

### Summary
You’ll improve Lumen hardware ray tracing on Android devices with Arm Mali-based GPUs by refining acceleration-structure contents and organization. First, you’ll choose which actors to include and exclude small contributors. Then, you’ll inspect instancing with Unreal’s Ray Tracing Debug picker, and convert repeated objects to instanced actors. Finally, you’ll check **Instance Overlap** to reduce traversal work while preserving the intended lighting.

### Frequently asked questions

<details>
<summary>What do I need to check before applying these optimizations?</summary>
Enable hardware ray tracing for Lumen on the target Android device as referenced in the prerequisite guidance. Open the Unreal Engine project and the level you plan to optimize.
</details>

<details>
<summary>How do I exclude nonessential actors from ray tracing?</summary>
Use the actor details panel and turn off ray tracing visibility for objects that do not affect lighting or are very small. Preview the scene to confirm that lighting quality remains acceptable.
</details>

<details>
<summary>How can I confirm whether repeated objects are instanced?</summary>
Run the command `r.RayTracing.Debug.PickerDomain 1` to set the picker to instance mode, then use **Ray Tracing Debug** and select **Picker**. Click scene elements to inspect their instancing status and convert repeated objects to instanced actors when possible.
</details>

<details>
<summary>What should I look for in the Instance Overlap view?</summary>
Open the **Instance Overlap** view under **Ray Tracing Debug** and look for areas showing high overlap. Adjust meshes and actor bounds so each bounding box contains minimal empty space and overlaps less with neighbors.
</details>

<details>
<summary>Why does removing small or overlapping geometry help?</summary>
You reduce hit tests because the acceleration structure stores scene geometry in a hierarchy. Fewer, less-overlapping bounds lower traversal work, which can improve hardware ray tracing efficiency.
</details>
