alvr-org / ALVR

Stream VR games from your PC to your headset via Wi-Fi
MIT License
5.26k stars 472 forks source link

Foveated Rendering causes screen to be a little glitchy #1619

Closed Beefanman closed 1 year ago

Beefanman commented 1 year ago

Description

With foveated rendering on, dark areas have a glitchy spot (as shown in the video) (Also another note through some testing: FR also causes screen tear or something even in light areas). This is a pretty recent issue and when turning foveated rendering off it becomes barely noticeable and only a tiny bit of the screen off to the right is gitchy. One "solution" that I've found is when I turn the resolution down to 75% the glitchy stuff is reduced to only a few pixels, but I would normally prefer playing on 100% resolution.

Video of the glitchiness: (Note: Through more testing it does screen tearing even in light areas, but it does these weird colors in the dark)

https://github.com/alvr-org/ALVR/assets/133472848/3c8a1ba7-472f-4692-8d48-3091782154e7

General Troubleshooting

I have tried researching the issue, but with no luck and I've tried enabling and disabling multiple settings. When turning the screen res to 75% the glitchy stuff is reduced to only a few pixels here and there, but I want to play on 100% resolution for the best experience. I also did some more experimentation and turns out in light areas it causes some weird screen tearing or something and its very distracting

Environment

ALVR Version 19.1.1

Quest 2

Any game/app

Hardware

CPU: Intel I7-6700K @4.00 GHz

GPU: NVIDIA GeForce GTX 980

Audio:

Installation

ALVR Version: 19.1.1

SteamVR Version: 1.25.8

Install Type: (Some of this stuff I might need some help to find)

OS Name and Version: Windows 10 Pro | Version: 10.0.19044 Build 19044

(Also small note at the end, this is my first time really doing a bug report, so forgive me if some information is not provided)

ptsd commented 1 year ago

+1 on latest nightly here, anecdotaly feels worse on h264 vs hevc, but it's visible either way. Also pretty sure it wasn't noticable on dev11. If I get time, will try rolling back to check.

General Troubleshooting

Environment

Hardware

Quest2 - 53.0.0.***

CPU: AMD EPYC 7543P (8 VCPUs)

GPU: NVIDIA RTX A4500

Audio: NVIDIA High Definition Audio

Installation

ALVR Version: ALVR v20.0.0-dev12+nightly.2023.05.15

(Matched streamer / app versions)

SteamVR Version: 1.25.8

Install Type:

OS Name and Version: Win11 22H2 (22621.1702)

Vixea commented 1 year ago

This has been confirmed to be an oculus/meta firmware issue and or at least partially. Marking as unactionable and the "Tearing" you see isn't tearing but likely either a reprojection issue or a lcd hardware limitation.

zarik5 commented 1 year ago

Tearing is caused by packet losses. it means the frame motion vector data got corrupted.

AverageWaffleHouseEnjoyer commented 1 year ago

Don't know if it helps with diagnosing at all, but I have the issue too and I think it has something to do with the quest's decoder on v53. At least on my end, the headset's decoder latency rises and drops in a repeating pattern and the headset's framerate tanks for a split second at the same time the decoder's latency drops. The glitchy lines show up worst at that moment. It is significantly worse in darker scenes, but I don't really see it in bright scenes, even with high motion.

Troubleshooting I tried... Foveated rendering (on or off), HEVC, h264, nightly, stable, bitrates down to the minimum, even downgrading to older versions didn't change much. Turning down the transcoding resolution and maximum buffering frames to a point of having a low res view and very high latency (like 100+ ms) is the only way to mitigate it fully. I think tearing might be an unrelated connection issue since I don't see that on my setup.

If it is an issue with the headset's firmware, it makes sense why even downgrading ALVR to a version where I didn't have the issue didn't make a difference, and v53 coming to my headset is about the time it started for me.

Environment

Quest 2 - v53.0.0.*

CPU - Ryzen 5900x GPU - NVIDIA RTX 3080

Install

ALVR - v20.0.0-dev14+nightly.2023.05.27 (Matched Streamer & Client) SteamVR - 1.25.8 Proton - Experimental (Also tried stable 8.0-2) OS - Arch Linux (Kernel 6.3.4-arch1-1)

zarik5 commented 1 year ago

I can add that I have none of these issues on the Quest Pro, and on the Vive Focus 3 too. This is related to the Quest 2 underclock/thermal throttling.

AverageWaffleHouseEnjoyer commented 1 year ago

@zarik5 my quest2 isn’t abnormally warm running ALVR and the issue doesn’t get worse over time so I don’t think it’s thermal. Perhaps the quest is incorrectly thinking it can downclock more than it should since it’s not actually rendering a game and setting a fixed cpu/gpu level in side quest could help. I’ll try this and report back in a bit.

Edit: It didn’t make a difference. Even tried ALVR over usb and no change either. Unless I can rollback the quest software to test it there’s nothing more I can think of to help.

Beefanman commented 1 year ago

@AverageWaffleHouseEnjoyer Yeah it being software related would make sense, as it happened one day randomly with no settings or anything changed. Really hope meta stops being a pain with everything

AverageWaffleHouseEnjoyer commented 1 year ago

@Beefanman Going off this reddit thread, it indeed is a frequency scaling bug meta introduced on v53. It affects all streaming apps including meta's own link, and some even report it in native apps running on the headset. Someone was able to get a response from meta support essentially with "Fix coming soon™."

I also hopped on the testing channel and can confirm it still isn't fixed in v54.

AverageWaffleHouseEnjoyer commented 1 year ago

Good news everyone! I got the PTC v55 and the shimmering pixels are nearly gone as long as you tweak ALVR a bit. Tested on both Win11 w/ airlink and Arch Linux w/ ALVR. Airlink is nearly shimmer free in dark scenes, however ALVR has more shimmers than airlink with default settings and resolutions nearly the same.

I noticed airlink's default has significantly more latency than ALVR's defaults, and bumping the maximum buffering in ALVR to ~3 frames and lowering the controller prediction to ~2 frames seems to more closely match them and completely eliminate it for now. Prior to this issue I had 40-50ms of latency and now I have to use 70-80ms in order to not have shimmers. Not ideal, but it's something I guess.

TLDR: Bump max buffering to ~3 frames on v55 and shimmering is gone with the caveat of more latency than prior to the issue starting.

Kirottu commented 1 year ago

This issue is still very prevalent for me on v55, even with the 3 frames of buffering on both 80Hz and 120Hz.

Tanza3D commented 1 year ago

I'm experiencing the same issue here. RTX 3060 TI

stale[bot] commented 1 year ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.