BenchMark 3. Motel Room

This tests the rendering and editing of a hotel room. The room is fairly well optimized – this is more a test of large numbers of them.

The tests are run in UE5.2.1 on an RTX3070ti. Scalability is set at Epic and hardware Lumen is enabled. There are 100 rooms, each room has 122 meshes (82 different) – so 122,000 meshes in the level.

I originally tested them in UE5.3 preview1 and interestingly the results were much slower for all tests. For some reason the rdBP default Instancing produced results of 25FPS.

1. Actors

The room is comprised of all static meshes and lights. The editor handles editing a few rooms ok, but if you try and duplicate 5 or more at once be prepared sporadic movement and pauses.

Render time isn’t great either. There’s a long pause when playing/stopping and loading/saving takes a long time.

Timings:

Render: 13.48 milliseconds (74.18 FPS)
Dup10: 16.9 seconds
Load: 44.78 seconds
Save: 4.12 seconds
Play: 16.86 seconds

Ratings:

Rendering: 2/5
Editing: 3/5
Playing: 2/5
Variety: 1/5 (potential to add variety with custom blueprints/c++)
Interact: 1/5 (potential to add interaction with custom blueprints/c++)

Average: 1.8/5


2. Epic Prefab

The editing of single or low count prefabs is OK, but creating something like this is very painful – not really a realistic option for editing.

Rendering was not good either – around the same as just the actors. There’s a long pause when playing/stopping and loading/saving takes a long time.

Timings:

Render: 13.04 milliseconds (76.66 FPS)
Dup10: 7.50 seconds
Load: 12.9 seconds
Save: 3.17 seconds
Play: 12.59 seconds

Ratings:

Rendering: 2/5
Editing: 2/5
Playing: 2/5
Variety: 1/5 (potential to add variety with custom blueprints/c++)
Interact: 1/5 (potential to add interaction with custom blueprints/c++)

Average: 1.6/5


3. BatchedInstances

The batched instanced system from “MergeActors” does a reasonable job on this test with editing – there are pauses and stutters though – it struggles. There is a significant delay when Playing/Stopping.

The rendering is slightly faster than actors – the reason it doesn’t speed up too much is that there are 82 different meshes and the instances are per room so there are 8200 HISMCs created. It is possible to select them all and Batch them as one actor again, that brings the FPS up to 93FPS and makes the Play/Stop quick.

Timings:

Render: 11.63 milliseconds (85.95 FPS)
Dup10: 3.38 seconds
Load: 21.77 seconds
Save: 2.54 seconds
Play: 6.11 seconds

Rating:

Rendering: 3/5
Editing: 4/5
Playing: 4/5
Variety: 1/5 (potential to add variety with custom blueprints/c++)
Interact: 1/5 (potential to add interaction with custom blueprints/c++)

Average: 2.6/5


4. MergedMesh

The merged meshes worked out very well for this test – the mesh merged together without any errors and the editing is the smoothest of all these tests – rendering is quite fast – almost as fast as rdInst instancing. There is no interactivity or variety as they are single meshes.

As far as editing, playing and saving/loading – Nanite is great – this system works well. There are just some down-sides. Firstly – there is no individual interactivity for parts in the mesh, Secondly – you can’t reuse just parts (e.g. a drink can), Thirdly – you can’t add variety to the meshes.

Timings:

Render: 9.61 milliseconds (104.08 FPS)
Dup10: 0.42 seconds
Load: 3.45 seconds
Save: 0.34 seconds
Play: 2.98 seconds

Rating:

Rendering: 5/5
Editing: 5/5
Playing: 5/5
Variety: 0/5 (cannot introduce variety into a static mesh)
Interact: 0/5 (cannot interact with individual components of a static mesh (easily))

Average: 3/5


5. Merged into a PackedLevelActor

The Packed level Actor for this rooms works very well – for some reason it out-performs the other PLAs in the other tests. It renders almost as quickly as rdInst BPs and is quick to edit too.

Timings:

Render: 9.18 milliseconds (108.91 FPS)
Dup10: 3.54 seconds
Load: 3.01 seconds
Save: 4.12 seconds
Play: 3.87 seconds

Ratings:

Rendering: 5/5
Editing: 5/5
Playing: 5/5
Variety: 1/5 (potential to add variety with custom blueprints/c++)
Interact: 1/5 (potential to add interaction with custom blueprints/c++)

Average: 3.4/5


6. rdBPtools prefab with default instancing

The editing is really good, smooth and no pauses. the Playback is also very good.

There’s no pauses when playing, and loading/saving is fast.

Timings:

Render: 9.94 milliseconds (100.65 FPS)
Dup10: 0.20 seconds
Load: 1.85 seconds
Save: 0.63 seconds
Play: 1.94 seconds

Rating:

Rendering: 5/5
Editing: 5/5
Playing: 5/5
Variety: 5/5 (randomization build into rdBPtools Prefab classes)
Interact: 1/5 (potential to add interaction with custom blueprints/c++)

Average: 4.2/5


7. rdBPtools prefab with rdInst instancing

I’ll make a video of how smooth the editing is – duplicating and dragging is all running very fast.

There’s no pauses when playing, and loading/saving is fast.

Render: 8.87 milliseconds (112.71 FPS)
Dup10: 0.20 seconds
Load: 0.80 seconds
Save: 0.43 seconds
Play: 1.46 seconds

Rating:

Rendering: 5/5
Editing: 5/5
Playing: 5/5
Variety: 5/5 (Randomization built into rdInst – fast c++)
Interact: 5/5 (rdInst has tools to convert instances to actors (and actor pooling) and back to instances)

Average: 5/5