ShaderGlass v1.2

Overlay for running GPU shaders on top of Windows desktop

Copyright (c) 2021-2025 mausimus (mausimus.net)
Distributed under GNU General Public License v3.0

 

Features


Download

GitHub: https://github.com/mausimus/ShaderGlass

Itch: https://mausimus.itch.io/shaderglass

Steam: https://store.steampowered.com/app/3613770/ShaderGlass/


Requirements


Currently supported options are:

Processing

Input

Output

Shader

You can save and load profile files which will store all the options. It's also possible to pass profile file path on the command line and ShaderGlass will load it on startup.

If you associate ShaderGlass with .sgp extension in Windows (double-click .sgp file and choose ShaderGlass) you will be able to start it up by double-clicking a profile file.


Command Line

ShaderGlass.exe [-p|--paused] [-f|--fullscreen] [profile.sgp]

You can pass profile filename as a command-line parameter to ShaderGlass.exe and it will be auto-loaded. If your profile file name contains spaces please put it in quotes.

In addition -p will launch in paused mode, and -f will launch in fullscreen mode.


Tuning

In order to achieve the best effect it's necessary to tune parameters to match your input:

Always check that input is crisply pixelated using the "none" shader as there is often implicit scaling happening (for example even when Chrome displays an image at 100%, Windows DPI scaling is still applied). The none shader should display a pixelated image with no smoothing whatsoever, try to match Input Pixel Size setting with your input's size to achieve that.


Parameters

All shaders start using default Parameters as defined by their authors, but you can also tweak them using Shader -> Parameters menu option.


Emulators

Most emulators (DOSBox, FS-UAE, Altirra etc.) will capture mouse by default so you can use them in Window Clone mode. ShaderGlass window will remain topmost so just position it over the game window and Alt-Tab to the game to have mouse and focus captured.

DOSBox

DOSBox often defaults to exclusive fullscreen - for best results, run it in Windowed or Borderless Fullscreen.

You may also find mouse input doesn't work correctly with DOSBox. To remedy, tick Output -> Window -> Click-through in ShaderGlass.

ScummVM

ScummVM doesn't capture mouse cursor by default so for best results follow below steps:

  1. Use Window Clone mode, set Input/Output/Shader options to your liking
  2. Switch Output Window to Click-through
  3. Click or Alt-Tab to ScummVM game window so that it has focus
  4. Press Ctrl-M which will force ScummVM to capture mouse

This way you should have the mouse captured by ScummVM so that it remains within the game window until you press Ctrl-M again. You can apply output scaling and/or aspect ratio correction in ShaderGlass and enjoy the game.


Importing Custom Shaders

ShaderGlass comes with a large built-in library of shaders, but you can also import custom ones written in RetroArch shader system. It accepts both individual shaders (.slang) and multi-pass presets (.slangp).

When working on a custom shader, you can use Recent imports menu to quickly reload it.

RetroArch shader/preset packs

A lot of preset packs out there rely on base RetroArch shaders so to import them into ShaderGlass install them into RetroArch first, and then Import from RetroArch's shaders directory.

Please note some shaders might require Vulkan (ShaderGlass is DirectX 11 only) or rely on RetroArch features that ShaderGlass doesn't support so might not work just as well.

Writing your own shaders

ShaderGlass lets you easily experiment with your own shaders! CustomShader.slang is a minimal example of a shader that swaps color channels and applies a boost, meant as an example from which you could start writing your own shaders and have them applied to your desktop. Check out RetroArch shader repository for tons of examples.

Modifying RetroArch shaders

To modify shaders from RetroArch library, download their source code from here, make changes and import.


Frequently Asked Questions

> I'm seeing black only

Make sure you're using Windows 10, version 2004 (build 19041) or Windows 11.

> Can I use it with Reshade?

While there is no special support for it, you can inject Reshade into ShaderGlass just like into any other DirectX 11 app and stack Reshade shaders on top.

> I see yellow border around captured screen/window

Windows 10

Unfortunately yellow border is enforced on Windows 10 and there's no way to remove it. There are some ways to avoid it, for example:

Windows 11

It's possible to disable yellow border but only on Windows 11. If you are using Windows 11 and still seeing the border, open Windows Settings app and search for "screenshot borders". Make sure all the options and ShaderGlass are allowed to remove the border.

> I can't capture using OBS

OBS can capture ShaderGlass but only as a Game Capture source (not Window Capture nor Desktop Capture). Use "Capture specific window" within Game Capture to select ShaderGlass window only.

> Text/letters are all blurry or pixelated

For maximum sharpness set Input -> Pixel Size -> x1 but note that a lot of shaders expect pixelated input so set this option accordingly to each scenario.

> I don't see my favourite RetroArch shader

ShaderGlass includes majority of RetroArch repository at time of release, but some shaders had to be excluded because of features SG doesn't yet support. Differences versus upstream RetroArch shader repository are tracked in this PR.

> ShaderGlass can't capture some windows

Unfortunately some old-style rendering windows are not supported by modern Windows Capture API. Please use Desktop mode to capture those.

> Mouse cursor isn't properly captured (duplicate and/or wrong image)

This is the case when a Windows-native game sets a custom cursor shape; ShaderGlass cannot override such cursors so they will remain visible. There are two possible workarounds:

> A different issue...

Check Issues section on GitHub for known problems and workarounds.


Notices