I add user checkpoint the way same as counter for “Base pass drawing”.
In 4.14, I cosed HDR in mobile, so, It will call “SetRenderTarget” in FMobileSceneRenderer::Render.
It makes me hard to understand about why it cost so much time. Since the code in “SetRenderTarget” just new a rhi command.
Just find out that performance degradation was caused 4.14 iOs clip plane fix. When I disabled
r.AllowGlobalClipPlane performance is good as 4.13.
This feature should’t have this high performance cost. DanielW mentioned that it’s cost about 15% performance for vertex shader at console hardware. I was assuming similar performance cost for iOs hardware too.
After check the doc of this varible, It seems only take effect on planner reflections according to description. And in doc of 4.13, it has states enabling this will cost base pase triangle cost by ~15%.
My scene don’t have using planar reflection, maybe later I’ll disable it to test.
It’s affect all materials not just planar reflections. Planar reflections does use same material permutations. It would be great to have this cost only for planar reflection pass.
Hey gays, after apply 4.14.1 hotfix, the fps has increased to 17fps. And then I disable r.AllowGlobalClipPlane, it increased to 31fps. It seems good! At least we can upgade to the latest version of UE4 now! Thanks for you tips!
So we can conclude that Clip planes on ios Metal is either super expensive or implementation has some bug that is causing this nasty performance problem.
I agree with your point. I have tested my scene on 4.13.2, the fps donesn’t seems changed whether enbale this option or not. The next thing I found after upgrade to 4.14.1 is the size of package become bigger, 480MB in 4.13.2 while 648MB in 4.14.1.Do you have this situation?
On 4.13.2 clip plane implementation did have bug on Metal so they were never used. 4.14 fixed that but we now see the performance hit. Package size didn’t change at all for us.