Wow, thanks for the lengthy reply
Firstly, our game is not a graphically complex game - we’re building a very minimal action arcade game. We don’t have any lighting what-so-ever and the vast majority of our materials are simply emissive color only, opaque and fully rough. The most complex material in the game (applied to a single object) is a panner applied to a texture in the emissive channel, is translucent and uses a small amount of simple logic for World Position Offset. We use a fair amount of translucency for particle effects, but again, everything is fully rough. We don’t use specularity or anything like that anywhere.
First If you have a Galaxy device, we do not support full HDRwSun. We Expect full HDR without the sun but can’t guarantee it will work. This depending on the intensity of your scene etc. Using Full HDR on older device and those devices taking a performance hit is expected.
We’re not planning on using the sun stuff at all. In fact all we’re trying to get out of the HDR on the high end devices is the bloom effect (to give some of our objects a slight glow by pushing them over 1.0/1.0/1.0 in the emissive channel). The test I did last week (to see if the HDR situation had changed since last time we tried it a few months ago) confirmed that we’re still seeing the massive performance hit on the Galaxy Nexus, even though we don’t have a single material in the game with values above 1.0 in the emissive channel.
I’d be OK with taking a performance hit on the older phones, if the performance hit was, say, 5-10% of the framerate (even if the HDR cost didn’t result in a better looking game on those older device), but that’s not what we’re seeing.
Now, what you can do is to optimize to help bump the rang of HZ. This is a method, where in your material, a node is added that calculates what device you are packaging to. From there it calculates what the best method for deploying is. For instance if you add a vector1 and plugged that into the inputs of this node, you could then plug that into the deferred render for the respective value you wanted. So if you added this to roughness, since roughness is expensive on mobile platforms, in the packaging this node would calculate the best computation for that device and package accordingly.
It doesn’t sound like any of that would help us, as the performance hit is global and the materials are already about as cheap as can be.
What you could try is lower the engines scalability settings for older devices. I am not sure if you can even have HDR enabled without your settings set to EPIC.
So I’m guessing you’re talking about setting ‘r.DetailMode 0’ here? As I mentioned in my original post, I did already try toggling a bunch of different stuff in the device profiles without any luck, although I’ve never tried r.DetailMode before. Did a variety of tests just now and this was the results:
- Initially ran with MobileHDR = false. Game runs perfectly fine.
- Toggled MobileHDR = true in the project settings. Cleared intermediate, saved/cooked and saved/staged builds folders (I did this every time moving forwards). Game’s now running around 7hz.
- Went into the device profiles and set r.DetailMode 0 in all Android related profiles (just to be safe). This doesn’t have any effect on the game it seems (there’s a very obvious particle system running that uses ‘low detail’ for one of its emitters and that emitter was visible at game launch). Toggled r.DetailMode 0 in the mobile console, particle emitter vanishes, framerate still terrible from mobileHDR.
- I then tried toggling various things in the console (r.MobileHDR 0; r.MobileHDR false; r.MobileBloom 0 etc). None of these have any effect on the performance hit from Mobile HDR.
- Removed the Mobile HDR setting from the project - Game’s running at 50hz+ again.
Settings up device profiles with mobile HDR off for all low/medium end devices (and on for high end devices) would be the ideal route (but this doesn’t appear to work at all). My college also notes that the Galaxy Nexus appears to be considered a ‘high’ end Android device for some reason even though it can only run the game in its most cutback form (so even if we find a way to toggle the Mobile HDR settings on the lower end devices, there’s still an issue here).