Forum Discussion

🚨 This forum is archived and read-only. To submit a forum post, please visit our new Developer Forum. 🚨
Anonymous's avatar
Anonymous
12 years ago

0.3.2 SDK Benchmarks and Quality

My 1st impression of 0.3.2 was not very good. I had not run the configuration utility and just tried to drop the new OVR controller in place in my project. The result was a slower framerate and much poorer image quality. So I came on here and read all the posts I could find. I decided to run my own comprehensive test and benchmarks to get to the bottom of how to get best quality and/or framerate using the new SDK. I found some surprising results. My application is using Forward Rendering with 8xMSAA. I'm running a 760gtx and my app is GPU limited in all cases below.


API Resolution FPS FOV Eye Camera Texture Quality Text
Relief Texture Scale 1-10 Sharpness
Notch 1-10
0.2.5c 1280x800 147 111 n/a n/a n/a 5 4
0.2.5c 1920x1080 115 111 n/a n/a n/a 7 7
0.3.2 1280x800 154 113 9 off n/a 4 3
0.3.2 1920x1080 120 113 9 off n/a 7 7
0.3.2 1280x800 178 142 1 off n/a 1 1
0.3.2 1920x1080 127 142 1 off n/a 2 1
0.3.2 1280x800 153 107 11 off n/a 4 3
0.3.2 1920x1080 119 107 11 off n/a 7 7
0.3.2 1280x800 132 113 9 on 1 5 5
0.3.2 1920x1080 124 113 9 on 1 5 5
0.3.2 1280x800 95 142 1 on 1 3 2
0.3.2 1920x1080 90 142 1 on 1 3 2
0.3.2 1280x800 97 113 9 on 1.5 10 10
0.3.2 1920x1080 92 113 9 on 1.5 10 9
0.3.2 1280x800 44 142 1 on 1.5 9 9
0.3.2 1920x1080 43 142 1 on 1.5 9 9


Several things of note to me:

1. The new "eye relief" settings in the config tool make a huge difference in quality and framerate. I'm tempted to force my app to 111 FOV (essentially disable eye relief) to prevent such inconsistency to the end user (or hopefully Oculus will improve this over time). I won't do this, however, if DK2 or CV1 have significantly different FOVs than DK2.

2. Setting the "eye relief" to the 9th position (towards out as shown in the attached png) in the config util results in a FOV close to the original (113). With this I was able to replicate 0.2.5c quality with a slightly higher framerate. That was nice to see after my initial impression of 0.3.2.

3. The best quality was achieved with 1280x800! Running with camera texture on at 1.5 scale suddenly made the DK1 feel like a new higher-resolution device! I'm actually quite blown away with these settings. Unfortunately it came with a sizable framerate hit (115->97), but I think I'll live with that because the quality is that much better.

I hope you find this useful. I would suggest everyone experiment with the eye relief setting and camera texture option. I think you will find you can increase your visual quality with the right settings.

ccs

8 Replies

Replies have been turned off for this discussion
  • Great post!

    Edit: One caveat here. Keep in mind that eye-relief is literally the distance of a player's pupils from the lens. So this value is determined both by the eye-relief dial setting as well as the individual facial geometry of the user. If a user goes through the eye measurement procedure, then the value will be specific to that user. So an eye relief dial setting of 9 will mean something different for my face than it does for your face. When doing benchmarks, I would suggest using the actual eye-relief distance (found on the Advanced panel in the Config Util) instead of the eye-relief dial.
  • Thanks for spending the time to do this.

    I do agree that the defaults on Unity on 0.3.2 leave much to be desired in terms of quality.

    Properly tweaked, however, the quality is actually improved a lot.
  • Anonymous's avatar
    Anonymous
    I ran a few more tests with texture scale set to 1.25 and 1.75. 1.25 gave me the most bang for the buck. 1280x800 with 1.25 camera texture scale easily surpasses 0.2.5c 1920x1080 image quality and matches FPS. Awesome! I realize DK2 will be 1920x1080 so I'll lose some of that back, but it only drops from 115 FPS to 108 FPS. 1.75 scale gave a very slight quality increase and really isn't worth the drop in FPS. Maybe that will change with DK2.

    I can't wait to see how my app looks with DK2! Please ship soon!!! :)

    API     Resolution      FPS     FOV     Eye     Camera  Texture Quality Text
    Relief Texture Scale 1-10 Sharpness
    Notch 1-10
    0.3.2 1280x800 115 113 9 on 1.25 9.5 9.5
    0.3.2 1920x1080 108 113 9 on 1.25 9.5 9
    0.3.2 1280x800 84 113 9 on 1.75 10+ 10+
    0.3.2 1920x1080 81 113 9 on 1.75


    Enjoy!

    UPS just showed up with my Leap Motion. Time to go play with that now. :)

    ccs
  • drash's avatar
    drash
    Heroic Explorer
    Great tests, ccs. Especially that last bit. I went straight for a camera texture scale of 2.0 as I figured it would be best to work with an integer multiple. But now, 1.25x sounds like good bang-for-the-buck, at least as a user option, so iI'll be sure to check that out.
  • Anonymous's avatar
    Anonymous
    Yeah I don't think using an integer multiple matters here because this is the pre-distorted render texture size factor. The distortion twists everything around on this larger rendered texture and outputs into the final screen buffer of smaller size. So you can probably have a slider that tunes the setting (although I'm not sure you can adjust this at runtime).

    BTW - the render texture size of the cameras is set by the SDK and appears to be based on the eye relief/FOV as well. It is not influenced by the screen size you select with the player (I confirmed by using some log messages). I assume this render texture size will vary based on the device being used (DK1, DK2, etc.).

    I found with eye relief at notch 1 (7mm for me - thanks brantlew for that info!) the render texture size is 2404x2082. At notch 9 (15mm), the size is 1802x1091. An no I'm not kidding about that 1st number even though it seems really odd (vertical changes more than horizontal between eye relief change!). The engine is actually rendering 2404x2082! That would explain the low FPS with eye relief set all the way in. These are unscaled numbers (Camera Texture Scale = 1.0). At 1.5 camera texture scale the render texture sizes go to 3606x3123 for eye relief notch 1 (7mm) and 2702x1636 for eye relief notch 9 (15mm).

    Guess we are already rendering 4K in some cases here! We're going to need better video cards. Time to invest in Nvidia and AMD.

    ccs
  • yeah, that's it in a nutshell. performance is directly tied to render target sizes which are a function of FOV.

    It's actually a bit more problematic in Unity because we have to use symmetrical projections and the overlap region in the middle is completely wasted. You will notice that the C++ samples clamp the inner edge so that it doesn't overlap and the rendered areas are tall "oval" shapes. That saves a lot of render target wastage.
  • kipp14's avatar
    kipp14
    Honored Guest
    "cybereality" wrote:
    Thanks for spending the time to do this.

    I do agree that the defaults on Unity on 0.3.2 leave much to be desired in terms of quality.

    Properly tweaked, however, the quality is actually improved a lot.

    I don't think that your suppose to be using the defaults in most cases. The defaults are used as a base. if they work for you than use them otherwise the tweaks here are a god send see the posts above. the 4k resolution is impressive.