- Snapdragon™ Game Super Resolution
- Introduction
- Integration
- Performance
- Other Applications
- Version history
- References
- License
Snapdragon™ Game Studios developed Snapdragon™ Game Super Resolution (Snapdragon™ GSR or SGSR), which integrates upscaling and sharpening in one single GPU shader pass. The algorithm uses a 12-tap Lanczos-like scaling filter and adaptive sharpening filter, which presents smooth images and sharp edges.
Our solution provides an efficient solution for games to draw 2D UI at device resolution for better visual quality, while rendering the 3D scene at a lower resolution for performance and power savings.
The technique has visual quality on par with other spatial upscaling techniques while being highly optimized for Adreno™ GPU hardware
Our shader provide a set of configurations that can be adjusted to fine tune your needs, these are briefly explained below and can be found directly on the shader file.
The shader requires an input texture (your low-res 3D scene) and viewport rect, it doesn't require an anti-aliased input but works best with one.
SGSR comes with 3 operation modes: RGBA, RGBY and LERP, by default the shader is set to use RGBA (mode 1).
We suggest keeping its value as 8.0/255 for mobile applications but changing it to 4.0/255 if targeting VR.
By default this value is set to 2, but any number in the range [1.0, 2.0] can be used.
If targeting vulkan, uncomment the UseUniformBlock define.
SGSR is well optimized to run on Adreno™ and generally can provide maximum wave occupancy. Considering input content with a resolution of 1240x576, the following frame times were measured using our most recent Snapdragon™ chips:
SGSR
Edge Threshold | SD888 | SD8Gen1 | SD8Gen2 |
---|---|---|---|
4 | 0.4756ms | 0.3563ms | 0.2952ms |
8 | 0.4754ms | 0.3543ms | 0.2939ms |
BILINEAR/LERP
SD888 | SD8Gen1 | SD8Gen2 |
---|---|---|
0.2476ms | 0.1963ms | 0.1558ms |
Device configurations at maximum GPU frequency:
- Snapdragon 888 (2340x1080)
- Snapdragon 8 Gen1 (2340x1080)
- Snapdragon 8 Gen2 (2400x1600)
SGSR performance scales lineally with the configured scaling ouput region (configurable on the shader). RGBA shares the exact same speed with RGBY.
Besides the provided configurations, the frame time also depends on the input texture resolution and final output resolution.
With Snapdragon GSR, 1080p games can become sharper 4K games. Games that were only 30 FPS can be played at 60+ FPS so graphics look even smoother. And since performance is correlated with power, you can get these features while extending battery life and gameplay time.
Visual comparison with Bilinear
Performance and visual comparison of rendering at Native (1080p) resolution vs. using Snapdragon GSR upscaling. This demonstration was created in Unreal Engine 5 with Ray Query shadows at 2 rays per pixel.
50% screen res upscaled - 60FPS
Visual comparison of rendering at Native (4K) vs. Bilinear vs. Snapdragon GSR.
The high performance, low latency, single-pass nature of SGSR makes it well suited for XR applications. Unlike other popular super resolution algorithms, SGSR uses only a single GPU pass, so it can be combined with other operations minimizing latency and additional bandwidth.
Although not provided here, our shader can be mixed with AA techniques, potentially saving a lot of application bandwidth.
Version | Date |
---|---|
1.0.0 | 2023-06-29 |
Introducing Snapdragon Game Super Resolution, https://www.qualcomm.com/news/onq/2023/04/introducing-snapdragon-game-super-resolution
Using Super Resolution to Boost Resolution in Virtual Reality, https://developer.qualcomm.com/blog/using-super-resolution-boost-resolution-virtual-reality
Snapdragon™ Game Super Resolution is licensed under the BSD 3-clause “New” or “Revised” License. Check out the LICENSE for more details.