That’s right Unreal on my PC only managed 534.0 cubes with a target FPS of 30fps, OK it looks great but!
The benchmark, rotates a cube then while the FPS is above the target it adds another child cube within a random spherical distance from the root cube.
This is my first attempt with Unreal of a simple project and I’m hoping to obtain some advice on how to improve the performance of this benchmark.
I have a Unity based version of this benchmark and it can spin about 5,000 cubes with colliders on my PC. Now Unreal has PBR but I’m sure with your help and advice I will be able to improve on this.
So what can I do to this default project using blueprint to improve performance?
Well it’s all apples and oranges. There is a lot you can do to improve performance, it just depends on how good you want things to look. I don’t think you can (easily) come up with a baseline comparison between engines, unless you disable everything but simple geometry rendering. But then that’s hardly representative of the engine’s capabilities. Ultimately what matters is how fast the engines are at rendering the difficult stuff.
For engine comparison I thought that if I used the same basic model, textures, camera and algorithm then I would obtain a standard baseline for both engines.
As all I am measuring is how many textured cubes Unreal and Unity can keep spinning at a given FPS or the engines CubeMark.
In the Unity version I run 3 tests, cubes with colliders, cubes without and quads then combine the number of cubes/quads into a CubeMark. And you can test the CubeMark at 30 or 60fps.
The idea was to give developers an insight into how many simple objects the game engine can move at a given frame rate.
Also I used Unity’s Quality settings so people could see the difference between settings.
So does Unreal have a set of preset Quality settings?
My plan is to have a Unreal version of CubeMark that is comparable to the Unity version.
OK Update the previous build was made with Unreal 4.1, I have upgraded to 4.6.1 and TADA doubled my Unreal Cube Mark now 1243.0 cubes @ 30fps on my PC.
There’s some graphical effects that UE4 has on by default that Unity doesn’t, like Ambient Occlusion, Screen Space Reflections, stuff like that. That all slows down performance noticeably. Also, for things like cubes, you would want to batch them, which means that it would dynamically combine the cubes into a single object, that would reduce the number of draw calls and improve performance. In UE4 you have to do that manually, Unity has an automatic option for that, but it also has a polygon limit on how many things can be batched. For UE4 for instance, you could thousands of grass planes that are batched together and run very smoothly.
Hello Arowx!
What are you trying to accomplish is a little bit… Impossible.
The point of benchmarks is the running SAME operations on different hardware to understand how they are handle them. But you’re actually giving different tasks to different engines and then comparing results, which is complete nonsense. UE4 and Unity Pro are complex engines and difference between seemingly to you same operations is incomparable. You can’t run different tasks on different software with different rendering settings and then compare it, it is just wrong. You can turn off all AAA graphic features of UE4 and lower settings, change logic and etc and run “benchmark” extremely fast, but again - what the point?
Simple example of my old experiments:
My GPU could not handle this amount of hexagons with dynamic materials(Bright red color - dying gpu and 10 fps)
The point is to get a basic idea of what the game engine can do at a given frame rate. Think of it as a basic heuristic or rule of thumb test.
And I would like to include setting for Quality that affect speed, then developers using Unreal can get an idea of the performance impacts on their hardware of the settings.
Funny; I’ve been running a (playable level) scene with more than 4 million polys on average 80~110fps in-editor.
Of course it runs even much more smoother on standalone build.
I would never be able to do that in Unity even without all the fancy Dx11 PBR effects UE4 gives.
If your hardware is not good to run Dx11 games that may be the problem.
Could you try the benchmark to see what cubeMark your hardware gets and to test if it’s just my hardware not working well with Unreal 4.6.1?
The latest build is postfixed 461.zip but comes in at a staggering 100+ Mb zipped, previous 4.6.1 build zipped to 47 Mb and the original 4.1 version was only 28 Mb zipped.
Oh and what system specs?
My PC -> Windows 8.1, CPU AMD FX8320, 16 GB RAM, GPU AMD 7900 series 3GB RAM.
There are lots of things that can cause it to be running slower than it could. Give us a few screenshots of blueprints on how you are spawning them, rotating and moving them.
Make only one single InstancedStaticMeshComponent where you choose your cube as the mesh. Then spawn new cubes with the “add instance” node. And rotate the cubes with “UpdateInstanceTransform”. Doing it this way you will get a lot better performance.