Slate Post Buffers and nDisplay

Does anyone know if Slate Post Buffers work when using nDisplay in a project? Whenever I launch my project in nDisplay, only solid black is drawn from the buffers in the UI. Is there a way to fix this?

Welcome to the community @FlatCabinet3858

I believe that nDisplay does the rendering of viewports and back buffers differently compared to a standard single display which is the cause of the Slate Post Buffers being rendered as a solid black.

To assist you further, could you provide the following information?

  • What version of Unreal are you running?

  • How do you bind/capture the Slate Post Buffer in your UI or C++/Blueprint code?

  • Do you run nDisplay across multiple cluster nodes or are you trying to run the test on a single machine?

Meanwhile I’d suggest that you check if the issue occurs when launching in Switchboard vs standalone/editor preview.
Sometimes frame synch or cluster rendering causes certain slate UI backbuffers to not be captured properly

Also if you’re using any custom UI materials or post-processing for slate elements make sure to check your blend modes/material domains just in case.

Let me know those extra details once you can and we can test a few possible solutions together!

Hi, thanks for the quick reply and the welcoming words :slight_smile:

  • Version: Unreal Engine 5.8
  • Setup: A Post Buffer Update on my widget, which sits before every other element/ on top of the hierarchy. Inside the widget blueprint, an element uses a User Interface domain material with the GetSlatePost0 node. The matching buffer is enabled in Project Settings.
  • Cluster: Single machine, two-screen config for now.

Thank you for your help!

Hey @FlatCabinet3858 thanks for providing those details and sorry for the delay!

I think the issue is that nDisplay does frame rendering differently compared to the regular viewport.
In a regular viewport slate is rendered on top of the back buffer directly (as a post-process) and can read slate post-buffers directly from the backbuffer.
But nDisplay first renders all viewports into offscreen render targets (for the cluster pipeline) before combining them into the final frame, meaning GetSlatePost0 would read an empty buffer (or whatever default color is)

Here are a few things I’d suggest test

  • Check Render Target/Viewport Invalidation
    In nDisplay, UI elements sitting at the top of the hierarchy might be getting evaluated before the 3D scene/UI backbuffer is fully swapped into the nodes viewport render target.
    Try ensuring that the UI element using the post buffer material is rendered in a separate pass or updated on tick after the main viewport buffer resolves

  • Alternative approach: Custom Render Target/Scene Capture
    If Slate post-buffers continue to return black in nDisplay’s viewport pipeline, a common workaround is capturing the UI or scene pass via a Canvas Render Target 2D or a Scene Capture 2D mapped into your User Interface material instead of relying directly on GetSlatePost0.

  • Check nDisplay Config Window/Viewport Post-Processing Settings
    In your .ndisplay config file or within the nDisplay Root Actor settings in the level, make sure custom post-processing and UI rendering layers are allowed/enabled for both of your display nodes

Epic Documentation:

· nDisplay Overview

· Rendering to Multiple Displays with nDisplay

· In-Camera VFX Overview

Give that a try and let me know if using a render target workaround solves your black texture issue