/Benchmarks

Ultra Engine / Leadwerks / Unity performance benchmarks

Primary LanguageC#

Ultra Engine Benchmarks

Rendering performance benchmarks comparing Ultra Engine, Leadwerks, and Unity.

Four tests were created to isolate and measure different aspects of the graphics pipeline in each engine.

The original tests are in the "Ultra Engine" subdirectories. Updated builds are also provided with improved hardware compatibility.

Instanced Geometry

This measures the performance of object culling speed in a worst-case scenario where frustum culling removes no objects. 32,768 instanced boxes are shown.

Animation

This demonstrates the efficiency of the animation pipeline. Each of the 1024 characters has a unique skeleton and a relatively low polygon count, because the vertex shader speed is probably going to be similar in each engine. This is meant to test the efficiency of skeleton data transfer, and determine if animation introduces any overhead to the renderer.

Lighting

This measures the performance of a large number of lights against a large number of identical objects. I was surprised to find that Unity redraws every shadow map every single frame, instead of only updating shadows when an object moves. 25 point lights are displayed in a scene made of 801 boxes.

Unique Geometry

This test is the most representative of an actual game level, with many different unique objects. It measures the overhead of draw calls and the efficiency of the mesh batching system. 4096 unique boxes are shown.

System Requirements

  • Windows 10 or 11
  • Discrete GPU with support for Vulkan 1.3 (Integrated graphics are not yet supported)
  • Visual Studio Redistributable (You probably already have this installed)
  • The Leadwerks builds require OpenAL to be installed

Note that AMD cards will display some visual artifacts in the current build.

Diagnostic Tools

TechPowerUp GPU-Z can be used to measure GPU utilization. Windows task manager does not correctly measure this metric.

Built-in FPS counters are provided. FRAPS can also be used to measure the framerate, but is reportedly not displaying on some Vulkan drivers. Some other FPS counter overlays such as OpenGPU OCAT will reduce performance significantly enough to alter your readings, by a lot, and are not suitable for measuring high-frequency framerates.

Results

In each test, Ultra Engine outperforms Leadwerks, Unity, or both by a factor greater than 10x. GPU utilization is consistently higher with Ultra Engine. All measurements were recorded using a PC with a quad-core Intel Core i7-7700K CPU @4.20 GHz and an Nvidia GeForce 1080 GTX GPU with driver 471.41 installed, on Windows 10.

Instanced Geometry

Engine API GPU Utilization Framerate
Leadwerks OpenGL 8% 52
Unity DX11 4% 40
Unity Vulkan 4% 40
Ultra Engine Vulkan 95% 1206

Animation

Engine API GPU Utilization Framerate
Leadwerks OpenGL 1% 5
Unity DX11 45% 62
Unity Vulkan 45% 64
Ultra Engine Vulkan 96% 1179

Lighting

Engine API GPU Utilization Framerate
Leadwerks OpenGL 49% 704
Unity DX11 33% 90
Unity Vulkan 30% 74
Ultra Engine Vulkan 96% 1456

Unique Geometry

Engine API GPU Utilization Framerate
Leadwerks OpenGL 10% 49
Unity DX11 5% 2
Unity Vulkan 4% 2
Ultra Engine Vulkan 63% 6213