[Quest] Quest native specific bug with texture offset?

Update: It turns out it’s a “feature” for mobile, which can be turned off. See this comment by UE: By default mobile uses half precision in pixel shader calculations to improve performance. You an either perform the texture coordinate math using full precision by checking the “Use Full Precision” checkbox in the material (under Mobile), or by using a Customized UVs to perform the UV math in the vertex shader, which always uses full precision, and passing the result to the pixel shader. There’s an extra nuance for external (media) textures which can make them use half precision even when using Customized UVs. If you notice this, use the Full Precision checkbox.

(Edit: I’ve submitted a bug report, since no one pointed out anything obviously wrong with my code.)

I’m running into an issue that I feel like may be a bug specific to UE on the Quest. Here’s a simple project that exhibits it:

Launch that on the Quest and click the right Touch trigger, A, B and grip. What it’s doing is using a texture from a 2048x2048 image file that has the same image repeated four times. Then there are four materials, each of which is using one quadrant of it for the texture sample. The buttons let you switch between which material you’re using.

The bug is that only the top-left material is non-blurry/pixellated. If you use any of the other three, there’s a weird effect happening that makes the texture look bad. This affect only happens on the native Quest application. If I run the same app using Oculus Link (on the Quest), it looks fine. If I run it as a desktop application (no VR), it looks fine.

I have tried this in 4.23 as well as 4.24 with the same result.

Maybe I’m doing something wrong. I got to this point with this simplified example because I was originally trying to do stereoscopic video from files that were side-by-side or over-under. I found the exact same effect when trying to use half of the image for one eye and half for the other. The half that wasn’t the first half of the video frame would always get pixellated.

If anyone would like to try this out and comment “yeah, I get it, too” or “it’s not happening on mine” or even “that’s because you’re not doing ___________”, it’d be helpful. Keep in mind it’s not just an image texture thing but also happens with video. And it only happens on the Quest native app and not on Oculus Link or the PC. Thanks!

Here are my materials. For all of these, I changed no settings at all other than assigning the Texture Sample’s Texture property (all of them use the same texture, test_texture.png). Everything else is as it would be by default.

I’ve created another project, this one using a video file. It simply has an asterisk in the center of the video. The video is positioned a fixed distance from your eyes, so testers are seeing it close enough to notice the issue.

Here’s a link to this project:

In this one, I have two panels joined together to look like one single screen. The left panel shows the left half of the video. The right panel shows the right half. You can tell that the right half is getting messed up for some reason. Both materials are using the same MediaPlayer/MediaTexture. the first material is using the left half and the second the right half.

Here’s a screenshot. You can see that the left side looks normal, but the right side has some artifacts/jagginess. Not sure if it’s trying to do anti-aliasing on it or what:

Here’s the exact same code, but run over Oculus Link instead:

While it appears slightly different, you can see that it’s perfectly symmetrical. This bug appears to only affect the Oculus Quest.

It appears very minor here, but what I’ve noticed is that on a larger scale, it’s very off-putting. It’s a pain because I want to play stereoscopic video, which requires offsetting so that you can get a left and right eye image from the single movie file. These same stereoscopic movie files play just fine using Oculus’ built-in movie viewer.

Bug has been created: Unreal Engine Issues and Bug Tracker (UE-88736)

It’s been updated to ‘By Design’ ???
What’s going on?

It really makes all the hard work I put into making two isolated test cases worth it…

If it was just an accident, ok. But my fear is that the accident won’t get fixed,

For anyone following this thread, please see the update I posted at the top. I touched base again with them, and they added a clarification as to why this is “as designed.”