Mobile material error (show only black)

Hello,

I’m trying to apply PBR for simple objects. In OS X and Windows, works without problem, but in mobile (iOS or Android), the object stays black, without any metallic “feel” or reflection.

I was able to make the metallic look 'n feel using scalar parameters in material, but I wish to use PBR, with images as Metallic and Roughness.

I have made a simple project to demonstrate the error, that is shown in UE4 mobile preview as well.

The screenshots from desktop and mobile attached are from the project.
The sample project is also attached as MyProject3.zip (UE4 4.17.1)
The images for textures is also in the zip file metal-textures.zip

Can someone help with this? I already read and changed a lot of parameters (even Target Hardware Settings) and I can’t make the mobile preview (in UE4) or even iPhone 6S device show the material reflection/metallic properly.

Thanks in advance!

Which difference between desktop and mobile screenshots? Reflection cubemap.

It looks like in your case, on desktop reflections provided by post process screenspace reflections feature. But on mobile post process effects works only on hi-end mobile devices.

So, try to use simple reflection capture actors in your scene - reflection spheres and cubes.

There are any documentation or simple advice on how do this? (simple reflection capture actors)

By the way, you told that “mobile post process effects works only on hi-end mobile devices”. What’s a high end mobile device for UE4? Because even the built-in mobile preview, neither iPhone 6S (iOS 10) worked.

Thanks!

I got the example working. That’s why I accepted your answer :slight_smile: Thank you.
I had to put a new HDRI I had and the Sphere Reflection Capture actor as well with it. As seen here:

If you have more sources I will be glad too!

Thanks again!

Sorry, but right now I tested on Mobile Preview from UE4 engine (built-in) and worked.
But in the real device, the texture/material doesn’t shows up. Only the light and dark grey squares.

Do you know anything about it?

iphone6 is kinda hi-end device.

I’m working with android, and some post process effects works on ES2, but it may be very slow…

This document is enough to understand reflection environment feature.

First of all make sure that you have build lightning, because this type of reflections works only with lightmaps. In case this object is dynamic - well, you need to use fake material reflections…

Which settings do you use for mobile renderer? I’m using Target Hardware - Mobile/Tablet, Maximum Quality, but with disabled Mobile HDR.

Hello,

Target H/W was always Mobile/Tablet.

I already tested with:

  • Scalable without Mobile HDR
  • Scalable with Mobile HDR
  • High Quality with Mobile HDR (right now)

In attach the screenshot of what is happening on device.

By the way, for testing, I switched to new project in UE 4.16.3 for testing.
With this version of engine, in iPhone 5S with works (iOS 10.3.3), but not in iPad 3 (iOS 9.3.5).

The iPad (or iOS 9.3.5) can be the problem?

Thank you.

This default material means that shader not working on this hardware, so maybe material too complex? What else you use in it?

Here is my example of wet material with reflections that works fine on android:

Btw, how did you setup device profiles ini? Did you copied original file from engine folder?

By the way,

iPad 3 has only OpenGL ES 2.0, not 3.0.
But I made a quick sample in Unity (the same cube with materials) and worked, so I think OpenGL ES 2.0 supports the “PBR”, even fake.

edit: Also, with preview set to ES2 in UE4, it works as well (screenshot attached)

So, what can be done for works in UE4 (in device)?

Thanks!

The problem is that my Material is using more textures.
Instead of roughness being a scalar value (like yous) it’s a texture.
The same for Metallic, Normal, Base Color and Occlusion.

I figured out that OpenGL ES 2.0 has limit in samples, so I removed the Normal (for test) and now works in iOS 9.0 (iPad 3) and also Android

I haven’t changed the Device Profiles ini file. What did you put in yours (for curiosity?).

Thank you!

Nothing. I simply get base one from engine folder, renamed to default and use as is.