Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


This Windows screensaver uses an source image and animates its hue value (HSV color model). It does so by compiling OpenGL shaders that are executed directly on the video card. Settings are available to customize the animation, the used source image and display settings.


There are two ways to obtain an HsvScreensaver.scr executable of this project:

  1. download the latest released binary
  2. download the source code and compile it yourself (see the build section)


  1. Copy the HsvScreensaver.scr file into %windir%/System32/
  2. Use the Windows screensaver settings to select HsvScreensaver

Minimum System Requirements

  • Windows 7 (might work with XP)
  • .NET Framework 2.0
  • OpenGL 2.0 compatible video card supporting GLSL 1.1
  • 64 bit CPU (an untested 32 bit executable is available)


The screensaver can be customized using the settings dialog that can be opened in the windows screensaver selection dialog.

A click on the penguin at the bottom left disables or enables the penguin. Clicking on the preview at the bottom right opens a fullscreen preview using the selected display mode.

A screenshot showing the settings dialog in english

  • Image
    • Path [String]
    • Repeat
      • X [+0.01, 50.00]: repeat the image horizontally
      • Y [+0.01, 50.00]: repeat the image vertically
    • Move
      • X [-1.00, +1.00]: moves the images origin point horizontally
      • Y [-1.00, +1.00]: moves the images origin point vertivally
  • Color Correction
    • +RGB: changes the rgb colors of the input image
      • R [-1.00, +1.00]: red
      • G [-1.00, +1.00]: green
      • B [-1.00, +1.00]: blue
    • HSV
      • H [ 0.00, +3.60]: hue in 1/100 degree
      • S [-1.00, +1.00]: saturation
      • V [-1.00, +1.00]: value
    • RGB: changes the rgb colors of the output image
      • R [-1.00, +1.00]: red
      • G [-1.00, +1.00]: green
      • B [-1.00, +1.00]: blue
  • Display
    • Monitors
      • X [1, 9]: number of horizontal monitors besides each other
      • Y [1, 9]: number of vertical monitors above each other
    • Mode {Normal, Mazimized, Fullscreen}: Display mode
    • VSync {0, 1}: Changing this setting is disabled, because it might overheat the video card if disabled. It can only be enabled manually in the settings file.
  • Hue Animation
    • Speed [-50.0, +50.0]: animation speed in °/s (scales per axis individually with X/Y, Monitors and Repeat)
    • Intensity [0.0, 100.0]: percentage of blending with the unaltered source image (0.0 := source image)
    • X [-20.0, +20.0]: increases the hue value based on the x-coordinate (this creates a horizontal rainbow effect)
    • Y [-20.0, +20.0]: increases the hue value based on the y-coordinate (this creates a vertical rainbow effect)
    • Random Init {0, 1}: screensaver starts with a random hue value

The setting will be saved in the config.xml file in the settings directory.

On Windows 7 the settings directory is: %userprofile%/AppData/Roaming/

It's possible to use custom vertex and fragement shaders by creating the files vert.glsl and/or frag.glsl in the settings directory. On older hardware where this screensaver might not be running smoothly, it is advisable to use custom shaders to improve performance. For example, one might remove unused color correction settings from the fragment shader.


Get the C# source code:

git clone

In the /Windows/C#/ directory resides a Visual Studio 2015 Community project with the name HsvScreensaver. Open it in Visual Studio and build it.

The OpenTK 1.1 library and the TextTransform 14.0 executable are given in the /Windows/C#/HsvScreensaver/Libraries/ directory. You might want to change OpenTK to a newer version or use a TextTransform version that better fits your build system.

The following two packages should be automatically downloaded by Visual Studio via NuGet:

  • Costura.Fody
  • Fody

They are used to package the OpenTK library into the executable as an ressource, so that it can run independently without deploying it together with additional .dll files.

Example Animations

Source Image

It's advisable to have an image with color information and varying saturations, because changing the hue of an greyscale image has no visible effect. The saturation of the image can be changed in the screensaver settings but that is applied to all pixels symetrically (it would affect white pixels a lot).

Here is a simple image I made that you can use:

Death Star PD logo on an blue background

It uses the Death Star PD logo on a blue background with noise, a textile pattern and a central light spot.

The image should match the display's aspect ratio (or the aspect ratio of one monitor in a multi monitor setup with identical devices ). The following examples were made with an 1280x1024 image for three monitors that were forming one display having a resolution of 3*1280x1024 = 3840x1024.

Skew Rainbow


  • Hue Animation
    • X = 0.50
    • Y = 0.30


Skew rainbow color effect that (seems) to move horizontally from left to right


Skew rainbow color effect

Horizontal Rainbow


  • Hue Animation
    • X = 0.25
    • Y = 0.00


Rainbow color effect that (seems) to move horizontally from left to right


Horizontal rainbow color effect

One Color


  • Hue Animation
    • X = 0.00
    • Y = 0.00


One color on the whole screen that is changing over time


One color on the whole scren