Universal-FrameFX icon
Universal-FrameFX
Version 1.2 · real-time window upscaler and frame generator for Windows

Capture any window, measure its motion with your GPU's motion hardware, keep text crisp, add generated frames, and show the result right on top of the app, click-through, or full screen.

Install Download .zip
Windows 10 / 11 · x64 Direct3D 11 compute Hardware motion vectors Click-through overlay Self-contained · no installs No telemetry
The app

Pick a window.
Press Start.

Universal-FrameFX lists your open windows (plus a built-in, jittered test scene), captures the one you choose with Windows.Graphics.Capture, and opens the result either as a click-through overlay exactly on top of that window (you keep typing and clicking in the app) or in a separate full-screen output, with a live HUD showing what the GPU is doing.

Universal-FrameFX 1.2 main window: dark theme with rounded Source, Upscaling and Frame generation cards, a pinned Apply & start button, and the detected motion hardware

Real screenshot of Universal-FrameFX 1.2 on an RTX 3060 Laptop GPU (Windows 11).

What's new in 1.2

Real motion vectors.
Right on top of the app.

Hardware motion vectors

Motion now comes from the GPU's own motion hardware, in both directions (backward and forward) with a per-pixel confidence map: NVIDIA Optical Flow on RTX cards (runtime included with the NVIDIA driver), D3D12 Video Motion Estimation on AMD and Intel. The 1.1 estimator is the automatic fallback. The app and the HUD show which source is active, and you can pick one yourself.

Crisp text, stable motion

Every 16×16 tile is checked for change. Tiles that stay put, like text, UI and menus, take the sharp spatial path, and temporal accumulation runs only where things move. On a still desktop that is +0.6 dB over 1.1.

Smarter frame generation

In-between frames are warped with the new forward and backward vectors. Disagreeing vectors mark occlusions, low-confidence areas fall back to a blend, and static HUD/overlay regions are detected and kept out of the warp.

Click-through overlay

The output can sit exactly on top of the source window, borderless, always on top and click-through, and it follows the window when you move or resize it. The app keeps mouse and keyboard focus. Ctrl+Alt+F hides or shows it, Ctrl+Alt+Q stops. The separate window and full-screen output are still there.

Apply button

Change the upscaler, quality, sharpness, frame generation, motion source, output mode or source window, then press Apply. Unapplied changes are marked and listed, and Apply starts the output if it isn't running yet. Start/Stop works as before.

New look, any size

A dark theme with rounded cards, pill buttons and flat sliders, drop-downs and toggles, plus a dark title bar with Mica on Windows 11. The window resizes and maximizes, settings live in collapsible sections (Advanced starts collapsed), the size and open sections are remembered, and Apply stays pinned at the bottom.

Cleaner install

The installer now removes a leftover Start Menu shortcut from the old PowerShell-based FrameFX tool, so the Start Menu opens the real app. The old tool's files are left alone.

How it works

Temporal upscaling,
no game engine.

Captured frames arrive as Direct3D 11 textures and stay on the GPU. Every stage is an HLSL compute shader, compiled on your machine at startup.

Windows.Graphics.Capture ──► D3D11 texture  (stays on the GPU)
                                   │
   motion hardware (NVIDIA Optical Flow │ D3D12 Video Motion Estimation)
      or built-in block matching ──► backward + forward vectors + confidence
                                   │
   dilate ─► disocclusion mask ─► reactive mask ─► thin-feature locks
                                   │
       static-tile mask ─► still tiles: edge-adaptive upscale + sharpen
                        └► moving tiles: Lanczos-2 upsample + history + YCoCg clip
                                   │
                         weighted accumulation ─► sharpen
                                   │
   (optional) occlusion-aware frame generation, HUD kept out of the warp
                                   │
             click-through overlay on the app  │  separate / full-screen window

FrameFX Temporal

Motion-aware accumulation where things move: each frame is blended with reprojected history, guarded by disocclusion and change masks, thin-detail locking and colour clipping so stale pixels can't ghost. Unchanged tiles use the crisp spatial path. Everything finishes with adaptive sharpening.

FrameFX Spatial

Edge-adaptive upscaling (the filter follows the direction of each edge) followed by contrast-adaptive sharpening. Single frame, no history, no motion.

Frame generation

