Matinee crashes on iOS ?

I was planning to test out this demo to see how well it would perform on my iPad when 2 hours after I started the build and after deployment, I get this :

Mar 31 18:46:13 users-iPad UE4Game[474] <Warning>: [2015.03.31-15.46.13:191] 0]LogModuleManager:Warning: ModuleManager: Module ‘GameplayDebugger’ not found - its StaticallyLinkedModuleInitializers function is null.
Mar 31 18:46:13 users-iPad UE4Game[474] <Warning>: [2015.03.31-15.46.13:192] 0]LogAIModule: Creating AISystem for world UEDPCMatineeFightScene
Mar 31 18:46:13 users-iPad UE4Game[474] <Warning>: Assertion failed: NumBones * BoneMatrices.GetTypeSize() <= sizeof(GBoneUniformStruct) [File:/Users/build/BuildFarm/build_++depot+UE4-Releases+4.7/Engine/Source/Runtime/Engine/Private/GPUSkinVertexFactory.cpp] [Line: 155]

The question that I’m facing now is, how can you figure out if an asset fails or not on iOS ? I assume the number of bones is too great… for GLES2 probably, but I would’ve assumed it uses uniform buffers under GLES3… right ? So the bone limit should be up there with D3D10+ levels.

Hi Ciprian At Facerig,

Have you had a look at the Content Creation for Mobile Platforms documentation? Is this the info you’re looking for: All mesh types can have up to 65k vertices due to the lack of 32 bit index support on mobile hardware. Skeletal Meshes can have up to 75 bones.

You’re obviously talking about GLES2 devices there. I have an iPad Air 2 with GLES3 which can do at least 2^24 vertices (actually most GLES2 devices have the extension GL_OES_element_index_uint which enables 32 bit indices.
And up to 75 bones ? This is probably again a GLES2 limitation. In GLES3 you can have 12 x 65K uniform buffers which amounts to at least 12 000 bone Matrices. You want to say that Unreal doesn’t check for the existence of GLES3 in order to use its capabilities ?

EDIT : After doing a quick search it seems they just create a ES2 context on iOS, there is no reference to kEAGLRenderingAPIOpenGLES3 :expressionless:

Yeah, before I responded, I double checked the documentation for a distinction between GLES2 and GLES3 with respect to skeletal mesh limitations and I also couldn’t find one. I will pass this along to the iOS dev and see if he has any further insight.

Hey guys, short answer, we only support the GLES2 path and Metal for mobile.

At the time of implementing the mobile renderer, we had to decided whether to spend our time getting it working on a broad range of devices (ES2) or spend less time on that and also support the newer ones (ES3). We started off going wide on ES2, and by the time we could focus on ES3, Metal was out :slight_smile: Metal is such a departure from ES3 that it didn’t make sense to spend any more time on ES3. It also doesn’t help that we share the RHI (renderer hardware interface) for all OpenGL variants, whereas Metal is its own lean & clean one.

Also forgot to add that on Android we support ES2 and ES3.1+AEP (the full desktop renderer).

Ok, so I now tried to uncheck the checkbox where it says “Support GLES2” and left just the Metal checkbox on with iOS 8 as minimum, and I’m running this on an iPad Air 2. So this basically means it fails with the Metal API too ? :expressionless:

Ah now that sounds like a bug; it should not be taking that code path; I’ve entered bug UE-13255 so it gets tested & fixed.

This is now fixed and will make it into 4.8.

Ok, now all I need is a release date for 4.8 :slight_smile: