nDisplay on Linux is showing a rainbow-colored image, but Editor renders fine

I’m experimenting with Unreal Engine on Linux and in containers. Everything is working great for the most part. Switchboard doesn’t seem to be compatible with Linux yet, so I launched an nDisplay render instance on my Linux machine manually by altering the command that Switchboard would usually send. This works great, and starts up nDisplay in my X session, but the image looks like this:

If I open the same level in the Editor, in the same X session, everything looks fine.

Here is the command I’m using to launch the instance:

Engine/Binaries/Linux/UE4Editor \
    "/home/ue4/Unreal Projects/Home_Setup_2/Home_Setup_2.uproject" \
    -game \
    -messaging \
    -dc_cluster \
    -nosplash \
    -fixedseed \
    -NoVerifyGC \
    -noxrstereo \
    -xrtrackingonly \
    -RemoteControlIsHeadless \
    -StageFriendlyName=Render_Node_1 \
    -MaxGPUCount=1 \
    -dc_cfg="~/Unreal Projects/Home_Setup_2/Home_Setup_2-1.ndisplay" \
    -dc_dev_mono \
    -useallavailablecores \
    -dc_node=Render_Node_1 \
    Log=Render_Node_1.log \
    -ini:Engine:[/Script/Engine.Engine]:GameEngine=/Script/DisplayCluster.DisplayClusterGameEngine,[/Script/Engine.Engine]:GameViewportClientClassName=/Script/DisplayCluster.DisplayClusterViewportClient,[/Script/Engine.UserInterfaceSettings]:bAllowHighDPIInGameMode=True \
    -ini:Game:[/Script/EngineSettings.GeneralProjectSettings]:bUseBorderlessWindow=True \
    -unattended \
    -handleensurepercent=0 \
    -UDPMESSAGING_TRANSPORT_MULTICAST="230.0.0.1:6666" \
    -UDPMESSAGING_TRANSPORT_UNICAST="192.168.1.10:50000"  \
    -ExecCmds="DisableAllScreenMessages" \
    -windowed \
    -forceres WinX=0 WinY=0 ResX=3840 ResY=2160 \
    -CONCERTRETRYAUTOCONNECTONERROR \
    -CONCERTAUTOCONNECT \
    -CONCERTSERVER=thegrid \
    -CONCERTSESSION=s1 \
    -CONCERTDISPLAYNAME=Render_Node_1 \
    -CONCERTISHEADLESS

Ignore the backslashes at the end obviously, that’s just to add line breaks in the command since it’s so long.

No errors seem to be appearing in the console. I originally had some OpenColorIO errors that resulted in only the frustum showing up, but that also had the rainbow colors and I’ve since disabled that plugin completely.

Anyone have any ideas what would be causing these rainbow colors to show only when in nDisplay?

Necro’ing this in case you haven’t found a solution in all those months, but it seems to be very much like a texture format issue.

Are you using

[/Script/Engine.RendererSettings]
r.DefaultBackBufferPixelFormat = 1

in your Default Engine settings? If not, try this. If you are, maybe try the different pixel formats and see if you can find one that works for you. It could still be a completely different issue, but your images look very similar to when we first ported nDisplay to Vulkan.

3 Likes

David, I can’t thank you enough for that necrobump!! Your reply was a joy to wake up to, but I wanted to hold off on a reply until I was able to confirm. Took me a while to get back to this project, but lo and behold - that setting fixed it. Even in 5.1 it seems that’s still needed. Thank you again! I can finally continue my R&D on this.

1 Like

Hi @oramirite any chance I could get your shell script.
First, I used the windows template and got it working fine.
Then, wanted to do this on linux using UE 5.1.1… I followed the same procedure and implemented this for 2 displays but only 1 display works.

Thanks in advance.

For anyone interested, The main reason was auto resize feature in unreal engine, once disabled everything was ok. I made it work on Linux.