I have a 8KM*8KM landscape and use world partitions. My landscape material does not use the LandscapeGrass node, but the Landscape is still ticking and consuming a lot of my CPU time. Is there a way to completely disable the landscape tick?
I read the source code of Unreal carefully. Landscape is managed by LandscapeSubsystem. I think I should be able to get LandscapeSubsystem at runtime and modify the values ​​of some variables in it to affect its tick behavior.
Unreal’s Subsystem is mapped by class, and they are all managed by SubsystemCollection. SubsystemCollection will find all subclasses of WorldSubsystem during initialization and initialize these subclasses (subsystems), so you can’t even create a class inherited from LandscapeSubsystem through C++ and replace the old Landscape Subsystem.
I think this may be the only place we can do it without modifying the engine source code.
I wonder why the engine developers don’t add a key name and priority to WorldSubsystem, and then the subsystem is searched and mapped by this key name, so that we have more freedom.
There is so much wrong with this engine there’s no point wondering about anything at all.
For instance - Why on earth does the landscape Tick?
You should really profile in a packaged build before doing anything drastic.
Both the GetActionableMessage call and ComputeGrassMapGenerationHash are #if WITH_EDITOR, so will be compiled out of a build.
At first, I was just like you and questioned why the landscape needed ticks. Later, I looked at their implementations. The two that impressed me the most were Landscape Grass and Streaming.
Yes, you are right. But if landscape grass does become a performance burden, at least I can doing some magic, right? Now I can’t even control its tick interval
Grass is baked in editor, so as not to need ticks.
Ofc, if you are in editor, then the grass and even foliage have something - which I would really hope is controlled by the landscape for performance sake - that would alter their position as you sculpt.
Even considering that, tick?
Someone was smoking crack when they set that up.
Sculpting is an input driven action. You already have the interaction needed to make changes without having to run checks on tick.
And it pretty much goes for any and all actions you can take on the landscape, including the nondestructive layer sculpt stuff.
You can probably take it as a brilliant example of just how bad things are all over the engine when it comes to performance…
Landscape is trash that no professional would ever use. So, obviously it’s a given that it is fully unoptimized and worthless.
But you’ll likely find the same overlooks (or flat out compromises) all around other key systems, including sky athmosphere, volumetric fog, chaos, etc…
And all those parts are not supposed to be Beta…
So imagine stuff like Nanite and Lumen?
I checked the code, and the landscape grass tick is mainly for culling.
They said that in order to take care of people who are new to the engine, many default settings of Unreal are not optimized. So now we need to spend a lot of time to learn, discover, and do all the performance optimizations. Although I don’t exclude these, I still hope that Unreal can write some documents to tell us some common techniques, instead of asking us to Google after discovering problems again and again, and find scattered optimization videos on Youtube
They dgaf about performance.
People have asked them to be more performance consciencious for decades.
They just don’t care.
Epic is not a very good company generally speaking anyway.
I don’t think any of us ever expected anything out of them promising to be better.
Particulalry after sending all of us surveys, getting told exactly what to do, acknowledging it, and wholly ignoring it?
Not to mention, they prefer to lay lawsuits on underage kids for “cheating” over fixing hacks,
Consistently and repeatedly steal ideas to use in Fortnite from other developers, knowingly break TOS with other companies…
Really, if it wasn’t for idiot teenagers spending their parent’s saving on cosmetic skins there wouldn’t even be an engine. Tencent would have lost however many billions they put in to get a 40% stake, and maybe the world as whole would be better off for it…
Then again some of the stunts off this predatory company aren’t as predatory as you’d expect (read as not all bad). For one, you have Tim fighting apple over Apple being a total pos. Naturally, that too isn’t for your or my benefit, its just predatory behaviour like i said, but it could end up being positive as a whole (he sure likes to parade it as such).
And then you have their fragant and fully legal tax evasion, which I applaud.
Instead of paying uncle sam they give away money via grants so they can deduct it off.
On that note - the only people who have ever made any difference what so ever for regular folks are usually grant recepients.
But then what does this predatory company do after giving them a grant?
Well, they either steal thier stuff, or hire them and force them to sign NDAs up the wazoo so they can literally no longer be helpful…
Anyway, back to the optimization thing:
You have to do what you are doing.
Pull the engine source, pick it apart, build, and stick with your build. Forget their “updates”.
Benchmark everything, benchmark often, and don’t rely on forum posts, since people can’t even understand the difference between the cost reductions between sphere trace and box trace without arguing and sharing a bunch of uneeded BS.
Also, keep in mind the forum is often “policed” and heavily censored, because sharing good information that may help someone else is generally not allowed (I have to assume this is due to the fact they want to sell their own services. Goes back to them being predatory again)…