Optional. Synthesizes one in-between frame from forward and backward motion with occlusion handling and a blend fallback, which roughly doubles the displayed frame rate and adds about one capture interval of latency. It is FrameFX's own motion-compensated interpolation.

Window capture

Windows.Graphics.Capture delivers GPU-resident frames of the chosen window at its native size. The overlay shows the result on top of the window at the same size; the separate output upscales to fill the monitor (up to 3×). FrameFX's own output is excluded from capture.

Built-in self-test

Universal-FrameFX.exe --selftest compiles every shader, renders an analytic test scene, and prints measured PSNR for temporal vs spatial vs bilinear, plus frame generation vs blending. The installer runs it for you.

Prefers the fast GPU

On hybrid laptops it picks the high-performance GPU automatically. Set UFX_GPU=power for the integrated GPU, or UFX_GPU=default to let Windows decide.

An honest limitation. A game engine gives an in-game temporal upscaler motion vectors, a depth buffer and a known sub-pixel jitter for every frame. A window capture has none of those. So FrameFX measures motion itself (with motion hardware when the GPU has it), replaces depth with luma-based disocclusion tests, and gets no jitter from the captured app. That means on captured windows the temporal mode mainly adds stability. It cannot invent detail the app never rendered, and in our measurements it scores slightly below the spatial mode there. The full temporal reconstruction shows up on the jittered built-in test scene. Upscaling never raises the captured app's own frame rate.
Measured

Numbers, not
adjectives.

Output of the app's own --selftest on an NVIDIA GeForce RTX 3060 Laptop GPU: 640×360 → 1280×720, PSNR in dB against a 4×4 supersampled ground truth, mean of the last 16 of 48 frames. Higher is better.

Temporal upscaling1.11.2 built-in1.2 NVIDIA OF1.2 D3D12 MESpatialBilinear
Static scene + jitter, ideal motion22.4222.4222.4222.4219.0519.77
Static scene + jitter, measured motion20.5220.5320.4319.2719.0519.77
Animated + jitter (test scene)20.2520.2519.9019.3719.0619.82
Animated, no jitter (like a capture)20.3220.3320.4320.2420.5721.01
Static, no jitter (still desktop)19.8720.4920.4920.4920.4920.91
Slow pan, no jitter (scrolling)20.8720.8721.0920.5720.8421.14
Slow pan + static HUD, no jitter19.5819.5819.7419.3919.5719.85
Frame generation (middle frame)50/50 blend1.11.2 built-in1.2 NVIDIA OF1.2 D3D12 ME
Pure pan, 3×2 px per frame15.7219.0219.5516.4538.23
Pan + animation15.5317.7218.3117.3118.31
Pan + static HUD17.0119.2019.6520.7720.14
Fast animation (occlusion)14.8215.1315.8515.4516.32

Where 1.2 is better: still text and UI (+0.6 dB, now equal to the spatial path), scrolling and HUD scenes with NVIDIA Optical Flow (+0.2 dB), and frame generation in every scenario (up to +19 dB on a clean pan with D3D12 motion estimation, +1.6 dB with a HUD on screen). Where it is not: on the jittered test scene the hardware motion sources score 0.1 to 1.3 dB below the built-in estimator, and NVIDIA Optical Flow can lock onto the wrong repeat of a perfectly periodic pattern (the pure-pan frame generation row). On AMD Radeon integrated graphics, D3D12 motion estimation gives 36.5 dB on the pure pan against 19.2 dB for 1.1. The test scene is deliberately harsh (sub-pixel text strokes, hard edges), so absolute numbers are low, and PSNR favours soft output like bilinear.

Live run, 1.2 overlay on a 1483×762 console window (RTX 3060 Laptop, 60 Hz)Motion sourceGPU timeOutput
FrameFX TemporalNVIDIA Optical Flow 4×4 (default)9.5 ms60 fps
FrameFX TemporalD3D12 Video Motion Estimation9.1 ms60 fps
FrameFX TemporalBuilt-in estimator9.5 ms58 fps
FrameFX TemporalNVIDIA Optical Flow 2×2 (optional)25.9 ms42 fps
Version 1.1, similar windowBuilt-in estimator7.4 ms36 fps (source rate)

Frame generation only adds frames when the source runs below the display's refresh rate. A window that already updates at 60 fps on a 60 Hz display gains nothing from it.

Requirements

What you need.

