Landscape Performance Tips for Mobile?

Currently, I am working on a landscape project targeting mobile. We want that to run smoothly(at-least 30FPS) even on budget mobile devices.
But, it’s really hard to find such tips on the internet or in the official docs.

Yes, most of the existing optimization stuff is working here. So, I did them & I also found LOD distribution helps a lot too.
Here’s my work so far:

I could reach up to 40FPS (without the material & gameplay). But I think that’s not enough since I need some room for materials & the gameplay logic.
My gut feeling is frustum culling is not working correctly or too expensive.

Because, when I look at the ground, it still gives the same amount of FPS.
But, when I look at the sky, it gives me something around 55 FPS.

So, is there any process to make it better?
I know, there should be some research/work on this area especially since Fortnite works well on mobile.

Looking forward know your ideas.
Thanks.

Best option is to not use landscape.
In general, a custom mesh will far outperform it, and you can actually bake it in engine with the built in tools for world composition.

As with anything, the number of tris on screen is directly related to performance.
The way landscape works could be beneficial if the tris count at a distance was properly reduced - however how it is done in engine usually results in too many drawcalls.

For mobile, I use smaller tiles to generate the base and the HLOD system to render at a distance.

Overall, You want a base number of draw calls around 100 with just the landscape at a distance. The lower this number (less tiles, more consolidated hlod actors, etc) the better your performance.

As far as fortnite goes, it’s 1 map with 1 landscape. Not a tiled world, so there’s really little impact on performance/drawcall count. You just need to balance the number of tris of the base for it to run appropriately based on resolution.

What you have to look at when using the unperformant built in landscape is the number of components. More components = more drawcalls.
more drawcalls = less performance.

For instance. Any size terrain with 256x256 components will perform like trash.
The same size terrain with 8x8 components will perform OK.

the base size of the landscape can be directly related to the number of components, but thats where the resolution comes in.
up the resolution, half the tile count. This should result in an approximately similar size.

1 Like

Thanks a lot for these ideas. I’ll try them out.

Do you know place to read/learn about above subject?

Not really, but you can look up any world composition impostor bake tutorial to see how to bake what you have down to a mesh.

I should mention, using quadtree or octree is the most performant way to set up a custom system you can change at runtime. Doubt this works good on mobile though.

Thanks. I’ll dig into level-streaming & related stuff.