Does Nanite defeat the purpose of Hierarchical Instanced Static Meshes?

Hello guys,

I was wondering if using Nanite meshes (that are not foliage or transparent) was a bypass to using directly Hierarchical Instanced Static Meshes (HISM)?

From what I understand, the number of draw calls for a specific mesh using Nanite is basically reduced like for HISM.
So far, the only reason I see to use HISM are for systems not supporting Directx12 (needed for Nanite) and for foliage/translucency.

Is there technically speaking a reason to combine both Nanite and HISM to make performances even better? Or is using just Nanite enough and combining would be overkill?

I’m spawning static meshes at runtime and was wondering if using HISM would be wasting time or not.

Have a great day!

Spawn 100000 static meshes in a loop and record framerate, then spawn one HISM component with add instance 100000 times in a loop and record framerate. Let us know the results.
Do it with one low poly mesh and once with one high poly mesh.

2 Likes

I was wondering this too… bc it seems like most features in Ue5 revolve around ISM/HISM and I’m just wondering why if nanite is already doing that behind the scenes. Is there some other performance hit besides rendering?

Hello guys!

Alright so I did some testing on my side.

It turns out that spawning a grid of 10 000 Nanite meshes is still more expensive than the good old HISM.

I’m losing 2 ms every 10 000 spawned meshes. I go from 9 ms to 11 ms with 10 000 Nanite meshes, then from 11 to 13 ms with 20 000 and so on.

Spawning them within a HISM component is costing almost nothing. Also, it’s interesting to note that spawning the 10 000 actors with only Nanite Meshes is freezing my CPU for like 2 seconds whereas it’s instantaneous with the HISM.

Also, remember an important thing. If players are using a system that does not support DirectX 12 or Vulkan, Nanite will not be used so be careful when optimizing your game relying only on Nanite tech.

I’m guessing I’ll go the good old road by combining both Nanite & HISM (more pain but more gain)!

Have a great day!

Romain

5 Likes

I think you might get very different results if it’s a high poly mesh?..

( not a big nanite fan yet, but, just saying… )

I’m planning to combine both Nanite meshes with HISM so I have the best of both worlds (low draw calls + Nanite poly counts) :slight_smile: .

Maybe it wasn’t really clear in my previous post! I edited it!

1 Like

Isn’t nanite supposed to instance things with the same material behind the scene anyway?

No, it’s a totally different rendering method. It’s not instancing, with Nanite, only the screen visible polygons are drawn.

Did you try this and find any benefits? I’m confused as to why you would need hism for low draw calls if nanite meshes are not using draw calls?
“Nanite runs in its own rendering pass that completely bypasses traditional draw calls”

Well, I did some testing and noticed a gain of FPS using HISM + Nanite over only Nanite, but for a really high number of spawn actors (like 100 000 for the same actor).

For my specific case, I had to use HISM anyway as I need to use translucent materials on some meshes and Nanite does not support it. I needed to switch from a translucent actor to a Nanite one. Also, Nanite is only supported for Vulcan and DirectX 12, which was another limitation. It means that if someone is playing the game with Directx 11, the performance gain from Nanite is completely lost.

So in my case, I prefer to go the HISM road combined to Nanite because I’m working on a survival game in which players can spawn a lot of buildings. I prefered to be careful and work on this method to avoid performance problems down the line.

Not sure it would be worth it for a typical linear game though!

1 Like

Hi there
I also test using instanced static mesh as I believe the hlod is set on nanite mesh.

I realize that streaming or spawning assets is faster using using instanced + nanite than static mesh nanite (even thought both become nanite instances)

But the big benefit is inside the editor viewer. Using tons of instanced in editor vs using static mesh (bot nanite) . Editor is a lot faster using instancing.

1 Like

Do I read this correctly, as if you compared Actors with nanite meshes to HISM with non-nanite mesh? Isn’t that like the wrong comparison? I think ISM with nanite vs HISM without nanite vs HISM with nanite would have be the right way to test here…

1 Like