Render performance

update: it seems that mainly on mobile (or probably: lower-end machines) the instances are not doing any better than the non-instances.

in certain scene I get these stats:

  1. 492 meshes and 283 draw calls - 350 fps on pc, 80 fps on mobile
  2. 492 meshes and 116 draw calls - 550 fps on pc, 80 fps on mobile

on mobile:
left 1) 283 draw calls | right 2) 116 draw calls

it seems like evaluateActiveMeshes and computeWorldMatrix are compensating for the reduced rendering time.
possibly the GPU is also part of the difference, but I don’t think my Android phone will let me inspect that.

That’s my brainstorm for now, any of your thoughts could be helpful, thank you.

Were you looking on a similar period of time ? This is really weird evaluateActiveMeshes would grow as much but this is really good to know.

yes, both were exactly 10 seconds.
only difference is cloned meshes/materials vs instances

I ll have a look locally to see the difference, in the meantime I wonder if you could rely on thinInstance instead ?

The visibility flag is a must have for me, so I don’t think so.

I think the key for me is to rewrite the evaluateActiveMeshes in such a way that it’s less costly, because I know which ones are visible so it shouldn’t cost that much, right?
Maybe I should keep a map of meshes that are ‘active’.

Then again, if I tell Babylon I don’t need any frustrum/camera/obfuscation checking (which I think I did?), then Babylon could do this efficiently as well, in theory, as far as I understand (which, like I said, I don’t right now ;)).

Thanks for the support!

1 Like

Hi @mise how are you? Just checking in if you’d like any more help :smiley:

Hi, thank you! I would like some more help with performance analysis. Unfortunately, I am unable to help anyone helping me right now, so I think it is best to wait.

When I continue my efforts on this topic I will create a new post and will tag you.

2 Likes