cancel
Showing results for 
Search instead for 
Did you mean: 

[GearVR] Cannot change PixelDensity (PD) or ScreenPercentage in Runtime

pekayatt
Expert Protege
I had this amazing idea of changing the PD in runtime by getting how hot my device was getting when playing the game, but them I just got the sensation that it is impossible to change ScreenPercentage in runtime on the GearVR.

Have anyone manage to do that?

I changed r.screenpercentage, hmd.pd  and all the other commands that I could find, but no one really did a thing.

Well, after changing a lot of options on the DefaultEngine.ini I manage to change the screenPercentage, but that was a not the solution I wanted. In fact, if that could work it would be good for user to be able to keep playing for longer sessions, as well as to have people with their brand new S8 able to experiment better supersampling games :P.

Can anyone give me a direction?

Could PDAdaptive work? Never seen that thing work either on Oculus or Gear :smiley: 
5 REPLIES 5

ENiKS
Adventurer
not sure on Gear, but on Rift it's  'hmd pdadative on" and "hmd pdmax/padmin" for setting the limits. Works perfectly. r.screenpercentage is for other HMD such as Vive. It can be a bit confusing, but even Epic said they need to refactor the code a bit so that every HMD won't have so different implementation...

Also you can use hmd stats to see stats and how things are working.

rpalandri
Expert Protege
Hey!
A couple things here.
1) The pixel density commands have changed a lot (we tried to unify them with Rift in 4.14, then unify them with all the headsets in 4.15 IIRC) so they're pretty hard to find. My bad. Please give me your engine version and I'll show you how to use them. Adaptive pixel density does NOT work on Gear.

2) In 4.15.0 we have a crash on adreno GPUs (not mali) when trying to change it, so you need to upgrade to 4.15.1 if you want to do that.

3) I would not recommend to do what you're trying to do. If your device is getting too hot, please lower the CPU/GPU metrics and reduce the number of draw calls, but don't change the resolution. In its current implementation, that will reallocate the underlying rendertarget (all 3 of them, since we're doing triple buffering) and its depth buffer, which will take a bit of time. You can try though, if you don't change the pixel density too many times.

4) FYI we're currently investigating ways to actually do adaptive pixel density on Gear, using adaptive viewport and perf metrics. Might work, might not work. We shall see. Perf metrics on mobile chipsets is a hard thing to get, due to the "deferred" tiled renderers.

edit : I didn't think to take into account the chipset temp. for adaptive. that's a pretty good idea 😉

Norman3D
Expert Protege

rpalandri said:

Hey!
A couple things here.
1) The pixel density commands have changed a lot (we tried to unify them with Rift in 4.14, then unify them with all the headsets in 4.15 IIRC) so they're pretty hard to find. My bad. Please give me your engine version and I'll show you how to use them. Adaptive pixel density does NOT work on Gear.

2) In 4.15.0 we have a crash on adreno GPUs (not mali) when trying to change it, so you need to upgrade to 4.15.1 if you want to do that.

3) I would not recommend to do what you're trying to do. If your device is getting too hot, please lower the CPU/GPU metrics and reduce the number of draw calls, but don't change the resolution. In its current implementation, that will reallocate the underlying rendertarget (all 3 of them, since we're doing triple buffering) and its depth buffer, which will take a bit of time. You can try though, if you don't change the pixel density too many times.

4) FYI we're currently investigating ways to actually do adaptive pixel density on Gear, using adaptive viewport and perf metrics. Might work, might not work. We shall see. Perf metrics on mobile chipsets is a hard thing to get, due to the "deferred" tiled renderers.

edit : I didn't think to take into account the chipset temp. for adaptive. that's a pretty good idea 😉


Yes please! Use temperature as another metric to delay hitting the thermal limit! Reducing resolution would certainly help. I think most of us are already setting GPU and CPU as low as we can.

pekayatt
Expert Protege

ENiKS said:

not sure on Gear, but on Rift it's  'hmd pdadative on" and "hmd pdmax/padmin" for setting the limits. Works perfectly. r.screenpercentage is for other HMD such as Vive. It can be a bit confusing, but even Epic said they need to refactor the code a bit so that every HMD won't have so different implementation...

Also you can use hmd stats to see stats and how things are working.


Unfortunately, as you saw from other messages the same thing doesn't apply to GearVR...


rpalandri said:

Hey!
A couple things here.
1) The pixel density commands have changed a lot (we tried to unify them with Rift in 4.14, then unify them with all the headsets in 4.15 IIRC) so they're pretty hard to find. My bad. Please give me your engine version and I'll show you how to use them. Adaptive pixel density does NOT work on Gear.

2) In 4.15.0 we have a crash on adreno GPUs (not mali) when trying to change it, so you need to upgrade to 4.15.1 if you want to do that.

3) I would not recommend to do what you're trying to do. If your device is getting too hot, please lower the CPU/GPU metrics and reduce the number of draw calls, but don't change the resolution. In its current implementation, that will reallocate the underlying rendertarget (all 3 of them, since we're doing triple buffering) and its depth buffer, which will take a bit of time. You can try though, if you don't change the pixel density too many times.

4) FYI we're currently investigating ways to actually do adaptive pixel density on Gear, using adaptive viewport and perf metrics. Might work, might not work. We shall see. Perf metrics on mobile chipsets is a hard thing to get, due to the "deferred" tiled renderers.

edit : I didn't think to take into account the chipset temp. for adaptive. that's a pretty good idea 😉


It is fully understandable that it is not unified yet, hope we can get that align in future versions.

I have been using 4.15.1, we successfully update our game to it and without too much problems. We were looking to change to 4.16, but only when we get a stable version.

Our test devices are S6 with Mali, of course whe are trying to reduce the draw calls to a minimum, in fact we try too keep under 30. And polycount under 50k at the screen. Even so the S6 tends to heat up pretty fast (compared to S7).

I would like to have this option, even if it need a reboot of the game, like to let the user select a different level of graphical quality of the game. Most people prefer to have better graphics (resolution) and be able to play more, or even an option when the smartphone starts to get hot we could ask if the player want to keep playing or to scale down the res. There are several options to improve UX using this approach.

Adaptive PD would be amazing, but I have a hard time to make it work on the PC, I could only imagine how to DO it for Mobile, kudos for the work! Hope everything gets some results!

Yet, I have not be able to change the ScreenPercentage in runtime, could you tell me how on the 4.15? Well, if there is a way.

Thanks,

Anonymous
Not applicable

rpalandri said:

Hey!
A couple things here.
1) The pixel density commands have changed a lot (we tried to unify them with Rift in 4.14, then unify them with all the headsets in 4.15 IIRC) so they're pretty hard to find. My bad. Please give me your engine version and I'll show you how to use them. Adaptive pixel density does NOT work on Gear.

What are the commands for the following branches:
* Epic 4.16
* Oculus 4.16 unified
?
thanks in advance for the info!