Hi
We are using Nanite pipeline.
We have been investigating ISMs. We have very large worlds with large structures, many actors currently which I want to reduce, as well as anything we can do to help nanite performance
Found that ISMs where effective in saving CPU costs, by about 1-1.5ms in the editor on RHi & Render Thread. Did also seem to help GPU. Again editor sampling so timings could be off
25k actors down to 8k actors by using ISMs
When it comes to grouping objects to put into the ISMs, I assume we still need to be reasonable carefuly on how we batch it?
For my test, I just selected every instance and used the modelling tools to put them in a ISM, which isn’t particularly “intelligent”, as all the instances have to be rendered if a single object gets within the frustum right?
An example would be:
We have a massive building which has loads of interior walls which are the same. Does it make sense to put those all into 1 ISM, or more intelligently build the ISM so its split into multiple areas?
I watched this Unreal Fest which said do still use ISMs, but didn’t go into detail if there was any particular batching strategy
https://www.youtube.com/live/Cb63bHkWkwk?t=6272s
Weighing up art/dev time vs what nanite actually needs
Does this impact GPU nanite performance at all?
I assume it must do, as nanite would have to cull more meshes itself?
Just trying to understand the full impact. This really matters for lower end hardware as we are trying to make sure we can scale to older GPUs
I know for nanite we should use custom primitive/instance data and not material instances ideally as another optimisation
If we are meant to use a more intelligent way of converting static mesh actors into ISMs, is there anything automated to do that? Like by distance/cluster?
EDIT:
Sorry forgot to add as well
Do ISMs work with the new Virtual Painting system?
I have read that it doesn’t survive the conversion process
and what happens if we add more to the ISM?
Thanks
Karl