nDisplay - how to achieve frame sync?

I’ve been trying nDisplay with 2 different PCs and 2 TVs of the exact same model. I’ve, to an extent, successfully set up my screen layout. But now the graphics are just not in sync. Even worse, the difference between the 2 TVs is inconsistent. Sometimes the time difference is invisible to the naked eye (detected through video captured by iPhone at 240fps), sometimes the difference is somewhere between 2 ~4 frames on a 60hz TV (8~16 frames according to my 240fps capture).

I checked the connection and both are pretty much the same, an HDMI cable connects the graphics card directly to the TV. I’m running a simple scene (nDisplay template) and according to “stat fps” my frame rate is stable at 60fps. I tried adding -VSync in nDisplay Launcher and it doesn’t help either, the graphics are still sometimes in sync sometimes off… Since I’m running in DX11 mode, the sync policy is set to 1, which is software sync. Does this affect the time sync between displays?

Have you guys encountered time sync issues? How do you solve them?

Unfortunately, this is the position that all of us who are trying to use nDisplay find ourselves in.

It’s quite difficult to get going, so you battle and battle until you finally find a way to get it to even launch.

Then you discover that the sync simply doesn’t work and therefore the performance is just terrible.

So then you post online every you can looking for help only to be met with an impenetrable wall of silence.

1 Like

Yup, the main problem now with nDisplay are not the features but the lack of responses from any developer.
From what i have found in the github history, these are *probably the main developers working on nDisplay:

you can see the commit list here: https://github.com/EpicGames/UnrealEngine/commits/release?after=5677c544747daa1efc3b5ede31642176644518a6+34&path[]=Engine&path[]=Plugins&path[]=Runtime&path[]=nDisplay

Don’t really understand how and where they are taking this Plugin in the future. Would like a word from any of those guys.

Hi gents,

My understanding is that you’re trying to sync two PCs with each PC having one respective monitor. Here are a few thoughts I can share to help you out:

  • Assuming you’re running regular gaming hardware (not NVIDIA Quadro cards for example), then you don’t have access to Genlock feature which allows syncing displays to external clock or syncing two graphics cards using daisy chaining technique. This is the only way to obtain perfect sync between two display hardware not communicating. In your case, every display is hosting its own clock hence possible visual discrepancy between the two PCs. From that perspective, what you are seing is “normal” in the sense that although the Unreal Content (simulation, gameplay, etc…) is sync, they are not displayed at the same time because the displays do not communicate their timing to each other. They “can” be in sync by chance and then “desync” the ame way flashing lights behave at a red light intersection.
  • nDisplay in 4.24 will be quite different from previous releases so we encourage you to try it out when it gets released soon. You even have previews available as we speak.
  • Check out our website in a few weeks as we’ll be releasing an nDisplay Whitepaper explaining what it is about and where we’re bringing it. I believe you will find it very insightful.

Our apologies for the slow response, we assigned your thread and question to internal nDisplay experts.
Let us know if you have any additional questions!
Sev.

vito0719,

You might have one of two potential problems:

  1. Wrong system configuration;
  2. Different TV settings. There are some special filters in TVs like “Movie”, “Game”, “Sport”, etc. You need to deactivate such filter or set it to some one that has no smoothing and latency. Make sure both TVs have the same settings.

Could you share your config file please? I would double check the item <1>.

Do you use nDisplayLauncher and nDisplayListener to start the game on your PCs?

nDisplay dev here!

To achieve perfect sync across multiple displays you need specific hardware like nVidia Quadro Sync Board along with nVidia Quadro video card, you can find more information at their website

This hardware required to ensure that each display device got the same frame at the videocard front buffer to read.

There are a few key points we sync over the cluster nodes, scene timings (delta time), inputs, thread barriers and frame output to rendering API (dx::presents) but everything that goes beyond the application control taken over by windows/drivers and we have have no choice other than using professing Quadro hardware (AMD got FirePro).

I hope that helps.

I think the document specified that to use sync mode 2, we must use OpenGL in addition to Quadro hardware. But you wrote dx::presents, which is clearly DX. Since the limitation of OpenGL rendering (SM4 only I think) and the out of sync is most of the time acceptable, we have to choose DX11 over this sync problem (says the financial department). So is OpenGL actually a requirement for perfect sync? Or is sync mode 2 not what you meant here?

BTW, since you are nDisplay dev, I just have to give this feedback: Setting up the config file is certainly not very intuitive and quite error-prone. When testing my config file in editor, I’ve suffered from flipped TV many times… basically, the TV is facing the opposite direction of my intended direction and I have no way to tell… I had to make a custom material which would make the front of the TV mesh black and the rear white. This way I’ll always know the direction the TV’s facing.

Thanks for the reply and the awesome work!

1 Like