github naelstrof/slop v5.3.36
Shader Support

latest releases: v7.6, v7.5, v7.4...
7 years ago

In this release, users can now supply their own shaders to create neat effects.

Slop allows for chained post-processing shaders. Shaders are written in a language called GLSL, and have access to the following data from slop:

GLSL Name Data Type Bound to
mouse vec2 The mouse position on the screen.
desktop sampler2D An upside-down snapshot of the desktop, this doesn't update as the screen changes.
texture sampler2D The current pixel values of slop's frame buffer. Usually just contains the selection rectangle.
screenSize vec2 The dimensions of the screen, where the x value is the width.
position vec2 attribute This contains the vertex data for the rectangle. Only contains (0,0), (1,0), (1,1), and (0,1).
uv vec2 attribute Same as the position, this contians the UV information of each vertex.

The desktop texture is upside-down because flipping it would cost valuable time.

Shaders must be placed in your ${XDG_CONFIG_HOME}/slop directory, where XDG_CONFIG_HOME is typically ~/.config/. This folder won't exist unless you make it yourself.

Shaders are loaded from the --shader flag in slop. They are delimited by commas, and rendered in order from left to right. This way you can combine multiple shaders for interesting effects! For example, slop -rblur1,wiggle would load ~/.config/slop/blur1{.frag,.vert} and ~/.config/slop/wiggle{.frag,.vert}. Then render the selection rectangle twice, each time accumulating the changes from the different shaders.

Enough chatting about it though, here's some example shaders you can copy from shaderexamples to ~/.config/slop to try out!

The files listed to the right of the | are the required files for the command to the left to work correctly.

  • slop -rblur1,blur2 -b100 | ~/.config/slop/{blur1,blur2}{.frag,.vert}
    slop blur
  • slop -rwiggle -b10 | ~/.config/slop/wiggle{.frag,.vert}
    slop animation

And all together now...

  • slop -rblur1,blur2,wiggle -b50 -c1,1,1 | ~/.config/slop/{blur1,blur2,wiggle}{.frag,.vert}
    slop animation

Finally here's an example of a magnifying glass.

  • slop -rcrosshair | ~/.config/slop/crosshair{.frag,.vert}
    slop animation

It's fairly easy to adjust how the shaders work by editing them with your favourite text editor. Or even make your own!

Don't miss a new slop release

NewReleases is sending notifications on new releases.