Any demo scene of dense forest visible far into the distance (e.g. on distant mountain-side)?

I’m working on a procedural terrain project and I’m struggling getting good performance on rendering tons of trees.

I’ve heard plenty of general advise, but one thing is theory, another is getting something working. And for some reason I haven’t been able to find any demo project, free or paid, that shows a dense forest visible from the foreground and far into distant mountains. If it was possible to achieve by following best practices, you’d think someone had made a demo showing it?

To be clear what I’m talking about, here’s an image:

Also, to be clear, the distant forest needs to be real places the player can go to; not decoration that is permanently background only.

Here’s various projects I looked at (mostly based on screenshots):

Unity Terrain Demo scenes for HDRP and URP: It’s not really a dense forest.
Mountain Environment - Dynamic Nature: It doesn’t show dense forest going far into the distance. The only time in their video you see a distant mountain, there’s only a few scattered trees there.
GPU Instancer (Asset Store): Its dense forest screenshot isn’t that dense and doesn’t go that far into the distance.

Etc. etc. It would take me a long time to list all the ones I’ve looked at.

The two bottom screenshots in the image above are from Sons of the Forest (made with Unity) and upcoming Light No Fire respectively. I’ve seen various other games with great dense forest visible all the way back to distant mountains, but I can’t remember all examples right now.

So I think it’s definitely possible to do, I just haven’t seen any example projects (free or paid) that actually pull it off.

If you know of any, please post your suggestions!

1 Like

I don’t know any demos but I can say that this works by replacing distant trees with impostors - a quad with a texture of a tree or two or three quads that intersect each other in the middle. Speedtree does that automatically for you.

Right, I know impostors are part of the solution (whether Speedtree, Amplify Impostors, or other solutions) but it’s only one piece of the puzzle.

Actually achieving good performance for that many trees requires doing a whole bunch of different things right, and doing any of them wrong could tank performance. It’s easy to just point to some technology and say “just do that”, but again: If it was straightforward, you’d think someone had made a demo showing it? And if it’s not straightforward, then replying with just some general advise isn’t going to help much.

That’s why I’m looking for an actual demo that does all the things needed to pull it off and proves it with demonstrable results rather than just claims that it’s possible.

(just as a general nice looking reference…)
this one looks really good with the AO, there’s more photos later in the thread too

others that i’ve bookmarked,

1 Like

That’s stunning! Can only dream of a demo project like that…
It sounds like it uses lots of custom tech to pull it off.

A more basic look here of course, but that also does have the quantity of trees I’m looking for.

The other linked project don’t really. For example the “Real Landscapes - Valley Forest” (only one available as demo project) doesn’t show trees very far into the distance and has dense fog to hide it.

others that came to mind,

  • Road to Vostok had nice urp forest scenes (although now switched to godot, but can see in earlier screenshots, used heavy fog though)
  • Escape from Tarkov has really nice forest scenes, cant remember if it had large mountain/valley views…

It wasn’t a very performant demo but check this one if you haven’t already. Maybe you find something useful Book Of The Dead: Environment | HDRP | Tutorial Projects | Unity Asset Store

Thanks, but in the entire video and all screenshots, no tree is shown that takes up less than a third of the screen height. That is, it doesn’t show trees that are far away at all. (As is usual, it’s covered up with fog to not draw attention to it.) There are plenty of nice demos showing trees up close but that’s not really demonstrating what I’m asking for in this thread.

Whenever I hear about making huge world, I remember the article about GTA V:

Whatever technique you use, at the end of the day it won’t scale if you’re not using HLODs. It’ll take a long time to set up, because there’s only so much that can be done by automatically generating LODs. At some point an artist would have to go in and model an LOD mesh for each chunk of the level.

1 Like

It is far from perfect, but this is the fastest way of drawing dense foliage that I was able to implement in Unity by my self:

  1. Made an octree based chunked landscape system (could be quadtree in your case), octree subdividing is based on distance to the player.

  2. Instead of using GameObjects I do generate point mesh and store all transform data (+ extra data like tree types and so on) into vertex data of every point, and then render them with proper tree sprite geometry shader and texture arrays.

  3. Made trees and bushes of different scale to be attached to the chunks of appropriate depth in the octree.
    So the smaller bushes will be attached to the smaller chunks, and bigger trees will be attached to the bigger chunks.

  4. Render all subdivisions of the octree all together (only for trees, no reason to do that for terrain), this make a good combo of frustum and distance culling (for per chunk clusters).

  5. If tree point will be close enough to the player I do spawn actual tree GameObject using tree point data, and cross fade it to make smooth transition. Switching distance could be different, depends on scale of the tree.

4 Likes

Hey Rune,
We have the same goal. Have managed semi-dense forests but I sure wish we could make them denser (both trees and understory): WolfQuest: Anniversary Edition on Steam

We’re using VSP with TVE shaders (modified for max performance), targeting 50-60 fps on GTX 1060. Using VSP billboards, which ain’t the greatest visually, but I haven’t tried experimenting with imposters yet. But this isn’t procedural – we bake the trees into VSP persistent storage to eliminate the spawning spikes (since we have those for grass anyways).

2 Likes

Nice, that’s a lot of trees in the background indeed!

Acronym overload. TVE is … The Vegetation Engine? VSP I don’t know; Google is not much help.

I’m currently trying out GPU Instancer with promising results performance-wise so far. There’s a lot of visual issues and glitches though; hopefully something that can be worked out.

Oh, sorry! Yes, TVE is The Vegetation Engine. Very nice shader but a bit expensive, but its easy to strip out features in Amplify Shader Editor.

VSP: Vegetation Studio Pro. Now deprecated, alas (very very alas). IMHO still the best general tool for vegetation since it has a lot of capabilities for procedural placement (using biomes, terrain textures, and more) as well as Burst spawning during runtime. (Others use Unity terrain trees and detail objects, which is limiting. We rely enormously on VSP’s persistent storage because we can bake the entire map (7x7km) of trees to it, and then during gameplay disable all but the nearest Unity terrains, using LOD meshes for all the other terrain slices, and still have trees across the entire map. It’s been essential for us and I’m unaware of any other existing tool that can do the same thing.

(To clarify: When I said we weren’t doing procedural, I meant runtime procedural terrain generation. We are using VSP’s procedural placement tools rather than hand-painting vegetation.)

2 Likes