Procedural Forest Revisited, The Hunt For Milliseconds, UE4

This is sort of a "re-imagining" of my first procedural forest.
Seen here: https://www.artstation.com/artwork/4bBad4
While I was happy with how that looked, it was not really as performant as I would have liked.
So I decided to do something about it, not necessarily creating the same thing again, but taking the same source content, rebuilding it and optimizing it, to create something new and interesting.

So I went back and remade most of the content, spent time setting up octahedral imposters for the vegetation, optimizing shaders, setting up shader and mesh LODs for every asset. Really pushing optimization with aggressive lod-distances and stripping away shader features at a distance.
Every asset in the scene was scanned and created from scratch by me. The placement of all assets in the scene is done by procedural rules using Unreal's Procedural Foliage Volumes.

My goal was to make the scene run on a "last gen" (PS4, XBone) console budget. Now there are of course a million things that decide if something can run on a given console or not.
But since I don't have the ability to test it at home, I decided to focus on the most simple key metrics. Triangle Count, Drawcalls and Shader Instruction Count.

The scene here is rendering roughly 2,5 - 3 million tris per frame, and 600-900 draw calls, running in Standalone Mode, as can be seen in the performance video at the end of this post. This is what I would consider reasonably within budget for a 30fps PS4 game.

Shader instruction count for the meshes is around 130 instructions, with shader LODs dropping it down below 100 at a distance.

I really wanted to push the density on this to a new level, while keeping it within budget, just to see if it was possible!

I have made this available on Unreal Marketplace, just search for "Procedural Forest" and you should hopefully find it.

All the assets are optimized, prepped and ready to use as is in production!

Base Color Renderpass

Base Color Renderpass

Base Color Renderpass

Base Color Renderpass

Base Color Renderpass

Base Color Renderpass

Base Color Renderpass

Base Color Renderpass

Renderpasses

Renderpasses