07-02-2024 08:41 PM
I can't seem to get my UI resolution to stay crisp when at a distance. Up close it is great but when you take a couple steps back it's hardly readable and images are terrible. This only happens in the build, in editor/runtime it works fine. Final product is for a stand alone build not PCVR. When bringing up the Quest menu from a distance it is crisp and clear next to mine. I've tried scaling the canvas, messing with Dynamic Pixels, not using mit maps, anit-aliasing is 4x, and a bunch of others suggestions I ran across online with no luck. Textures on models look fine, it's only on UI. I've used the Meta XR Project Setup Tool Checklist to make sure everything is good for that. I've tried in different versions of Unity (currently using 2022.3.35f1). Is there a template, or sample project somewhere that has everything working as supposed to that I can look at and compare what I am doing wrong?
3 weeks ago
Did you ever figure this out?
I am having the same issue on a vehicle dashboard UI with gauge and warning light icons. PCVR they're crispy, but in the build they're chunky and look like they're vibrating - similar look as Z fighting. Tried moving them further away from dashboard closer to camera with not luck. The bigger UI images like gas/temp gauge look slightly better but they look like they're subtly warping. The camera is pretty close too, as if in a driver seat. When I move in really close to the dashboard, they clear up some, but sitting normally looks horrible. I fooled with canvas scaling etc., with no luck. I am not sure if this is a Quest 3 resolution issue, a shader issue (default UI), lighting issue, a dynamic resolution issue, or a UI scaling issue. I am hoping it's a simple setting somewhere.
--------
Using Unity 2022.3.19f
Quest 3 with latest forced device updates. And still using Meta's AIO SDK 64.0 - afraid to update to latest in the middle of a project, figuring it will likely break stuff since it's a relatively new SDK. Might do it later.
3 weeks ago
[Update] After posting I was doing some testing and overlooked something that was always there. I am also using Text Mesh Pro text on the UI. They are SUPER crispy at any depth and size. It's obvious that TMP is using a more compatible UI shader for Quest VR. So, I think the issue has to do with Unity's Default UI shader. I found a shader material in Meta's core SDK called "Default UI Correct" that I thought might fix the issue but didn't. If anyone knows of a good alt shader for Unity UI images/icons please reply.
3 weeks ago - last edited 3 weeks ago
Hello, I was able to solve my issue and get the UI a bit more crisp (still not as sharp as the Meta menu UI) but I don't think my solution will help 100% with yours. I found out an asset I was using was a big culprit called Highlight Plus. It had to use it's own forward renderer and I don't think it liked playing well on android and URP. Once I deleted that I got 10x the clarity. Like I said, I don't think that will help you out with yours. BUT one other thing I ran across when trouble shooting that I am now doing on all other VR projects for stand alone is changing the textures from bilingual to trilingual and upping the amount (I found 4 works for me). This helped crisp my textures by a lot. If you have already tried that, sorry I wasn't able to help, if not, give it a try and hope it works!
2 weeks ago - last edited a week ago
I am only responding for legacy sake to possibly help other devs who run into these UI issues. I ended up doing some tests with Text Mesh Pro. It turns out that they have an API for using sprites that I was unaware of - great asset. They treat sprites like font glyphs, but it doesn't seem they use the same font shader. I thought I was on to something and got excited, but interestingly, the TMP sprites looked just as bad as the UI images.
I've also done some deep diving, into Quest rendering and I suspect a couple things. One is the shader, but also, the images are really small on the dash so that may be part of the issue. Sprites seem to render differently than fonts - shader? Pipeline? I have no idea why yet. Two, is the way the Oculus renders to the eye. There's some voodoo happening behind the scenes where the Quest is balancing CPU/GPU load, not sure how much it effects rendering.
I also tried dynamic resolution on the OVManager. I am either not setting it right or it's not feasible in my situation. The eye render got blurry. I am not sure I can control the quality of the eye renders yet. I am already pushing the Quest to the max.
I am noticing subtle banding or pixelization on my "mirrors" which are using RenderTexture images. I've improved the "mirrors" by upping the resolution and ticking antialiasing on the RT settings, but I can still see subtle pixelization on the whole scene not just the render textures when I tilt my headset. This made me think the render quality of the headset itself is part of the issue and may be somewhat baked into the headset - not sure yet.
Anyway, not to jump your post but your title describes my issue also. I like reading threads where devs discuss various issues to a problem. Maybe this will give them ideas. If I find a solution, I'll post it here.