In my game BasePassParalle takes between 7 to 22 ms to build a frame.
What is that BasePass and what can I do with it to increase FPS of the game?
For the basic understanding at least: Unreal’s Rendering Passes - Unreal Art Optimization
" The base pass is an example of a pass affected by all three factors. It takes visible 3D models (geometry) and renders them with full materials (pixel count), including textures (memory). Then it writes the final information into a resolution-dependent G-Buffer (so it’s memory bandwith again)."
Likely, you have an overcrowded scene, not using instanced actors, many poly’s and/or expensive materials.
Check material complexity, in game it’s f5, and editor alt-8. Is it all red?
Some useful commands:
stat rhi
stat engine
stat unit
stat scenerendering
r.streaming.poolsize xxxx
What kind of hardware are you running?
@Frenetic Thanks for such a good explanation.
This is what I see currently.
Short story: I’m working on RTS game and I put 600 units on the map just to hit MAX limit. I do not think that it will be possible to reach that number in a game but trying to hit the limits.
This [instanced actors] is an interesting topic. How should I implement it?
The hardware I have is: i7-7820X 8 cores, 32 Gb RAM, and GTX1070-8Gb RAM.
Let me know what can I do and learn about making optimization of the game.
Best regards
You have an INSANE number of draw calls… As well you are drawing 12million skeletal mesh triangles and overall 47 million triangles. Those are high numbers.
Hardware is decent enough, you should have much higher framerates if you trim the overhead.
Best guess, you need to use instanced static meshes. They can draw the same mesh multiple times in a single draw call, vs each instance taking its own call.
Try these:
- Performance and Profiling | Unreal Engine 4.27 Documentation
- Optimizing and Profiling Games with Unreal Engine 4 - Vincent Loignon
This is one around instancing:
This guy might help a bit: [WIP, PLUGIN] SKELOT - optimized instanced skeletal mesh rendering - #2 by UPO33
Thanks a lot, will continue learning about this topic.
With regards to grasses, trees, etc, use the in-engine tools. Particularly grass-layers if you are using a landscape. They can save you time, most importantly, but also lay out low-cost meshes (no collision) vs dragging and dropping actual grass-meshes into the scene.
Things that don’t need collision, like trees in the background, likely a place you will never get to play in, don’t give them any. Keep anything you can as low-cost as you can; if the thing doesn’t need it, be sure to turn it off. This will help save you CPU cycles; not spending time checking/evaluating things you don’t need them too.
Your materials look good. I can see the units/trees are green, good. Landscape is mixed brown and green, but that’s what you get for that tool; is what it is. River is hot-pink, but that’s expected for anything near good-water, transparency or the like.
Thanks.
With trees there is a slight issue as it is resource that I need to gather and I need collision there and they are Actors. Same comes with mushrooms and gold.
Thanks for the great video, but for some reasons this doesn’t work for me.
- Foliage collision doesn’t interact with my unit no matter what I have tried.
- Unit cannot come to more then a half of instances of trees. No errors or navigation issues there. Just doesn’t go to that location.
- Interface implementation. I could not find a way to trigger there custom event or function.
Probably it is to early for me to test this feature.
But thanks a lot for this.
While I believe that using Vertex Animation Texture with Instanced Static Meshes is the way to solve the problem if you want another way around i can give you a fork i made of somebody who made Instanced Skeletal Mesh. While it is clunky and missing alot of features it does do the job of reducing draw calls.
There is also this: Animation Sharing Plugin in Unreal Engine | Unreal Engine 5.2 Documentation
“When creating animation systems for large crowds of characters, you can use the Animation Sharing Plugin to significantly reduce your projects performance cost. Rather than performing individual evaluations of an Animation Blueprint for each character in your level, you can share animations from a single evaluation across many characters, resulting in a system where the difference between 100 characters and 1000 characters results in a minimum increase in performance cost.”
Hi there @chuklov,
Hope you’re well!
This topic has been moved from International to Rendering.
When posting, please review the categories to ensure your topic is posted in the most relevant space.
Thanks and happy developing!
just wanted to say for anyone else coming to this post in the futures - Alt 8 saved my FPS… I had one wall that had a shader issue and was killing the whoel thing. Clean it up and BAM - way better. Thanks Frenetic!