Is Instanced StaticMesh useful for Mobile?

I test Instanced Staticmesh Component for Iphone6 Plus.

same map, same mesh

1 Actor with 900 Instance mesh : 60 drawcall.

900 StaticMeshActor No-Instance mesh : 900 over drawcall.

but No-instance mesh is beffer for frame rate. 40fps(instance mesh) vs 60fps(no instance mesh)

Is there any tested data for this? Should I do not use Instanced Staticmesh for mobile??

OpenGL ES2 does not support instancing so it is emulated. That happens here:

	static FORCEINLINE bool SupportsInstancing()						{ return false; }

So, although it reports 60 drawcalls, it is really 600. I do not believe there is any workaround or possible fix for ES2.

Let me know if you have more questions on this,

-Gil

Hi,

We think this post contains useful information which we would like to share with our public UE4 community. With your approval, we would like to make a copy of this post on the public AnswerHub which includes the discussion but strips out your username and company name. Please let us know if you are okay with this.

Thanks!

Thanks!!!

As a side note, on Metal iOS devices (iPhone 5s and newer) it will perform hardware instancing.

Top above Result,

I’ve tested on IPhone6 plus(maybe Metal is supported)
But instancing is slower than individual draw call.

in BaseEngine.ini,
bSupportsMetal=True

Instancing is fast for Metal?

Yes, on Metal it should be faster. I’ll loop in the iOS person to make sure it is going through the Metal RHI.

Yes, I agree