SRP batcher does not work with OpenGLES3

Unity - Manual: Scriptable Render Pipeline Batcher says the SRP batcher should work with OpenGLES3.
If I play the editor in DX11 it works fine. If I play the editor in OpenGLES3 or make an OpenGLES3 APK (with ES3.1 enabled) it doesn’t work. Tested with the profiler and this script (GitHub - Unity-Technologies/SRPBatcherBenchmark: various benchmark scenes for SRP batcher ( both LWRP & HDRP )).
I use the standard shaders from 2021.1 and URP 11 in a completely fresh project. In DX11 the shaders say “compatible”, in OpenGLES3 they say they aren’t (which seems to be true).

Is the SRP batcher supposed to work with OpenGLES3?
It says “OpenGL ES 3.1 and higher” in the description, but the editor only says “OpenGLES3”. Is this something I should be concerned about?

Unrelated bonus question: Does the SRP batcher have something to do with UI, too? Do I need a special compatible UI shader?

1 Like

Hi!
SRP batcher should work on any OpenGL ES 3.1+ device. You don’t need to explicitly enable OpenGL ES 3.1 on the player settings.
Editor only works with OpenGL ES 3, so it doesn’t support SRP batcher when using any OpenGL ES.
Which Unity version do you use?

Unity 2021.1.2f1 with URP 11.0.0. So fairly up-to-date. I don’t think it ever worked. I also tried the latest 2021.2 and 2020 LTS. Always with default materials, which should be compatible.
SRP batcher never activates on my OpenGL ES 3.2 device (Pixel 2 XL). Even with fresh test projects where I haven’t touched many settings.

This is worth a bug report then :slight_smile:

The same happened to me (on Huawei P20 Pro, Logcat reported that the phone uses openGLES 3.2), I will try to reproduce the behaviour in a new project and report it

I reproduced the behaviour in a new project with URP11 (a simple scene with a plane, cube, sphere and cylinder with Simple Lit shader, a directional light with shadows and no sky). The scene was rendered in 4 steps in editor (the shadows in one pass and the primitives in one pass), while it took 11 steps on Android (everything was rendered one by one). Of course I disabled Auto Graphics API and checked “Require ES3.1”. Batching (both the static and dynamic were off), the SRP batcher is on, of course
Case 1331286
Edit: 1. spelling
2. Actually the scene on Android was rendered in 10 steps (the 11th was to write “development build” in the corner) but anyway, the meshes are not batched

2 Likes

Thank you for confirming. I wasn’t sure if it’s just me.

2 Likes

Hello. Unity 2021.1.6 same problem. SRP batcher works with Vulkan but not with OpenGL. Device: Oculus quest 2.

1 Like
1 Like

Just encountered this issue today. Work fine on Vulkan but not OpenGL.
Using 2020.3.8

The fix is on its way.
I’ll post here when I know the fix versions.

Hi!
A small update: the fix will appear in 2019.4.29f1 and 2021.2.0a19.
2020.3 and 2021.1 require more investigation, so will take a little longer.

What does this investigation entail, and an ETA would be nice for 2020.3LTS at least (Doesnt have to be tomorrow)

The same bug fix worked on 2021.2 and 2019.4, but didn’t work on 2020.3 and 2021.1. This means there’s something else that prevents the SRP batcher from working on GL on these versions - probably, a separate bug.
Unfortunately, I cannot give an ETA on when it will be fixed, only that it has high priority.

I’ll post here when I have more information.

1 Like

2020.3.14f1 and 2021.1.14f1 will have the fix for SRP batcher on GL.

6 Likes

Promise kept and speedy too! :slight_smile:

Version 2020.3.13 will not be? Immediately 14? Or will you have to wait for two versions to be released?

Yes, that’s correct. The fix got merged into what’s going to become 2020.3.14f1.

2 Likes

Can’t wait! When is 2020.3.14 due?