MetalDuck is an experimental macOS real-time scaler inspired by Lossless Scaling, built with ScreenCaptureKit + Metal + MetalFX.
It captures a window or display, applies GPU processing (upscaling and optional frame generation), and presents the processed result in a dedicated output window.
- Real-time capture with
ScreenCaptureKit. - Metal render pipeline for low-latency presentation.
- MetalFX spatial upscaling (
MTLFXSpatialScaler). - Optional frame generation (
2x/3x) with GPU optical-flow estimation + warping. - Runtime controls for capture FPS, target FPS, scaling, sharpness, dynamic resolution, and FG.
- Live output HUD with
SOURCE / CAP / GEN / OUT FPS.
- This is not a native game renderer injection path.
- Quality can still differ from Lossless Scaling, especially in fast occlusion scenes.
- Highest FG quality still requires true game motion vectors/depth from engine integration.
- DRM-protected content may not be capturable by macOS APIs.
- Apple Silicon Mac
- macOS 15+
- Swift 6.2 toolchain (or compatible)
- Xcode Command Line Tools
SDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX15.4.sdk swift buildSDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX15.4.sdk swift build -c releaseSDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX15.4.sdk swift run./.build/release/MetalDuckbash scripts/create_release.shOutput:
dist/MetalDuck-macos-arm64.dmg
- Open
MetalDuck-macos-arm64.dmg. - Drag
MetalDuck.apptoApplications. - Open
MetalDuckfrom Launchpad or/Applications.
- Open a true 30 FPS video in your browser.
- In MetalDuck:
- Capture mode:
Window - Source: browser window
- Capture FPS:
30 - Frame Generation:
On - FG mode:
2x - Target FPS:
60
- Capture mode:
- Click
Scale. - Keep source window visible (browser may throttle hidden tabs/windows).
- Confirm in output HUD:
SOURCEaround 30CAParound 30GEN> 0OUTaround 60
Capture FPS: input cadence.Target FPS: output cadence cap.Frame Generation: inserts generated frames.Scale+Match Output: controls final processed resolution.Dynamic Resolution: trades detail for frame stability.
Sources/MetalDuck/Appapp lifecycle, control UI, output window.Sources/MetalDuck/CaptureScreenCaptureKit integration.Sources/MetalDuck/Renderingmain render loop and presentation.Sources/MetalDuck/UpscalingMetalFX spatial upscaler wrapper.Sources/MetalDuck/FrameGenerationoptical-flow FG engine.docs/architecture, usage, troubleshooting.
docs/ARCHITECTURE.mddocs/USAGE.mddocs/FRAME_GENERATION.mddocs/TROUBLESHOOTING.mddocs/ROADMAP.mddocs/RELEASE.md
MIT (LICENSE).