- Home /
Does deferred rendering work on iOS devices?
We have a single camera in the scene and it is set to deferred shading rendering path. When run on an iOS device, unity always switches camera to forward rendering path. The documentation states that deferred rendering "requires a graphics card with Multiple Render Targets (MRT), Shader Model 3.0 (or later), support for Depth render textures and two-sided stencil buffers". We have set graphics API to OpenGL ES 3.0, and are running the game on iOS 6 device which does support MRT (up to 256 bits). There seems to be no reason why deferred shading should not work on these devices.
Can anyone tell me how to make it work, or if it isn't supported, why? Also if Unity doesn't allow this, did anyone try to make their own deferred rendering path within Unity? Could one force Unity to manually start a g-buffer and lighting passes with custom shaders?
Answer by sbsmith · Nov 20, 2017 at 08:57 PM
I'll answer this old question since it comes up in searches. Only certain devices can support Deferred rendering. Even if a device supports Metal, it may not support the deferred path. For example, Metal will fall back to Forward rendering if the device has an A7 chip. The deferred path is only supported on A8 and later. There is a chart on the bottom of this page explaining which devices can use the different rendering paths.
You can see which devices use which chips here.
Update: I have tested that deferred works on Unity 2017. In order to make it work on older devices, you will need to go to the Player settings and remove the Metal graphics API. Make sure that it is only using OpenGL ES 3. If Metal is listed as an API and the hardware does not support deferred in Metal, it will select Metal over OpenGL and then revert back to forward rendering.
Update 2: As of writing, Unity's own documents contradict themselves about deferred lighting on mobile. Here it leaves blank whether or not deferred is even supported on mobile.
Yeah, I made a mistake in the original post where I said "on iOS 6 device", I meant "iPhone 6" which does have an A8 chip. So at the time of my writing that (a year and a half ago) Unity did NOT support Deferred rendering on iOS devices AT ALL (including the latest chips which were A8 and A9 then). I don't know if they fixed that in the meantime or if they did, which Unity version it was fixed in because I didn't have the time to test it.
That being said, I explicitly wrote that the device I was using has all the needed hardware requirements (because it was an A8 chip) and you don't answer my original concern at all.
You're totally right. I'll update my answer above.
Your answer
Follow this Question
Related Questions
Why did my render time increase after lowering the vertex count? 2 Answers
Unwanted rendering on top of all objects!? 0 Answers
Android/iOS notifications when the game is not running 1 Answer
Sprite rendering problems only on iPad mini 0 Answers
Unity 3.5 allows terrains on iPad2 and newer iOS devices, what's the max terrain size? 0 Answers