dotfiles/slop/crosshair.frag
Gabriel Arazas cef34b86cb Add slop and newsboat config
I've also updated the Rofi config with my custom mode scripts.
Aside from that, I've finally took the time to recreate my file metadata
editing script.

Well, there's also the update of the README.
2020-09-17 23:55:09 +08:00

44 lines
1.3 KiB
GLSL

#version 120
uniform sampler2D texture;
uniform sampler2D desktop;
uniform vec2 screenSize;
uniform vec2 mouse;
varying vec2 uvCoord;
void main()
{
// adjustable parameters
float circleSize = 28;
float borderSize = 2;
// The smaller this value is, the more intense the magnification!
float magnifyNerf = 1.5;
vec4 borderColor = vec4(0,0,0,1);
bool crosshair = true;
// actual code
vec2 mUV = vec2(mouse.x, -mouse.y)/screenSize + vec2(0,1);
float du = distance(mUV,uvCoord);
float dr = distance(mUV*screenSize,uvCoord*screenSize);
vec4 color = vec4(0);
if ( dr > circleSize+borderSize ) {
color = texture2D( texture, uvCoord );
} else if ( dr < circleSize ) {
if ( crosshair && (distance(mUV.x, uvCoord.x)<1/screenSize.x || distance(mUV.y,uvCoord.y)<1/screenSize.y) ) {
color = borderColor;
} else {
float t = 1-du;
vec2 b = uvCoord;
vec2 c = (mUV-uvCoord);
vec2 upsideDown = c/magnifyNerf*t*t+b;
vec4 textureColor = texture2D( texture, upsideDown );
color = mix( texture2D( desktop, vec2(upsideDown.x, -upsideDown.y) ), textureColor, textureColor.a );
}
} else if ( dr < circleSize+borderSize ) {
color = borderColor;
}
gl_FragColor = color;
}