We have been using post process effects in our games without any problems. All of them have been using two cameras setup, one for the HUD and the other for the game itself. The post proces effects were used only in the game camera without having any performance issues (just the normal performance drop of the post process). But, no we are trying to use a post process effect in a setup with three cameras: skybox3d, game, HUD (in that render order). If we apply any effect to the game camera the performance is killed (3fps) As you will know applying a postprocess effect to a camera also applies it to the underlaying cameras. As a benchmark we used and iPhone 5:
With two cameras setup: FPS 60
With three or more cameras : FPS under 0-3
The performance loss so huge that I think that something wrong is going on.
Just to clarify, it happens with whatever postprocess effect I use, and there is no problem if I made a PC or mac build, just when deploying to the device.
Use render texture and do the blit in the end. If you are not doing that, unity will do “read pixels” from screen to provide you texture with what you just drawn
how is it in any way helpful to any developer aside from a hobbyist to do sneaky actions like that? It’s just dumb, and proves no real understanding of true game development.
Unity should not be using read pixels from screen without proper notification in console - under any circumstances. Why would you slow down things and NOT inform the programmer? That’s one of the reasons why people have continual problems with unity. Squeezing every last drop of potential from unity should be a big priority
I understand why it’s done but “it just works” isn’t working if its going to cause mysterious slowdowns with no evidence why.
Many thanks. I will try to do what you have suggested. The problem is that we are also using some third party post process and the code is compiled …
I have been trying to figure this out but without luck. Using OnRenderImage without anything inside it just drop performance to almost 0, so I don’t know what to do next. Have anyone solve this problem?