nDisplay on Linux (CentOS7)

Hey together,

after reading the 4.20 patch notes and seeing that UE4 finally has a CAVE support I was very excited. However when I tried to follow the instructions described here (https://docs.unrealengine.com/en-us/Engine/Rendering/Rendering-to-Multiple-Displays-with-nDisplay), I recognized that the nDisplayLauncher and the nDisplayListener are only provided as .exe files that run on Windows. However the CAVE/Cluster I’m working with, runs on Linux, more specific CentOS7. So is there a way to make the recent UE4 release run on such a system too?

Hello,

I wonder the same, and currently trying to make Unreal run in the Aix CAVE of the IT Center at RWTH Aachen.

We attempted building nDisplayListener and nDisplayLauncher with mono on Linux.
It works for nDisplayListener but not the nDisplayLauncher since it requires WPF which is not supported by mono.
I am planning a re-write of both in C++ (with Boost for network and Qt for UI) but wonder if this would be enough to run on a Linux CAVE, or whether there is more related code in the engine which currently prevents it even if I were to make the nDisplay apps run on Linux.

Hi,

We have a (gentoo) linux CAVE here in Sydney (UTS Data Arena) and are definitely interested in this too. Especially working with the Houdini Engine. Presently we run Equalizer & Omegalib & OSG to perform parallel graphics. Hmm was it written somewhere in the rel notes there is a “working linux version”. Yes, the docs (URL above) seem to only mention Windows. From a brief look at the header files it appears that you need to start the server and clients yourself, and then they talk to each other and keep sync over a port.
*/UnrealEngine/Engine/Plugins/Runtime/nDisplay/Source/DisplayCluster/Private/Network $ umm .h
./Service/ClusterSync/DisplayClusterClusterSyncClient.h
./Service/ClusterSync/DisplayClusterClusterSyncService.h
./Service/ClusterSync/DisplayClusterClusterSyncMsg.h
./Service/DisplayClusterService.h
./Service/SwapSync/DisplayClusterSwapSyncService.h
./Service/SwapSync/DisplayClusterSwapSyncMsg.h
./Service/SwapSync/DisplayClusterSwapSyncClient.h
./DisplayClusterSocketOps.h
./DisplayClusterServer.h
./DisplayClusterSession.h
./DisplayClusterMessage.h
./DisplayClusterTcpListener.h
./IDisplayClusterSessionListener.h
./Protocol/IPDisplayClusterClusterSyncProtocol.h
./Protocol/IPDisplayClusterSwapSyncProtocol.h
./DisplayClusterClient.h

Also, it seems a mistake to put VRPN is under the “nDisplay/ThirdParty” directory - I would have expected it to be independent, in it’s own directory. It’s not really related to multiple displays as such. It’s about I/O - Will it be moved later?

Also, pleased to see “topBottom” format, which is the stereoscopic format we prefer (though we’re active stereo). hope this would work as imagined.
*/UnrealEngine/Engine/Plugins/Runtime/nDisplay/Source/DisplayCluster/Private/Render/Devices/TopBottom/DisplayClusterDeviceTopBotto
m.cpp

Will be watching for updates.

cheers,
ben.

PS. “umm” is a local linux alias to find(1) files recursively

Hey,
I managed to add the nDisplay support to Linux. However it’s only working for the monoscopic view right now (we are using one graphics card for each eye), but it shouldn’t be hard to add the implementation for the Stereo view. You can find the pull request for it here:

https://github.com/EpicGames/UnrealEngine/pull/4916