UE4.17 - Needing pointers for foliage optimizations

I have searched over the forums, and, google, and i have not found any updated data on optimizations. Almost all data i found was like 4.6 to about 4.14 era times. I dont know if the data or methods have changed or not, maybe they haven’t.
Really the question falls down to: what am i looking for and depending what i find, what do i change?
Also, is the procedural foliage tool better to use over the paint tool?
CPU load better to shoot for over GPU? How do i change between foliage eating up too much GPU and move to CPU (or other way around if that’s how it is)? Is that even possible?

You know, just … basic … stuff lol


I also would like some performance pointers. I’ll just bump to bump. This would make a great live stream. I’m curious as to what would be optimal, especially for mobile/AR/VR. I know masked isn’t friendly, and I’ve been modelling the vegetation I need with as little masked properties as possible.I’m using lower bit depth right now. Also the cost of stacking of UV Islands, and performance would be appreciated.
There were some beautiful screenshots during the last animation live stream of procedural foliage.

The first thing you should do is go and vote for this issue Unreal Engine Issues and Bug Tracker (UE-43093)

Unfortunately, foliage has been broken for some time now and is pretty much unusable unless you are running a super computer:

In reality, the methods of optimizing foliage hasn’t changed.

Typically, you’ll want to make sure you are making the best use of LOD’s, use 3D imposter sprites on a plane for some cheap distant trees… from 01:38:00 shows some of the tricks Epic did to make the A Boy and His Kite demo.

But go and vote for the issue to be fixed!!

I understand that issue. I’ve seen it. I’m saying. If there was a way to see. Texture res, and tris per screen space. Grass can be horrible as. Just say one square meter can have 5,000 tris, and 350mb of textured size map. It would be a nice heat map setting like shader complexity. So if I made a leaf, and duplicated it. It’s UV Island could be the entire UV. So I could use a single 4k image, and combine 5000 of those on a mesh. It’s not very optimal. Would it be optimal to have 15 UV Islands per branch, and 4k image render each branch, and have 500 of those branches, and be able to see that in scene as a heat map. It would be like pixel to UV/tris density. Mesh UV density in optimization viewmode is also a factor of that. Though I dislike that graphing scheme. It does show me how poor of performance I have with it. I created a tiled roof, and each tile has the same uv. So 35,000 tris, and 150 of them each have the same texture. It’s horrible, and I start getting drops whenever it comes into the scene.

Thanks, voted.

Just for the record, I have some foliage master shaders (they’re materials, but at some level of complexity I just call them shaders) that I’m revising at this very moment that I’m attempting to make as versatile and efficient as I can while still being applicable to a wide variety of different types of foliage (grass, flowers, moss, cactii, etc.). I generally like this approach as it ensures a high-level consistency throughout an entire scene and exposes a lot of variables to material instances that, given the way the master material is setup, is reliant on a lot of switch nodes to ensure that the instruction and sampler count remains as low as possible.

This is also specifically intended to work with foliage used with the procedural foliage system (which, while a pain in the ■■■, is handy and exposes some nice instance-level data).

Anyway, here:

I’m hoping to wrap up my major round of changes and submit them tonight.

Oh sweet, i will check these out tonight when i get home. I just started using the foliage painter and noticed i get way better framerates at the cost of massive amounts of lost time lol. Thanks again, i will check these out tonight.

Yeah, I toss as much stuff as I can up there that isn’t either completely proprietary stuff unique to my project (like I don’t think I’d put my hero mech shader up there) or originated in any way from someone else’s work. But, as a rule, if I think it’s useful for people, I toss it up there, whatever it may be. There are a (very, very) few source files up there, a bunch of material functions, my master material set (that i’m still in the process of updating), and then there’s just this collection of whatever: OS X terminal scripts, powershell scripts, python, UE4 conventions, UE4 resources/advice docs, software/tool docs, a lot of really solid git helpers, and whatever else.

(one of my pet projects up there is also a procedural generation electron app for using a custom grammar/l-system ‘language’ to instance meshes to create neat exportable FBXs and such, but that’s a wayyyyys off from being anywhere near usable).

One day I’ll actually properly organize it, document it, and make it more easy-to-navigate, but that day is not today.