Render to Texture Bug When "Enable GPUScene on Mobile" is Active

Below is the Blueprint code demonstrating the bug:

I have two Render Targets, A and B.

  1. At the start of each frame, I first copy the contents of B to A (using UKismetRenderingLibrary::DrawMaterialToRenderTarget).
  2. Then, I render a default texture (DefaultTexture) at the center position on A (using UCanvas::K2_DrawTexture).
  3. Finally, I copy the contents of A to B (using UKismetRenderingLibrary::DrawMaterialToRenderTarget).

The Material used for copying simply offsets the Render Target’s coordinates slightly and then outputs the sampled pixel value to the Emissive Color.


The expected effect is that the DefaultTexture will tile diagonally across A and B.

It runs fine on the PC platform, achieving the expected result. If I change the platform preview to Android ES3_1, it also works well. However, once I enable the “Enable GPUScene on Mobile” option, a bug appears on Android ES3_1, while the PC remains correct.
Under Android ES3_1, you will find that only one DefaultTexture appears on both A and B.

Further testing revealed that in the first step, i.e., the call where B is copied to A, the Render Target (B) read inside the Material has no data.

What could be the reason for this? Is this a bug in UE? It occurs in versions 5.0 to 5.2. Thank you.

Upon further investigation, I found that the Render Target (RT) is being cleared every frame, as demonstrated in the following Blueprint:

  1. Every frame, data is written to the RT using UKismetRenderingLibrary::DrawMaterialToRenderTarget.

  2. The Material being used is a simple one, with a value of 0.1 connected to the Emissive Color. Additionally, the Blend Mode is set to Additive.

  3. On the PC platform and mobile platforms without GPUScene enabled, the RT’s color becomes white due to additive blending.
    qq4

However, in the erroneous case (on mobile platforms with GPUScene enabled), the RT’s color remains gray (0.1).
qq3

I tested on UE4.27, and the same test case works correctly under the condition ‘r.Mobile.SupportGPUScene=1’. It seems to be a bug in UE5, indeed?