[UE 5.8.1][Android][Mobile Deferred] Enabling Cast Shadows on Point Lights Causes UBO Corruption and Object Flickering

Summary

Issue

When Cast Shadows is enabled on a Point Light while using the Android Deferred rendering path, unrelated objects in the scene intermittently flicker or display rendering corruption.

The issue does not occur when Cast Shadows is disabled.

Unreal Engine: 5.8.1
Platform: Android
Rendering Path: Deferred Rendering
Light Type: Point Light

What Type of Bug are you experiencing?

Rendering (Graphics / Niagara)

Steps to Reproduce

Enable Android Deferred Rendering.
Add multiple objects to the scene.
Add a Point Light.
Enable Cast Shadows on the Point Light.
Run the project on an Android device.
Observe intermittent corruption/flickering on unrelated objects.

Expected Result

When Cast Shadows is enabled on a Point Light while using Android Deferred Rendering, the Point Light should cast shadows correctly without affecting the rendering of unrelated objects in the scene.

Observed Result

When Cast Shadows is enabled on a Point Light while using Android Deferred Rendering, unrelated objects in the scene intermittently flicker and display visual corruption.

During investigation, the issue was traced to interference with the UBO memory region. Separating and properly aligning the affected UBO region resolved the issue.

Affects Versions

5.8

Platform(s)

Android

Additional Notes

Investigation

During investigation, I traced the issue to the UBO memory region used in the affected rendering path.

The problem appears to be caused by the UBO region not being sufficiently isolated/aligned, allowing data written for the Point Light shadow path to interfere with unrelated uniform data.

Workaround / Verification

I confirmed that the issue can be resolved by separating the affected UBO region and ensuring that it is independently aligned.

After applying this change, the object corruption and flickering no longer occurred under the same test conditions.

Unfortunately, I cannot provide the project or source modification because the reproduction was found in a proprietary company project.

However, the issue should be reproducible by testing Point Light shadow casting in the Android Deferred rendering path and inspecting the relevant UBO allocation/layout.

P.S. ARI at Unreal Fest was very impressive. I’d love to see more talks like that in the future!