The minimum column is what runs. The recommended column is what we tested at 1440p output at the display's full refresh rate.

ComponentMinimumRecommended
Windows
Windows 10 version 2004 (build 19041), 64-bit
Windows 11 (tested on build 26200)
GPU
Direct3D 11 (feature level 11_0) integrated GPU; hardware motion optional
Discrete GPU, e.g. RTX 3060 Laptop, for 1440p at 60 fps
Processor
Any x64 CPU
Arm64 Windows is not built (x64 only)
Storage
75 MB free
150 MB free for updates
Runtime
None (.NET 8 is bundled)
None
Display
Any monitor
1440p or 4K panel to see the upscale at 1:1
Windows only, for now. 1.2 ships for Windows x64. There is no tested macOS build, so none is offered here. Hardware motion needs an NVIDIA GPU with Optical Flow (RTX / GTX 16 series and newer, recent driver) or a GPU whose driver exposes D3D12 Video Motion Estimation. Otherwise the built-in estimator is used. The overlay covers the window at its own size. To enlarge a small window, use the separate full-screen output.
Install

One line of PowerShell.

Checks your Windows version, downloads the zip, verifies it against the SHA-256 published in version.json, installs per-user to %LOCALAPPDATA%\Programs\Universal-FrameFX, adds a Start Menu shortcut, and runs the GPU self-test. No admin rights needed.

PS> irm https://chopstickshq.com/universal-framefx/install.ps1 | iex

Uninstall:

PS> & ([scriptblock]::Create((irm https://chopstickshq.com/universal-framefx/install.ps1))) -Uninstall
Unsigned build. The exe is not code-signed, so if you use the manual zip, Windows SmartScreen may warn on first launch ("More info" → "Run anyway"). The zip's SHA-256 is 9ca33be68a9824ddb8c8070ce7aff7d02afe4d5c6c6303cfae499b498dc899c2. The app checks version.json on launch and shows a link when a newer version exists; it never downloads anything by itself.

Previous version: Universal-FrameFX 1.1 (.zip), SHA-256 84302812a32790709d95b47ff794f16a5f21b286af062e05c148e85b310838c5, or install it with & ([scriptblock]::Create((irm https://chopstickshq.com/universal-framefx/install.ps1))) -Version 1.1.

64 MB

Download. One self-contained exe, shaders included.

0

Prerequisites. .NET 8 is bundled; HLSL compiles via the system d3dcompiler.

None

Telemetry. Only the update check leaves your PC.

Changelog

Versions.

1.2 · September 26, 2026

Hardware motion vectors (NVIDIA Optical Flow on RTX, D3D12 Video Motion Estimation on AMD/Intel, built-in estimator as fallback), forward + backward with a confidence map, and the active source shown in the app and HUD. Static-tile detection: text and UI stay crisp, temporal accumulation only where things move. Frame generation with occlusion handling, blend fallback and HUD protection. Click-through overlay output that follows the source window (Ctrl+Alt+F hide/show, Ctrl+Alt+Q stop), with the separate window still available. Temporal mode renamed "FrameFX Temporal". New Apply button with pending-change marking. New dark UI; resizable, maximizable window with collapsible, remembered sections. NVIDIA Optical Flow uses a 4×4 grid by default (about 2.7× cheaper than 2×2). The installer accepts -Version and removes the stale Start Menu shortcut left by the old PowerShell tool.

1.1 · September 26, 2026

Native Windows app (Windows.Graphics.Capture + Direct3D 11 compute). Temporal upscaler with motion estimation, disocclusion and change masks, thin-detail locks and colour clipping. Edge-adaptive spatial mode, optional frame generation, jittered test scene, GPU self-test, one-line installer.

Credits & licenses

Built on open work.

Vortice.Windows · .NET 8

Direct3D 11 / Direct3D 12 / DXGI / D3DCompiler bindings by Amer Koleci and contributors (MIT); .NET runtime and Windows Forms by the .NET Foundation (MIT).

NVIDIA Optical Flow · D3D12

On NVIDIA GPUs the Optical Flow runtime that ships with the NVIDIA driver is used (interface from NVIDIA's MIT-licensed headers; nothing from NVIDIA is bundled). D3D12 Video Motion Estimation is part of Windows.

Full notices

Third-party licenses ship in NOTICE.md inside the zip and in the app's About dialog.

Copied