PCG very low fps - optimization / tutorial advice?

Hello everyone,

I would like to create a large forest environment for a game project using a PCG volume. Unfortunately, I run into low FPS (~25 fps] very early on in the process. Nanite is active for all meshes and I´ve tried many different meshes (Quixel for the most part). I tried using the visualization and noticed, that the areas around the branches of the trees are especially demanding. Switching of movement doesn’t seem to do a lot. I’m aware that there could be tons of different possible issues causing this problem, but I assume it would take forever to find out the cause by just randomly trying things out.

That’s why I would like to ask if you could recommend any good tutorials / learning paths for working with larger PCG volumes. The ones I found online usually just explain the very basics of using PCG volumes, but don’t touch upon larger environments and the necessary optimization necessary to make it work with “bigger” worlds (or just any case of application in a game and not just a small scenes for single renders).

Thanks in advance!

1 Like

Depends on the asset.

If the issue is present at the branch, and the tree is sort of similar to speed tree, then try to see if enabling early Z pass makes any difference.

Pcg and anytting epic has made in the past 3 to 5 years is just not meant for games (the ironiny of them having a Game engine is not lost on anyone, believe me).

Foliage needs to be put into the foliage actor stuff, because its internal code - used to, you should verify this to still be the case - partitions instances and HLOD gropus for game performance, unlike HISM or other instanced options.

Assuming that PCG is capable of outputting to the foliage, then the reasons for poor performance become the usual suspects - ei: this engine being made by people who dgaf about performance.

You can try swapping to forward shading to gain some marginal amount of fps while loosing a lot in the “looks” department.
Or you can try to optimize things to gain maybe 5 FPS after a month full of work…

Or you can change to a better engine (assuming you have the rights to the models and things you used) and actually make a playable game.

I guess the 3rd option here is to stick to engine versions that somewhat worked:
4.18 was decent. 4.25 was good - though worse perfeomance wise than .24.
4.26/27 lost 20% FPS for no reason at all that epic ever admitted to (goes back to the fact they dgaf).
Anything after the Chaos change is trash that can’t really be used to publish any real game that attempts to use physics, this does include any .24 build with chaos.

I guess you have a 4th option too? get a 4090. If you have one you could get another one… oh wait… Unreal engine can’t use 2 gfx because that would be TOO easy :stuck_out_tongue_winking_eye:

Another thing to keep in mind is that more engine windows are open more FPS you loose as your machine overheats in agony to attempt to render things - even with a 4090 or better.

Epics idea of rendering anything stops at 1080p - so if you are set up for anything above that, everything is just your fault and the engine is not made by incompetent people :wink:
Because of this, you need to test/benchmark your final release with the engine closed (publish package and run it) so that nothing except your game exe sucks up those MS…

1 Like

Hi,

Some things that can speed it up:

  • turn off collision for the trees - if you need collision, use a proximity system, something like:
    rdInst Tutorial 36 - Recourse Design ltd.

  • Sounds like you’ve done this, but make sure you have a WPO disable distance - the closer the better. You can make changes to the tree materials to Lerp down to 0 WPO at that distance to smooth off the change.

  • Better for grass, but you can set the Shadow Invalidation to Static to stop the VSM from recreating the shadows before the WPO disable kicks in.

  • Sometimes reducing the number of triangles in the foliage meshes can help - Nanite does a great job of compressing them, but creating a smaller source mesh can help reduce overall lighting calculations etc.
    rdLODtools Tutorial 13 - Recourse Design ltd.

  • Masked materials are still not as performant as non-Nanite - but Nanite objects such as trees still seem to render quicker than non-Nanite - sometimes grass and small bushes perform better as non-Nanite - just need to test your specific meshes to find out.

  • Splitting up your PCG volume into smaller ones may help - you could even have them populate at a certain distance if the area is hidden from view.

  • Have sets of tree meshes that don’t have a cull-distance - larger ones seen from a distance - set cull distances as close as possible for everything else.

  • If you still have performance issues after these - consider turning off Lumen.

1 Like