mirror of
https://github.com/Theaninova/TheaninovOS.git
synced 2025-12-12 11:36:20 +00:00
refactor: make the whole thing more generic
This commit is contained in:
31
modules/home-manager/desktops/hyprland/hypr/shaders/gaussian.frag
Executable file
31
modules/home-manager/desktops/hyprland/hypr/shaders/gaussian.frag
Executable file
@@ -0,0 +1,31 @@
|
||||
//---------------------------------------------------------------------------
|
||||
// Fragment
|
||||
//---------------------------------------------------------------------------
|
||||
#version 420 core
|
||||
//---------------------------------------------------------------------------
|
||||
precision mediump float;
|
||||
in vec2 pos; // screen position <-1,+1>
|
||||
out vec4 gl_FragColor; // fragment output color
|
||||
uniform sampler2D txr; // texture to blur
|
||||
uniform float xs,ys; // texture resolution
|
||||
uniform float r = 6.0; // blur radius
|
||||
|
||||
varying vec2 v_texcoord;
|
||||
uniform sampler2D tex;
|
||||
//---------------------------------------------------------------------------
|
||||
void main()
|
||||
{
|
||||
float x,y,xx,yy,rr=r*r,dx,dy,w,w0;
|
||||
w0=0.3780/pow(r,1.975);
|
||||
vec2 p;
|
||||
vec4 pixColor = texture2D(tex, v_texcoord);
|
||||
for (dx=1.0/xs,x=-r,p.x=0.5+(pos.x*0.5)+(x*dx);x<=r;x++,p.x+=dx){ xx=x*x;
|
||||
for (dy=1.0/ys,y=-r,p.y=0.5+(pos.y*0.5)+(y*dy);y<=r;y++,p.y+=dy){ yy=y*y;
|
||||
if (xx+yy<=rr)
|
||||
{
|
||||
w=w0*exp((-xx-yy)/(2.0*rr));
|
||||
pixColor+=texture2D(txr,p)*w;
|
||||
}}}
|
||||
gl_FragColor = pixColor;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
Reference in New Issue
Block a user