Skip to content

Engine Comparison

Taiizor edited this page Jun 5, 2026 · 3 revisions

Engine Comparison

This page is a side-by-side matrix of Sucrose's seven render engines — their underlying technology, the wallpaper types each can render, runtime requirements, interactivity, and support for the audio-reactive / system-status JavaScript APIs. Use it to decide which engine to assign per type on the Settings → Wallpaper page. Each wallpaper has a type (Gif, Url, Web, Video, YouTube, Application), and Sucrose maps that type to a configurable engine, launching the chosen .exe as a child process behind the desktop icons.

Audience: users and developers. For the conceptual overview and launch mechanics, see Engines-Overview.

Contents

The seven engines

Engine Assembly Underlying tech Renders
MpvPlayer Sucrose.Live.MpvPlayer.exe libmpv (native, via Sucrose.Mpv.NET) Gif, Video
WebView Sucrose.Live.WebView.exe Microsoft Edge WebView2 (Chromium) Gif, Url, Web, Video, YouTube
CefSharp Sucrose.Live.CefSharp.exe CEF / CefSharp (Chromium Embedded, offscreen) Gif, Url, Web, Video, YouTube
Nebula Sucrose.Live.Nebula.exe WPF MediaElement (Windows Media / DirectShow) Video
Vexana Sucrose.Live.Vexana.exe WPF image + in-house frame-by-frame GIF decode Gif
Xavier Sucrose.Live.Xavier.exe Sucrose.XamlAnimatedGif (XAML attached behavior) Gif
Aurora Sucrose.Live.Aurora.exe External process embedding (per monitor) Application

🖼️ Diagram needed: A matrix/grid graphic mapping the six wallpaper types (rows) to the seven engines (columns), with cells marked "default" or "available".

Engine enum order

The internal EngineType enum (src/Shared/Sucrose.Shared.Dependency/Enum/EngineType.cs) defines the canonical engine order, which is used as integer indices:

internal enum EngineType { AuroraLive, NebulaLive, VexanaLive, XavierLive, WebViewLive, CefSharpLive, MpvPlayerLive }

The six wallpaper types are defined in WallpaperType.cs:

internal enum WallpaperType { Gif, Url, Web, Video, YouTube, Application }

Type → allowed engines

Per-type allowed engines are sub-enums whose values alias back to EngineType. The default for each type comes from src/Shared/Sucrose.Shared.Space/Manage/Internal.cs:

Type Allowed engines Default
Gif (GifEngineType) Vexana, Xavier, WebView, CefSharp, MpvPlayer MpvPlayer
Url (UrlEngineType) WebView, CefSharp CefSharp
Web (WebEngineType) WebView, CefSharp CefSharp
Video (VideoEngineType) Nebula, WebView, CefSharp, MpvPlayer MpvPlayer
YouTube (YouTubeEngineType) WebView, CefSharp CefSharp
Application (ApplicationEngineType) Aurora (only) Aurora

The defaults in source:

public static SSDEUET UrlEngine = SSDEUET.CefSharp;
public static SSDEWET WebEngine = SSDEWET.CefSharp;
public static SSDEGET GifEngine = SSDEGET.MpvPlayer;
public static SSDEVET VideoEngine = SSDEVET.MpvPlayer;
public static SSDEAET ApplicationEngine = SSDEAET.Aurora;
public static SSDEYTET YouTubeEngine = SSDEYTET.CefSharp;

You change these in Portal → Settings → Wallpaper (see Choosing-Engines and Settings-Wallpaper). The combo boxes are GifPlayer and VideoPlayer in the Extensions area, and UrlPlayer, WebPlayer, YouTubePlayer, ApplicationPlayer in the Engines area; each writes the engine setting key (Gif, Url, Web, Video, YouTube, Application).

Full capability matrix

Engine Tech Gif Url Web Video YouTube Application Interactive Audio/System data
MpvPlayer libmpv ✔ (default) ✔ (default) No No
WebView Edge WebView2 Yes Yes (Web only)
CefSharp CEF / CefSharp ✔ (default) ✔ (default) ✔ (default) Yes Yes (Web only)
Nebula WPF MediaElement No No
Vexana In-house GIF parser No No
Xavier XamlAnimatedGif No No
Aurora Process embedding ✔ (default) Input forwarded Volume only

