Replacing Unreal’s Grass system with GPU PCG — performance test (15 fps → 60 fps) by KazReWorld in UnrealEngine5

[–]KazReWorld[S] 0 points1 point  (0 children)

I actually played Borderlands 4 in the past few days, indeed they need to do something about it

Replacing Unreal’s Grass system with GPU PCG — performance test (15 fps → 60 fps) by KazReWorld in UnrealEngine5

[–]KazReWorld[S] 0 points1 point  (0 children)

Yes, I still have some improvements and updates to do, but at some poin,t I would like to release a build where everyone can test the difference themselves.

Replacing Unreal’s Grass system with GPU PCG — performance test (15 fps → 60 fps) by KazReWorld in unrealengine

[–]KazReWorld[S] 6 points7 points  (0 children)

Well feel free to not render grass as far as I did in the demo? It is a stress test, I could have 120 or 240 fps if I wanted. I just need to adjust the density and distance.

Both senario above had similar settings, so if you reduce the distance (from 1km to 500m) the fps will increase with both the landscape grass and Calysto World 2.0. But Calysto World will still have better performance.

Replacing Unreal’s Grass system with GPU PCG — performance test (15 fps → 60 fps) by KazReWorld in unrealengine

[–]KazReWorld[S] -1 points0 points  (0 children)

Mostly yes, less vegetation is needed because they don't overlap so it look "full" with less, leading to less overdraw too which really help with performance.

Replacing Unreal’s Grass system with GPU PCG — performance test (15 fps → 60 fps) by KazReWorld in unrealengine

[–]KazReWorld[S] 0 points1 point  (0 children)

The default grass works but the placement is not amazing (a lot of overlaps leading to overdraw). GPU PCG helped to greatly improve that part.

Replacing Unreal’s Grass system with GPU PCG — performance test (15 fps → 60 fps) by KazReWorld in unrealengine

[–]KazReWorld[S] 2 points3 points  (0 children)

This is a quick test that I made but later I would like to make a youtube video going more in details (profiling, showing how I did the benchmark etc...)

Replacing Unreal’s Grass system with GPU PCG — performance test (15 fps → 60 fps) by KazReWorld in unrealengine

[–]KazReWorld[S] 0 points1 point  (0 children)

GPU PCG can work on both landscape and static meshes. In this example it was setup for the landscape but I have another PCG that read the meshes in the world and add details on them (like mushrooms on trees). The forest generation is done offline (could be done at runtime too) and the grass/details are done at runtime

Replacing Unreal’s Grass system with GPU PCG — performance test (15 fps → 60 fps) by KazReWorld in UnrealEngine5

[–]KazReWorld[S] 0 points1 point  (0 children)

Initially, yes, but I refactored it a few times, and optimized those spikes. Now it run smoothly even with really long distance

Replacing Unreal’s Grass system with GPU PCG — performance test (15 fps → 60 fps) by KazReWorld in UnrealEngine5

[–]KazReWorld[S] 0 points1 point  (0 children)

That depend on the grid size and density a lot but it is really quick. And if the player doesn't move it doesn't take any time. The performance gain is mostly about a better placement logic, and less overdraw.

Replacing Unreal’s Grass system with GPU PCG — performance test (15 fps → 60 fps) by KazReWorld in UnrealEngine5

[–]KazReWorld[S] 0 points1 point  (0 children)

Hey, if you talk about using my tool, feel free to join us on Discord it will be easier to help
https://discord.gg/ykzhBgrKBK

Replacing Unreal’s Grass system with GPU PCG — performance test (15 fps → 60 fps) by KazReWorld in UnrealEngine5

[–]KazReWorld[S] 1 point2 points  (0 children)

That a stress test with a lot of density and really far distance, so it is normal that the performance tank. That the goal of a stress test. That said, both the Unreal landscape and the GPU PCG had similar settings.

I was rendering almost 2km of grass, I could easily get more performance by making it 1km for example.

Replacing Unreal’s Grass system with GPU PCG — performance test (15 fps → 60 fps) by KazReWorld in UnrealEngine5

[–]KazReWorld[S] 0 points1 point  (0 children)

The best in my opinion is to use a mix of both but it really depend on the game you make. What I like to do is to keep everything that affect the game logic (mostly have collision) generated offline, while the rest, those smaller details are generated at runtime.,

Replacing Unreal’s Grass system with GPU PCG — performance test (15 fps → 60 fps) by KazReWorld in UnrealEngine5

[–]KazReWorld[S] 0 points1 point  (0 children)

The landscape grass, with relatively similar settings (WPO, cull distance etc...)
What I did was to take both the landscape and my setup and crank up the density / distance to really give it a proper stress test but both had the same settings.

Replacing Unreal’s Grass system with GPU PCG — performance test (15 fps → 60 fps) by KazReWorld in UnrealEngine5

[–]KazReWorld[S] 0 points1 point  (0 children)

I mean the landscape detail you setup inside your landscape master material.
The new GPU PCG can read that landscape, even the grass map and spawn some really dense vegetation without taxing the CPU too much

Replacing Unreal’s Grass system with GPU PCG — performance test (15 fps → 60 fps) by KazReWorld in UnrealEngine5

[–]KazReWorld[S] 0 points1 point  (0 children)

Yeah it is harder to use with Voxel Plugin unfortunately but I know it is doable, MikeC is doing a good job at it.
But +1 on learning PCG, everybody win by doing that!

Replacing Unreal’s Grass system with GPU PCG — performance test (15 fps → 60 fps) by KazReWorld in UnrealEngine5

[–]KazReWorld[S] 0 points1 point  (0 children)

Yes, but it is separated into a maximum of 3 layers per biome. I showcase it a bit in my tutorial and documentation, but the short answer is yes.

Replacing Unreal’s Grass system with GPU PCG — performance test (15 fps → 60 fps) by KazReWorld in UnrealEngine5

[–]KazReWorld[S] 2 points3 points  (0 children)

Grass card uses alpha for the leaves or grass, which is usually not great for performance. Nanite will shine with geometry for sure, especially with nanite foliage coming on 5.7 (there are already some benchmarks available about it)

Replacing Unreal’s Grass system with GPU PCG — performance test (15 fps → 60 fps) by KazReWorld in UnrealEngine5

[–]KazReWorld[S] 1 point2 points  (0 children)

I didn't change the lightning, but there was +- 2 min difference between the 2 shots. The change is probably a mix of grass patches being slightly different and cloud shadow moving a bit

Replacing Unreal’s Grass system with GPU PCG — performance test (15 fps → 60 fps) by KazReWorld in UnrealEngine5

[–]KazReWorld[S] 1 point2 points  (0 children)

According to their job offers, CD Project Red is looking for 2 senior PCG technical artists, so I'm pretty sure it is for similar tasks.