Add selectable client-side downscaling filters
Hi,
I render and stream at 3840x2400 to a 1280x800 Steam Deck, using the high-resolution stream as exact 3x supersampling. Moonlight's current fast scaler leaves visible aliasing and shimmering on thin geometry and textures.
The common workaround is to use:
3840x2400 -> 2560x1600 before encoding -> 1280x800 on the client
This looks better, but it adds a fractional 1.5x resize before the final 2x resize. Detail removed or blurred in the first pass cannot be recovered, and two generic scaling passes are not equivalent to one properly filtered 3x resolve from the decoded 2400p frame.
With enough bitrate, I also prefer keeping the original 2400p spatial detail and motion cues available to the encoder instead of discarding them before compression.
This should be separate from resolution selection: stream resolution controls what is encoded and transmitted, while the downscaling filter controls how the decoded frame is mapped to the physical display.
I implemented this using libplacebo. area/box, hermite, and mitchell-netravali all produced clearly cleaner and more stable results in my 3x tests.
Would you consider adding selectable downscaling filters under Advanced Settings?
Source: moonlight-stream/moonlight-qt