[GearVR] Media Texture Aliasing/Filtering Problem

Hey Everybody,

we got severe problems using the new and “old” media player engine on the Galaxy S7 Mali-T8 UE 4.12 and 4.13.
On Galaxy S6 Mali-T7 and 4.10/4.11 everything looks way better!!??

We key the video in realtime - here is the result with the basic 30fps video from unreal in the editor ( probably because of aa:

This is how it looks in the gear vr -
it feels like the texture filtering is not available on media textures…

( it looks way worse inside the gear )

Anybody got ideas? We tried different file formats - sizes and fps. It looks the same with unlit/opaque/non-transparent. Textures just look bad. We also tried the r.ContentScaleFactor=0 command with no effect.

4.13 has the same problems.

Thanks for any help

I find it’s handy to output “Get Viewport Size” to be sure that everything is being rendered at the resolution you expect for your device. And if it’s not rendering correctly increase r.MobileContentScaleFactor until it does work.

Personally I haven’t found r.MobileContentScaleFactor = 0 to work either.

Also you could use r.MobileOnChipMSAA = 1 to force MSAA on the mobile device and may help if the performance doesn’t take too much of a hit.

Try this. Open your material and click on the Texture Sample node. In details, change Sampler Source to “From texture asset”.

this is the default setting on my video textures - so no difference there

Get Viewport Size always returns the same resolution - r.MobileContentScaleFactor and r.MobileOnChipMSAA does not seem to have an effect.

I had an issue with the left eye not being rendered - it seemed the fact that i suddenly had r.MobileContentScaleFactor=0 and r.MobileContentScaleFactor=1 in the same config caused this issue.

No changes to texturesampling. Videotextures alias really hard in the distance on the S7. On the S6 everything looks really good??!??!

Could that be because of the different chipsets between the S6/S7?

The S6 has the Exynos 7420 while the S7 could have either the Snapdragon 820 or the Exynos 8890. So if your S7 has Snapdragon then Unreal will select an Adreno device profile so it may be pulling the settings from different places or pulling in a child device profile that is over-riding something.

As i stated above, both are based on Exynos Mali.
Is there a bulletproof trick to asure the profile is being used? Or to display the profile that is being used ?

I’m sorry I missed that at the top. Honestly I just strip out as much as possible from the children profiles and put everything in the base [Android DeviceProfile] so that I know 100% what is going on. The idea being with that variable out of the way its easier to debug. When everything is fine i can bring the other profiles back and see the effect and tweak accordingly.

Though in your case it should be using [Android_Vulkan_GalaxyS7_Mali DeviceProfile] or [Android_Mali_T8xx DeviceProfile] which inherit from [Android_High DeviceProfile] which inherits from [Android DeviceProfile]

Turning on “Use Full Precision” under Mobile in the material will fix it.

Thanks! Will check as soon as i can.

I’ve found an additional issue which I’m fixing for 4.13.1. The fix is on GitHub here: link text

Since this is just a Java file you can just replace it without needing to recompile the engine.

Hey Chris, just tested your file and the suggestion “full precision on”
Sadly it doesnt change much. I compared it with a older Build on a different phone and the initial build on the s6 “wich still looks the best”

So either i dont understand the principal of using videos in ue4 or the problem still persists!

Odd. This did fix the issue for me and some others I’ve given the fix to for testing. Can you send me a test project to look at?

Here are two ways this problem can be fixed.

  1. Scale your video textures manually(multiple video files) according to the distance if possible, there are no mip maps.
  2. For the corners we need a feature called alpha 2 coverage for masked, translucent works if you have respected point 1.

A2C is still missing as of now, so anything that is set to masked will alias.