Skip to main content
Inspiring
June 18, 2013

AA vs downscaling from higher resolutions

I think it might be a good idea to re-open this discussion as there seems to be a fair amount of friction between those that find that downscaling from 1920x1080 is an acceptable way to improve image quality in the Rift vs those that find it unacceptable and comes with a potential increase in latency.

With Unity, I've explored a multitude of options:

1) No AA, using native Rift resolution of 1280x800.
2) No AA, downscaling from higher resolution.
3) Anti aliasing as a post effect, occurs after lens correction and chromatic aberration
4) AA between lens warp and chromatic aberration correction.
5) 2x/4x/8x MSAA via Unity's quality settings

Note that at this time, the #5 option here does not actually function like UDK's ScreenPercentage setting because the MSAA textures are not yet accessible. I'm guessing that when Unity does support this, the quality settings are all that we'll need to get a simple and effective "ScreenPercentage" setting in Unity.

Also note that at this time, the #4 option is not possible unless we make some significant changes to the Oculus Unity integration (and I personally haven't taken the time to try out a proof of concept).

So for the time being, that realistically leaves us with #1 (No AA at 1280x800), #2 (No AA, downscale from higher res), and #3 (AA using one of Unity's several AA image effects), and maybe even a combination of these.

Here are screenshots taken of some text that does not squarely face the user, although the user is looking directly at it. The text should read "0%":

1280x800 (No AA, 4xMSAA, postwarpAA):


1600x900 (No AA, 4xMSAA, postwarpAA):


1768x992 (No AA, 4xMSAA, postwarpAA):


1920x1080 (No AA, 4xMSAA, postwarpAA):


My conclusions:

1) I find that post-warp AA done as an image effect softens up the scene details too much, darkens it, etc. Not acceptable (and also has a not insignificant hit to frame rate).

2) I don't see much difference in legibility between no AA and using 4xMSAA in Unity's quality settings, so might as well not use it in favor of performance, although one could definitely make the argument that straight edges would benefit from it.

3) The higher the resolution the better, and even running at 1768x992 looks like it starts to provide acceptable readability of that "0%".

4) I don't have a way to test the latency difference between native 1280x800 and downscaling from a higher resolution, but it sure doesn't seem to feel any different to me, even with looking around all over the place real fast like a crazy person.

Therefore, until Unity allows access to MSAA textures, just use as high a resolution as you can? :)
    This topic has been closed for replies.

    83 replies

    Up and Coming
    November 13, 2013
    "sh0v0r" wrote:

    Upgraded and everything seems to working fine including shadows. The only problem I ran into was the dual OVR Controller setup I use in my cockpit.

    I use separate controller layers so I can have lower nearclip inside the cockpit and the 2nd camera controller only renders the world.

    I assigned the CameraScaler to all of the cameras.

    Any ideas what might cause this?

    Can you describe the issue you are experiencing with the dual OVRCameraController setup?
    Up and Coming
    November 13, 2013
    I'm happy about this one:
    Profiler: Camera render to Texture is now added to the profiler.


    I was really hoping for something like "Editor: Added fullscreen exclusive mode." Oh well. Pretty nice list of improvements.
    November 13, 2013
    Wow, that looks better than I expected...
    Lost about 6 fps, 54fps when looking inside (GTX670 oc)
    Nice work!
    Up and Coming
    November 13, 2013
    "sh0v0r" wrote:

    - Added Camera.SetTargetBuffers for multiple render target (MRT) support.

    [edit 2]
    Upgraded and everything seems to working fine including shadows. The only problem I ran into was the dual OVR Controller setup I use in my cockpit.
    That's good news! BTW, I don't think boone's CameraScalar ever had any problems with shadows, it was just in my test that used MSAA that had the problem.

    I'll grab 4.3 and update the demo scene to see if it fixes my problems.
    GunLock - Multiplayer FPS UE4 Rollercoaster HydraDeck - RTS
    drashAuthor
    Inspiring
    November 13, 2013
    Take care with 4.3 and make sure you have backups of your 4.2 projects -- I already ran into showstopping issues and rolled back to 4.2. :x For example, the project I tried it with runs at 200fps in editor maximized, but barely hits 60fps when running from executable. Rolled back to 4.2, problem went away. Didn't have time to try to pinpoint the issue, but I did want to warn you guys.

    Anyway, once that's resolved, i'm definitely looking forward to some of these other improvements in 4.3!
    Titans of Space PLUS for Quest is now available on DrashVR.com
    Up and Coming
    November 13, 2013
    "drash" wrote:
    Take care with 4.3 and make sure you have backups of your 4.2 projects -- I already ran into showstopping issues and rolled back to 4.2. :x For example, the project I tried it with runs at 200fps in editor maximized, but barely hits 60fps when running from executable. Rolled back to 4.2, problem went away. Didn't have time to try to pinpoint the issue, but I did want to warn you guys.

    Anyway, once that's resolved, i'm definitely looking forward to some of these other improvements in 4.3!

    DON'T UPGRADE TO 4.3 YET. I ran into the same issue as drash. The game view in the editor works flawlessly, but the standalone build is really slow. I looked into it, and most of the time is being spent doing CreateVBO calls. That is a terrible bug. I'm going to report it to Unity. Until it get's fixed, save yourself the trouble and keep using 4.2!
    Up and Coming
    November 13, 2013
    Well the good news is 4.3 fixes the shadowing issues with MSAA!

    But yeah, the frame rate is horrible! Hopefully they'll fix it soon
    GunLock - Multiplayer FPS UE4 Rollercoaster HydraDeck - RTS
    Up and Coming
    November 13, 2013
    Are you sure that both camera rigs are rendering to the same offscreen buffer?
    sh0v0r
    Up and Coming
    November 13, 2013
    "owenwp" wrote:
    Are you sure that both camera rigs are rendering to the same offscreen buffer?


    Possibly, the world rig renders first and then the cockpit renders on top of it and applies the distortion, but perhaps the stock oculus code shares the data where as the Camera Scaler creates a new one for each instance?
    Up and Coming
    November 14, 2013
    Sorry, haven't gotten around to looking into the dual cam controller setup yet.

    I think I discovered one weird trick that can make the super sampling perform better (latency wise). Well, it doesn't actually make it perform better, but prevents it from performing poorly.