I just installed Simplygon for UE4 and I'm wondering if the number of LODs impacts performance? I'd imagine that it would as the engine has to handle the loading and unloading of each detail level but I'm not sure how much of a performance impact this would have. Is it better to just go with two LODs, one for close up and one for far away or ?
Would love to hear your thoughts on the subject.
Replies
1. Reduce Polygone / Texture budged on screen
2. Don't reduce visual quality
You have to understand that your model (whatever LOD-level it is) is only at a certain distance perfectly using its budgets. If it's closer to the screen as the "sweet-spot" it starts to show it's made out of edgy polygones and blurry textures and if it's further away you're wasting quality.
Of course every LOD adds a bit of overhead - ingame, on disc and in your work schedule. But this overhead should be outweighed by the pros. If not you have too many LODs.
If you just have a billboard it might be OK with two LODs.. but for bigger and more complex models you might need 4 or 6 levels.
Simply create an area with hundreds or thousands of instances of your lodded model and then test it out...
I decided to go with 3 LODs, one at 100% one at 50% and one at 25% and then I used manual screen size settings to determine when the transition should happen and it seems to have worked great. Got about a 20 frame boost in most areas of the level so I guess whatever cost of transitioning to the different LODs is negligible if it boosted my FPS so much.
Man is simplygon a fantastic tool though. So glad Microsoft bought them and made it available for free!
The thing that impresses me the most is that it handles doing LODs on skeletal meshes and it can respect/preserve morph targets on those skeletal meshes. So lets say you have a morph target that makes your character obese, that shape holds up through the LODs.
The skinning preservation is no joke either, fan-fucking-tastic.
It is also amazing at texture merging which helps reduce draw calls.
Also map LOD's in Unreal and level streaming... wow...
But back on track.
The rule of thumb I use is that each LOD should be roughly half of the previous LOD, so 100, 50, 25 is a good place to start, but I often find that I can go even lower depending on the asset and how it is used in the map. A lot of assets I've been crunching lately have been 100, 30-35, 10-5 so while it takes some extra time to tune each asset it really helps to squeeze as much out of each as you can. Because of the amazing way it handles textures and normals you can get a lot out of each step.
You can also have steps closer together at the high end and be aggressive about LODs on the lower end so it quickly LODs as soon as you step back. You want that transition to be fairly smooth so you might go 100, 75, 25. A decent example is something like a keyboard with all of the keys modeled, it might be important for in-game cinematics that show hands typing.
I also like that you can reassign LOD1 as LOD0. Quite a few times I've crunched an asset looked at 75% and decided that is my new LOD0. Of course that isn't a model I would want to actually work with in Maya or Max but it's great that it can pump it out and reduce all assets right off the bat.
Great tool, I love it, I'm so glad its free... I hope it sticks around and they don't twist it's team to focus on something else.
You don't have to make the morph targets by hand, you just can't use the remesher feature.
Remesher has some sexy features, like rebaking and repacking textures as well as recreating normals but it won't preserve morph data. If you stick to reduction, it works with morphs.