What is most performant? Moving a very high poly mesh using set location in blueprint or moving it as a GPU niagara mesh particle?
Hey there @Supermatta321! This is dependent on a number of factors. Basically if you need the object to just move as a background and nothing else? A GPU particle will often be cheaper performance wise and can automatically be culled if it’s a problem in many cases due to only needing to be handled on GPU and being a background asset.
What is the asset’s use case? Are there going to be many of them? Depending on how high poly you’re talking there could be issues in either camp. Nanite can help reduce performance overhead for really high poly static meshes if need be, but it comes with it’s own drawbacks.
Hi and thanks for answering
I thought of changing the position of my custom ocean mesh at intervall so it follows my player. This makes it possible to have a mesh with lots of polys in the center and less the further away you get. Nanite would be great to use, because then I could have just a large high poly mesh, but it doesnt work with single layer water, as far as I know…
Im also considering making a custom PCG landscape generation around the player, but I have a feeling that creating this at runtime will be more performant than changing the position of the ocean mesh for example every second.
If I go for the change position option, I thought it might be more performant to have the mesh move as a gpu mesh particle instead of through blueprint!
If the material issue could be sorted, I think it’d be functional with nanite since WPO is now in a solid state. I can’t speak for PCG runtime performance myself, though if it’s just positional it might be worth a try. Are you intending some kind of unlimited ocean?
Yes, im creating a big map, and instead making a lod system or PCG, I thought I could make a plane mesh that has high resolution close to the center, and less when you move away. If you then move the plane with the player and keep the same material (which is world aligned) it will give the impression that there is always a high resolution on the ocean close to the player. It actually works quit well in blueprint, but maybe thought it could be an optimization to do it on the GPU through niagara.
To get the performance gains for Niagara in this use case, it’d have to be GPU bound only, which could be a problem if you need collision on that ocean. I’d say stress test and profile both, otherwise I think your blueprint/localized SM is rather effective for your use case unless you really only need the mesh itself and no other features associated with SMs.
I just need a collision at the same height, meaning that I can scale a simple plane to very high XY scale and add it to the same height as my ocean, while keeping it invisible.