I’d like to create a separate Slate SWindow—independent from the game viewport—that can be positioned anywhere on the desktop, with a fully transparent background (show desktop behind it), while still rendering Slate widgets on top so they appear “on the desktop.” This already works in the editor in some contexts, but I can’t get equivalent transparent behavior in standalone/shipping.
Motivation / Use cases
- Companion HUD/overlay for streamers, tools, and second-screen-style UI.
- Desktop “heads-up” utilities (perf, chat, or debug panels) controlled by the running game/tool.
- Diegetic desktop widgets for creative apps.
Current behavior
- Editor has some transparent window paths, but I can’t enable true per-pixel transparency for a separate Slate window outside the editor (standalone/shipping).
- I don’t see a supported way to toggle desktop click-through vs hit-testable regions per widget.
Feature request (acceptance criteria)
- An API to create a Slate window with per-pixel transparency in standalone/shipping on desktop platforms.
- Ability to toggle click-through at the window level and/or supply a per-widget hit-test mask so only drawn widgets consume input.
- Z-order control for always-on-top (where the OS permits).
- Documented platform support matrix (Win/macOS/Linux) and any required project settings (RHI, swap chain flags, etc.).
- Minimal sample showing
SWindowcreation + a couple of Widgets on a transparent background.
What I tried
- Creating an auxiliary
SWindowviaFSlateApplication::AddWindow(...)with transparency flags; works in editor but I can’t reproduce per-pixel transparency in standalone/shipping. - Platform hacks (Windows layered windows / DWM composition) aren’t available through public UE APIs without engine changes.
Nice-to-have API shape (illustrative)
TSharedRef<SWindow> Overlay = SNew(SWindow)
.IsInitiallyMaximized(false)
.SupportsMaximize(false)
.Type(EWindowType::Normal)
.AutoCenter(EAutoCenter::None)
.Transparency(EWindowTransparency::PerPixel) // new: enforce per-pixel
.IsBackgroundTransparent(true) // new: desktop shows through
.IsClickThrough(true) // new: window ignores mouse (toggleable)
.AlwaysOnTop(true); // new or documented behavior
// Optionally: per-widget hit-test mask for non-rects
MyWidget->SetHitTestMask(SharedMaskTextureOrPath);
Questions
- Is full per-pixel transparency in standalone/shipping currently supported anywhere?
- If not, would Epic consider adding public APIs / project settings to support this?
- Any guidance on the correct path to implement per-widget input regions over a transparent window?
Environment
UE 5.6 (Windows primary), running standalone and planning for shipping builds.
Thanks!