Visit us at booth #2341 during I/ITSEC 2021
Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Ultra Engine Benchmarks Revealed - 10x Faster than Unity, Leadwerks


Admin

3,134 views

A few years ago, some folks at NASA asked for my help with some VR projects they were working on. They had switched to Leadwerks and were getting better performance with that, but it still wasn't fast enough for what they were trying to do. I flew from California out to Goddard Space Flight Center to meet with them. When I saw what NASA was doing with my software, my jaw hit the floor.

Picture1.jpg.695f4e7a981e3a048692061c402e0b26.jpg

Goddard Space Flight Center

Rendering performance in VR is critical because if the framerate drops, it creates a discontinuity between what your visual and vestibular (sense of balance) systems perceive. This causes instant and severe motion sickness and can result in nausea, vomiting, and dizziness. The work NASA was doing with VR involved loading engineering CAD models with tens of millions of polygons and thousands of articulated sub-objects, and displaying them in VR. Naturally, the VR rendering performance for these types of models absolutely crawled. If we were making a VR game we would just optimize the models and design everything to fit within a polygon budget, but engineering requires complex models with many fine details. We couldn't just "optimize away" important details the engineers wanted to inspect in VR.

image.png.3cf2ec6bbf5b869b667ab21a5c2957c1.png

NASA model of International Space Station

I came away from that meeting thinking it was an impossible problem to solve, and I flew home to California. Over the next weeks I started thinking "I know this is impossible, but if it were possible, what would it look like?" This lead to the development of a new game engine designed specifically to maximize performance for VR.

Today I am happy to reveal performance benchmarks of the new Ultra Engine compared to Leadwerks and Unity, as described in the paper Building Performant VR Applications for Multi-Domain Modeling and Simulation. Authored in collaboration with Northrop Grumman and Peraton, this paper will be presented in a lecture during I/ITSEC 2021. These tests reveal different performance bottlenecks that can occur in real-time applications that would cause slow performance. Testing was performed on Windows 10 with an Nvidia GEForce 1080 GPU.

Instanced Geometry Test

In this test, a 3D grid of 32,768 instanced cubes is created. This evaluates how the renderer handles a large number of objects with CPU frustum culling enabled. Frustum culling on the CPU is important because it allows the engine to discard large parts of the scene from processing in the rendering loop. It also allows the engine to skip animation for offscreen objects.

image.png.f211144ebf34b92ccd2848a3b001251f.png

In this test, Ultra Engine outperforms both Leadwerks and Unity by 20x, with 95% GPU utilization:

Image1.thumb.png.778a1b0c8328b1535ce2c946fe18d6cc.png

Animation Test

In this test, 1024 animated characters are displayed. Each character has a unique skeleton and is animated independently with no instancing.

image.png.e91c145d5f08f4e23fe06ab26f485781.png

In this test, Unity outperforms Leadwerks, but Ultra Engine is still more than 18x faster, with much higher GPU utilization:

Image1.thumb.png.c01c5a6916d976cb7e5bb747004770b5.png

Lighting Test

This test renders a scene made up of 1000 instanced boxes and 25 point lights. This provides a measure of how efficiently each engine handles the interaction between lights and objects, and simulates the lighting overhead of a complex scene.

image.png.6a00fecefb26bb5ef5ec016c37809e2a.png

In this test the Leadwerks renderer has a significant performance advantage over Unity, but again Ultra Engine is much faster than either:

Image3.thumb.png.67e7ba10cf042482b7831ce57eb72428.png

Unique Geometry Test

In this test 4096 unique (not instanced) boxes are created and drawn onscreen. This simulates a complex scene with many unique objects.

image.png.2b43ad5163b9b1b83667240bbeb6b664.png

Unity and Leadwerks both struggled to render this scene in real-time, but Ultra Engine ran at an astounding 6000+ frames per second:

Image4.thumb.png.ed432c8a951128c5d364fb9c512762da.png

As you can see, a variety of scenarios that would cause the Unity or Leadwerks renderer to bottleneck run with absolutely no problems in Ultra Engine. This technology is being developed into a full game engine with a visual editor, complete with a plugins and extensions system. Ultra Engine will deliver order-of-magnitude faster performance, to eliminate motion sickness and lower hardware costs for VR applications, as well as general game development. There's no need to spend hours and days optimizing your game, because when you use Ultra Engine your game is already optimized.

Image1.thumb.jpg.77623ea8241164b5de5efa755727c22b.jpg

New editor work-in-progress

If you're in Orlando the last week of November, check out my presentation titled Building Performant VR Applications for Multi-domain Modeling and Simulation, Tuesday morning at the Orange County Convention Center, or stop by booth #2341 in the small business pavilion during the I/ITSEC 2021 expo to see a live demo of our game-changing new technology.

If you would like to be notified when Ultra Engine becomes available, sign up for the mailing list.

  • Like 9

31 Comments


Recommended Comments



I think those demos should be publicly released so people can see the results for themselves. 

Also, really looking forward to that editor. 

  • Like 1
Link to comment
18 minutes ago, reepblue said:

