NDisplay Stereo Rendering Issue

Hello, we updated our project to Unreal 5.8.2 and we found some issues when enabling Stereo Rendering options with ndisplay in Switchboard, that were not happening in Unreal 5.7.

We were able to reproduce those issues in the nDisplay Template project :

Just create a simple ndisplay configuration with one screen, add it to the scene, to Switchboard, and launch the node.

The rendering of the scene will look clean.

Then go back to switchboard and change the Render Mode to any of the stereo render mode.

We first tried to enable Frame Sequential, the stereo mode we and most of our clients are using usually, and the rendering became all muddy with some kind of temporal instability that makes the pixels seemingly go from left to right.

We then tried to see if it was happening in a way simpler stereo mode, Side by Side, where the image is just split in the middle with one side corresponding to the left eye and one side to the right.

As soon as the mode is enabled in Switchboard, the image presents the same visual artifacts as with Frame Sequential, even BEFORE recombigning the 2 eyes images by enabling it in our projector.

What’s weird is that with both modes, it does feel like stereo is working, but the picture is all ruined by the rendering issue.

Maybe there’s some kind of default rendering mode that was enabled in unreal 5.8 that doesn’t work well with ndisplay stereo and that was not disabled in the sample project ?

I joined some images of how it looks like with each rendering mode.

This is a big issue for us as many of our clients buy our software for using it in 3D rendering mode, with all kinds of setups.

Thanks for your help !

Malek

FrameSequential.png(446 KB)
SideBySideCombined.png(407 KB)
FrameSequentialVideo.mp4(29.3 MB)
Mono.jpg(2.92 MB)
SideBySide.jpg(2.95 MB)

Steps to Reproduce
Create project from nDisplay Template project

Create a simple ndisplay configuration with one screen, add it to the scene, to Switchboard, choose any of the Stereo Rendering Modes, and launch the node

Hi Malek,

A quick update to let you know that our QA team has been able to reproduce the problem, but only when creating the nDisplay Config from scratch. Loading the NDC_Basic from the template works fine.

We have created a bug report for the engineering team. I’ll keep you posted if they can provide you with a workaround or a fix.

Thanks

Alban

Thanks for your quick response !

That’s great to hear that you were able to reproduce it, yeah i didn’t try with NDC_Basic indeed, we just used our usual (very simple) ndisplay config with the screen location already configured and everything.

That nice to know that it works with this configuration, it could end up just being a setting difference between the two that i could change ?

Thanks for your help,

Malek

Hi Malek,

Here is the latest I heard from the team.

It turns out that the NDC_Basic.ndisplay config is still using Projection Policy = Simple, which does not show the blurry effect, but this setting has been deprecated in 5.8. (Probably the reason it was ok in 5.7 on their end) The default is Mesh policy.

  • Disabling the viewport upscale method hides the issue, but I’m not sure if driving without an upscaling method is recommended
  • Changing the Viewport Projection Policy to Manual -> Stereo -> Angles is showing some improvement, but the blur is still visible to some extent and requires hand-authoring the frustum.

This is not the best workaround we can imagine, but it’s all we can offer as of today.

The next step is for our engineering team to analyze the issue and develop a fix. We’ll keep you posted.

Alban

Hi thanks for the quick update, we’ll try and check what we can do with those workarounds for now !

Thank you very much,

Malek

Hi Malek,

Since we need to wait for the engineering to fix the bug, I’ll close this ticket, but I’ll keep you posted as soon as I receive a notification on the internal bug report.

If you need to refer to the bug in another conversation, the tracking number is UE-394781

Best,

Alban

Hi Malek,

I just had some good news from the engineering team on this topic. If you are using a custom build from source, you can apply it to your code base.

If not, since it’s located inside a plugin, you can momentarily copy the nDisplay Plugin to your Project and apply it there. The plugin priority order will pick it.

Edit the file Engine/Plugins/Runtime/nDisplay/Source/DisplayCluster/Private/Render/Viewport/DisplayClusterViewport_Viewpoint.cpp, around line 341. (it might differ a bit depending on your exact version, they are working on main). Change PrevFrameContext.ViewData.RenderCameraLocation to PrevFrameContext.ViewData.RenderLocation as you can see on the right pane below.

If you’re able to do this, can you confirm it fixes the bug on your end, too?

Regards,

Hello, thank you so much for all the work done on the subject !

We were able to copy the ndisplay plugin in our project and apply the fix (didn’t know it was possible !) and it indeed fixed all of the bluryness in stereo, the issue is fixed !

However, we had a second issue that appeared with the unreal 5.8 migration, that we were hopping was related to the bluryness bug and would be fixed with it, but it’s unfortunately not the case …

The issue is our program crashes after approximately 1 min of use with ndisplay enabled, with crash logs related to post process materials use.

We were able to pinpoint what’s causing it exactly and reproduce it in the template project, but i’ve explained the details in a new ticket available here, since it doesn’t seem related to the first issue : [Content removed]

Anyway, thank you for the help with this issue, and we hope you can still help us work around the second one as well !

Malek