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:
- 492 meshes and 283 draw calls - 350 fps on pc, 80 fps on mobile
- 492 meshes and 116 draw calls - 550 fps on pc, 80 fps 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!
Hi @mise how are you? Just checking in if you’d like any more help
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.