Render quality looks lower than expected in VR project

Hi all,

I’m new to VR development but not new to Unity, having released a game last year. I am trying a small project involving displaying photos of real like paintings on walls in a VR space. The image fidelity of the paintings is of course an important factor in this project and currectly everything looks a bit blurry in the headset. The texture is high resolution and when close to it in the VR project it looks like that, just a few steps back and its kind of blurry. I’ve tried using XRSettings.eyeTextureResolutionScale and that makes the project run slower when upped but I cant see a difference in the resolution. Help appreciated.

Here’s some specs:
Quest 2 headset: 1832 x 1920 resolution for each eye
Painting texture resolution: 5017 x 3345 (currently not yet compressed, left Texture Type as Default)

Do the paintings look blurry in the viewport? Could the actual headset lenses and resolution be causing the blur?

Not blurry in the viewport. It could be the lens/max res of the headset but I’ve seen clearer rendering in other games/apps on the headset. Also the texture is pretty crisp close up, makes me think its a camera setting perhaps?

Check Anisotropic texture quality setting in imported texture.

These are my settings, so already using Aniso on import.

Hi,

Mip Maps on Textures usually kills the details.
Have you tried without Mip Maps?

I have and its no good either.

If you install the Oculus Metrics Tool you will see that the Quest 2 does not actually render at the native resolution of the Panel, sadly. And more sadly, there is not way to change that other than the following 2 ADB commands.

“adb shell setprop debug.oculus.textureWidth 1832”
“adb shell setprop debug.oculus.textureHeight 1920”

You can run these easily using SideQuest each time you power on your HMD. There is a API/Plugin command to scale the eye texture, but since the default form which it scales is not the native aspect ratio, that as well results in non-integer scaled frame buffers that still look slightly blurry, unless you over-sample to ridiculous degrees (1.5x +).

I suggest, from what i tested with, to use a MSAA level of 2 and a render scale of 1.25 for the best picture to performance ratio. As a starting point from where to adjust at least.

Until Unity5.4 you could use the global mip map bias to push all the mip maps further out, to keep textures clear, but that stopped working with later versions on Android/ARM devices for some reason - I only noticed that first when working on the N3DS, not sure if that works again now (with newer Unity versions). Gonna test that in a bit, since, yeah, textures no matter how big looks like vomit form about 3 meters distance on the Quest 2…

@zelrender I wrote this a bit more detailed for anyone else who might have these kind of problems, even though you already looked at some things. For you specifically i would also suggest to look at the Android specific texture options, you only show the standalone(pc) option. There is a global overwrite for texture compression in the build settings window. i think it is usually set to ETC (with looks horrible) by default, try ATSC or DTX, depending on what looks better for the texture in question.

Edit: I just checked the mip map bias thing and read, “Also note that mip map bias does not work with MaterialPropertyBlocks, and some platforms, e.g., OpenGL ES based do not support it without custom shaders.”, which is weird since i am 100% sure it worked in older version… Now if Vulkan would not crash after about 1 minute that would be something to test i guess :wink:

1 Like

Good to know. My target platform was likely going to be PCVR not Quest 2, I just happen to have a Quest 2 which I am using via Link cable to work on the project.

So are you saying that on a “real” PCVR headset (like the Rift S) Textures from 3M distance may look less blurry than through the Quest 2?

If you are using Link make sure you have your Oculus PC app and the quest 2 updated - Link just got updated and looks much clearer now, though there are still noticeable compression artifacts, around text especially.

When i run link for testing the Quest 2 runs at 24xx pixels² per eye - still native it would be considerable clearer - also while USB-C 2 works, now with the updated link version i see quite some difference if i plug in my USB-C 3 cable…

There is tons of videos on the Tubes right now, about how to use the Oculus Debug tool (located in Program Files\Oculus\Support\oculus-diagnostics), to up the bit rate of the link transfer. Give that a shot…

Thanks very much. This explains a lot of my issues. Seems likely to be a Link cable problem. Will investigate that road. Do you know of a way to Run Unity projects in VR through Virtual Desktop on the Quest?

You can use Virtual Desktop to stream over Wifi, yeah - also ALVR is an free alternative, since Virtual Desktop will cost you some. There are actually multiple other options available on SideQuest, but i heard, that the new link update pretty much is on par with with the streaming solution (in terms of quality) - haven’t compared that for myself yet though.

Are we talking really new? when was the update out?

2 days ago (here) or something i think. My Quest2 updated yesterday to it. But it started to roll out a few days ago…

edit: the updates are not rolled out to everyone at the same time as you might or might not now.

Ok interesting, I will make sure I’m updated.

Got my Unity project playing through Virtual Desktop on the Quest 2. It is clearer than through Link cable. VD struggles a bit to keep up since the res of the texture is so high and the PC has to stream the visuals now, but it tells me enough that the project looks good with enough PC power and there isn’t an issue with the headset or Unity as far as displaying nice textures in VR. Once Link works better none should have a problem running it with these high res textures. I’ll have to optimise of course but at least for now I can get on with building the project.

1 Like

Ugh. I wish you’d said that in the beginning! This is a completely different situation than building a Quest app, which is what I thought you were talking about until this point in the thread.

1 Like

@zelrender Hey, i just realized i did not tell you, the update i was talking about is a beta update and you need to switch to the test channel for that to be effective… Sorry, i am on the beta channel since the day i got the quest last year, so that was not on my mind.

If you still have compression issues make sure you do check that public test channel thing.


In ya quest as well…

Man, after two years I saw this thread and you didn’t notice that you should change the quality of your android setting. Change level Normal to High (your second image attached).