Forest Trees and Foliage Optimization

Hello,

Does anyone have any tips/advice for dealing with scenes that have a lot of trees in them?

To be more clear, I’m using Hierarchal Instanced Meshes, and a moderate cull distance for them that works, but the problem is, if the player comes to a flat or high area, where they can see out into the distance, the “RENDERING BUBBLE” bounds can be seen, and the rest of the world seems empty.

I’m aware that rolling hills are often used to solve this issue, but have a few ideas. None of them are particularly elegant, so instead of brute-forcing a solution, I though I’d ask.

You can see the “RENDERING BUBBLE” the character would move with below.

This might not be ideal but you could make a panoramic image for the far landscape curve view. This will only work if player can’t reach these area and light(day/night) won’t affect the image.

There an example of using panoramic image from the free asset "Realistic Rendering
" in the marketplace if you want to check it out.

Otherwise brute force to only use LOD and not culling when player is at certain area :innocent:.

1 Like

Removing the movement on some trees may help performance. You may also want to never use LOD 0. I have issues with that one.

1 Like

@Arodi007 , Yeah, Panoramic won’t help, unfortunately.

When the player is on elevated platforms, there’s still the issue of completely bare geography.

@badimo57

You are correct as well! However, I’ve already done this (and it certainly helped).

LOD 0 or LOD1?

That’s interesting. I’ll try it out. (I assume you mean “0”).

Yeah sorry. I do this on my phone.

Okay @Leomerya12, what if:

  • You loaded tree shadows only when you got close to them? I got this idea from GTA and Fortnite Mobile.
  • You make an LOD with a mesh colored like a tree but it isn’t even close (for far away trees, since low LOD trees far away are still highly detailed.)

Formatted with HTML and Markdown

1 Like

My phone is ONLY a phone. I don’t understand how anyone can do CPU activities on such a small device.

Anyway, I attempted your technique (No LOD0), and it doesn’t work because of the RENDERING BUBBLE I’ve created. There’s only a certain amount of trees around the character that are rendered at any given time.

If trees were rendered throughout the WHOLE level, the adjustment would be apparent.

Yes, but yeah, you know by now, the amount of rendered trees is already pretty limited.

Indeed. Part of the “brute force” approach.

Does occlusion culling still work?

It does.

But the issue isn’t performance. It’s the draw distance. I gotta fake it somehow.

So LODs don’t work at all?

Ah, wait, I think I see where you’re going…

Maybe if I duplicate the tree assets, and have those assets ONLY use the lowest LODs.

Yeah, brute force it is, unless any more ideas come.

No, I meant you could take advantage of billboard materials.

You mean I can extract billboards from the materials themselves?

In which case, I need to look up how to do that.

How about this: any faraway trees will always use billboard materials.

No, I understand you, but the issue for me is that I haven’t touched billboard materials or their usage yet, so it may be apparent to you, but to me, I need to learn the basics of that.

Just keep in mind that we’re not talking about VERY FAR AWAY.

If you look at the photo I posted, you can see that the “tree line” stops fairly close.

Oh, I get it. I have just started using billboard materials, since there are so many that come from grass my computer cries. I am a kid FYI.

Edit: Maybe I shouldn’t have publicly said that.

1 Like

At heart or for real?

EDIT: HA!

I am 11 years old.

Well, keep it up. You’re savvy as hell.

Alright, back to work then.

Thanks.

I’ll update and take your advice.

Wait. Your rendering bubble is like a rendering volume, right?

If so, you can control rendering outside by using a default value for all trees that gets overridden when its inside the volume. You need Blueprints for this.

Don’t use C++. I hate using it with collisions.