Notes:

  • "Audio/System data" means the JavaScript audio-reactive and system-status APIs (SucroseAudioData, SucroseProcessorData, etc.). These are delivered only for the Web type on WebView or CefSharp. See Create-Audio-API and Create-System-API.
  • MpvPlayer intentionally does not serve the YouTube type even though libmpv could — YouTube is routed only to the browser engines.
  • "Interactive" reflects which engines forward input: WebView, CefSharp, and Aurora reference RawInput.Sharp; MpvPlayer, Nebula, Vexana, and Xavier are non-interactive renderers.

Runtime requirement matrix

Engine Extra runtime requirement Auto-download offered? Min OS / version
MpvPlayer Ships its own libmpv-{x86,x64,ARM64}.dll (no external install) n/a (bundled) Windows 10 1607 (Redstone 1) via IsRedstone1 check
WebView Edge WebView2 runtime ≥ 131.0.2903.70 Yes (Continue / Download / Remember / Close)
CefSharp VC++ Redistributable ≥ 14.40.33816.0; CEF native binaries shipped with engine Yes (Continue / Download / Remember / Close)
Nebula OS media codecs (Media Foundation / DirectShow) n/a
Vexana None (pure managed WPF) n/a
Xavier None (pure managed WPF) n/a
Aurora None beyond .NET + Skylark; the embedded app supplies its own n/a

All engines target .NET 10.0-windows and ship for x86, x64, and ARM64. The .NET 10 runtime is bundled privately as Sucrose.Runtime — no system .NET install is required. See System-Requirements and Runtime-Dependencies.

Hardware acceleration behavior

The HardwareAcceleration toggle (Settings → Wallpaper) maps to engine-specific flags:

Engine HardwareAcceleration ON HardwareAcceleration OFF
MpvPlayer hwdec=auto-safe hwdec=no
WebView --enable-gpu + --enable-gpu-vsync --disable-gpu + --disable-gpu-vsync
CefSharp enable-gpu=1 + enable-gpu-vsync=1 disable-gpu=1 + disable-gpu-vsync=1 (skipped on Germanium)
Nebula / Vexana / Xavier / Aurora n/a (WPF/native handles it) n/a

Stay Awake applies across all engines via a 30-second SetThreadExecutionState loop (ON → ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED; OFF → ES_CONTINUOUS); MpvPlayer additionally rewrites its stop-screensaver config. See Performance-Rules and Choosing-Engines.

Interactivity and data-API support

  • Interactive engines: WebView, CefSharp, Aurora (reference RawInput.Sharp; forward mouse/keyboard).
  • Non-interactive renderers: MpvPlayer, Nebula, Vexana, Xavier.
  • Audio-reactive + system-status JS APIs: Only the Web type on WebView or CefSharp. The engine flips Backgroundog's AudioRequired = true, opens a communication channel (CommunicationType: Pipe / Signal / Transmission), receives data from Backgroundog, and calls ExecuteScriptAsync with the theme's JS callbacks. Video/Gif/Application engines inject no system data (Aurora apps get volume only). See Create-Web-Architecture and IPC.

Choosing an engine

If you want… Use
The most format-robust video/GIF playback MpvPlayer (default for Gif & Video)
Audio-reactive / system-data web wallpapers CefSharp (default for Web) or WebView
The most versatile browser engine across all browser types WebView
A lightweight video player without libmpv Nebula (relies on OS codecs)
A lightweight local-GIF player, no native runtime Vexana
A GIF streamed from a remote URL, no native runtime Xavier
To run an app/game as the wallpaper Aurora (Application only)

If a type is manually assigned to an engine that cannot render it, the engine's Configure() switch hits default → Close() and nothing shows — but the Portal only offers compatible engines per type, so this is a safeguard.

See also

Home

Getting Started

Wallpaper Types

Using Sucrose

Settings Reference

Creating Wallpapers

Engine Reference

Automation & Command Line

Architecture & Internals

Data, Files & Diagnostics

Building & Contributing

Help & Support

Clone this wiki locally