I think those demos should be publicly released so people can see the results for themselves. 

Also, really looking forward to that editor. 

The benchmarks will be released closer to the engine completion date, and I will show them running live at the expo.

  • Like 3
Link to comment

That's crazy numbers Josh! Amazing job. Is this lighting test with realtime shadows also?

I also wonder about fragment shaders performance with high overdraw or just high number of PBR models.

Link to comment
Just now, Genebris said:

That's crazy numbers Josh! Is this lighting test with realtime shadows also?

Shadows are enabled in all engines. I discovered during the creation of these that Unity actually does no shadow map caching at all. It redraws all shadows, every single frame. However, if I move all the lights each frame to trigger a shadow update, the Ultra Engine build is still much faster.

  • Like 2
Link to comment

Can you share the Unity versions of the projects at least? I'm having trouble getting Unity down to 2FPS

Link to comment
1 minute ago, Reader said:

Can you share the Unity versions of the projects at least? I'm having trouble getting Unity down to 2FPS

I will release the Unity project at the same time. Which demo are you trying to recreate?

Link to comment
1 hour ago, Josh said:

The benchmarks will be released closer to the engine completion date, and I will show them running live at the expo.

Get it on video!

  • Upvote 1
Link to comment
36 minutes ago, Josh said:

I will release the Unity project at the same time. Which demo are you trying to recreate?

The unique instances. Instantiating 16x16x16 cubes, giving them unique properties renders them at a decent framerate,

Link to comment

I had to make a script that creates a unique mesh for each object, so that there are 4096 draw calls happening.

Link to comment
3 hours ago, Genebris said:

I also wonder about fragment shaders performance with high overdraw or just high number of PBR models.

The fragment shaders are quite big but I use an early Z pass so there's never any overdraw.

Link to comment

Nice !

Can't wait to use the Ultra Engine 'cos my Unity project FPS really is running slow for me atm.

What will the Ultra Engine scripting language be ? C++ ? C# ? LUA ? or its own ?

Link to comment
8 hours ago, awgsknite said:

Nice !

Can't wait to use the Ultra Engine 'cos my Unity project FPS really is running slow for me atm.

What will the Ultra Engine scripting language be ? C++ ? C# ? LUA ? or its own ?

C++, C#, and Lua.

Link to comment
6 hours ago, Polyák Kristóf said:

Can you post some comparisons to Unreal?

Recently switched from unity because of the perofrmance, courious how it stacks up.

Yes, I plan to investigate this as well. Right now I am focusing on Unity because in the real world I meet about one Unreal developer for every 20 Unity developers.

Link to comment

Reading this article was very interesting.

I would be so happy to see a test combining the features, like 1000 NPCs walking using mass, with lightning (like holding a torch?), with animations, with collisions (like if collides, takes another way), with pathfinding (like woalking through 100 trees models)...

Would tha be that hard to do?

 

 

Link to comment

I am keeping these tests simple because that makes it easier to recreate the scenario in each engine, and I don't want confounding variables. If two systems are each running fast separately there is no reason they would not continue to run fast when combined.

Link to comment
Quote
23 hours ago, Josh said:

If two systems are each running fast separately there is no reason they would not continue to run fast when combined.

 

Well that's excatly the problem I get with LE 4.6.... Each feature runs separately ok, but together on a big map for example  I become FPS dropped.

I imagine performance possibility like a bottle that get filled, the more yo add to a scene, the more it fills the bottle, until it is over. Does that not run like this more or less?

Link to comment

You probably have low FPS because of Leadwerk's poor GPU performance which these tests honestly don't tell us much about.

Link to comment

The reason his performance is not scaling well is because Leadwerks is mostly single-threaded. Each thing he adds slows down the performance a little bit and it forms a bottleneck on the CPU. If you run GPU-Z you can see your GPU utilization when this happens is probably pretty low.

Link to comment
3 minutes ago, Genebris said:

I actually always had 100% GPU with Leadwerks.

I think you are mistaken. There was an update to WIndows 10 a while back that made the GPU utilization value stop working. I had to use GPU-Z to get accurate numbers for my paper. I also tried OCAT, but the tool itself caused a significant performance drop when it was enabled, so I could not get meaningful numbers out of it.

Link to comment

Well I downloaded the GPU-Z and did a test.

There are a lot a values, not sure which is the one representativ for the working performances of the GPU but

1394537181_Capturedcran(101).thumb.png.c55baade7a5cabc424137fba40ea622d.png

The game runs at "only" 34 FPS and the GPU Memory used is at max (fast 6000) but the GPU load value is not max 38%

Other screenshot of the task manager shows that the GPU values are not at max...

2015887046_Capturedcran(102).thumb.png.74e52c31671a4a60a17c0985571bf56e.png

Stupid? why does the system not use more ressources and could give the game 60 FPS?

Link to comment

The problem is called "GPU starvation". This is what Ultra Engine was designed to solve.

image.png.c0b31109136dfcc63cca09a196716ca8.png

  • Haha 2
Link to comment

Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...