Forum Discussion
drash
12 years agoHeroic Explorer
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? :)
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? :)
83 Replies
Replies have been turned off for this discussion
- MikeArms24Honored GuestThanks for this great analysis, Drash. 1080p in Unity programs has worked much better for me in the limited time i have had to try it. It definitely seems like there is no performance difference when downscaling from 1080p, only improved visuals. I actually perceive a performance increase in the higher resolution modes, just due to everything being clearer.
- barathHonored GuestWhat about just using 1080p and 4x AA instead of postwrap?
- drashHeroic Explorer
"barath" wrote:
What about just using 1080p and 4x AA instead of postwrap?
Good question! I just took a closer look at 1080p + 4xMSAA. Anything with rounded edges such as most text and spheres and things like that didn't benefit very much, but high-contrast straight edges are amazingly improved (as we'd expect).
However, this comes at a pretty big hit to performance. On GTX680 it went from 166fps to 126fps when looking at the same spot in the same scene. Unfortunately, toggling between no AA and 4xMSAA at run-time causes a several-second-blackout of the screen, so having an app toggle it on the fly to maintain a framerate is out of the question, but perhaps as a startup option this would be a good idea to let the player choose on their own. - sh0v0rProtegeMy game is Forward rendered so no Post Process AA on Font Alpha for me only geometric edge AA.
In my experience with my game Lunar Flight, I have found that you need to get the scale/distance from the camera correct for text to be legible. This is very resolution dependant and when HD Rift displays become available you might need to go back and revisit the assets to increase the resolution. Then again you might be able to get some nice results with vector scaled dynamic fonts.
Relying on downscaling from a higher res is a waste of Fillrate and I think it is ultimately better to optimise & build the assets to accommodate the displays limitations properly by ensuring there are enough pixels available to render things like text. Even the width of geometry needs to be factored in, to be built for the rifts display rather than just built as an art asset and hope for the best.
I ran into a lot of aliasing issues, particularly my Sky which has a star field, I had twinkling stars because the resolution was so high. So I made a new texture that increased the average star size by 4x, this stabilised it a lot but I ended up with square stars, also adding Anistropic Filtering should alleviate some texture aliasing problems when rotating the camera.
Check out this video in 720p HD if you want to see some of my progress on dealing with these issues, particularly font size and scale: - antigravityExplorerIt does say in the Oculus Unity Integration Guide -
"4.5.4 MSAA Render Targets
Unity does not currently support setting anti-aliasing on render targets. This impacts the overall resolution of the rendering since the lens correction pass 'stretches' the image, causing artifacts that can be corrected by rendering into a larger buffer first and then down-sampling to the final buffer.
Support for Anti-aliased render buffers will be included in a future Unity Release."
With that said, Unity just informed me that a new-version was available for download today.. 4.1.5 I believe.. Maybe support is now included? Possibly bundled with the DirectX 11 upgrade?
I'd check but it appears I'd downgrade my 4 month Unity trial status to one month by doing so..
I'm an animator by trade, not a graphics programmer so if I'm in left field here I apologize.. ;)
AG - drashHeroic Explorersh0v0r, nice work -- it's quite impressive that all that text on the panel next to you is readable in Lunar Flight! :o
"antigravity" wrote:
With that said, Unity just informed me that a new-version was available for download today.. 4.1.5 I believe.. Maybe support is now included? Possibly bundled with the DirectX 11 upgrade?
Thanks, I took a look here http://unity3d.com/unity/whats-new/unity-4.1.5 and it looks like another minor release with a couple of bugfixes. - antigravityExplorer
"drash" wrote:
Thanks, I took a look here http://unity3d.com/unity/whats-new/unity-4.1.5 and it looks like another minor release with a couple of bugfixes.
Interesting..
The web link mentions only one change with, "Fix MonoDevelop on Windows." but my update window in Unity went far beyond that with its description.. Was hoping it fell under the bracket of "many more new features and updates" considering it was something they promised to support in an update.
I'd assume its a priority considering their gracious move of a four-month trial to Oculus Developers considering a purchase.
AG
- dhillHonored Guest
"drash" wrote:
The web link mentions only one change with, "Fix MonoDevelop on Windows." but my update window in Unity went far beyond that with its description.. Was hoping it fell under the bracket of "many more new features and updates" considering it was something they promised to support in an update.
The extra text refers to the major changes in all of 4.x, not just the ones specific to 4.1.5 - antigravityExplorer
"dhill" wrote:
"drash" wrote:
The web link mentions only one change with, "Fix MonoDevelop on Windows." but my update window in Unity went far beyond that with its description.. Was hoping it fell under the bracket of "many more new features and updates" considering it was something they promised to support in an update.
The extra text refers to the major changes in all of 4.x, not just the ones specific to 4.1.5
Doh! .. I just realized the company behind Unity is located in my city.. I'll probably storm the office to try to get an answer. - sh0v0rProtegeI tried this out tonight, I set the display to 1920x1080 and while I noticed a definite improvement in quality with only a small drop in frame rate on my machine, the most significant issue was severe eye strain. :shock:
Something is not quite right and my eyes feel like they are really struggling to maintain focus.
With 1280x800 I experience no eye strain aside from the blurriness.
The only thing I can think of is the distortion shader does not output the correct way at higher resolutions?
I tried 1920x1200 and that had less eye strain but it was still worse than 1280x800 which I feel almost nothing when playing with.
Quick Links
- Horizon Developer Support
- Quest User Forums
- Troubleshooting Forum for problems with a game or app
- Quest Support for problems with your device
Other Meta Support
Related Content
- 10 months ago
- 9 months ago
- 2 years ago
- 6 months ago