30 lines
736 B
GLSL
30 lines
736 B
GLSL
uniform float lensRadiusX;
|
|
uniform float lensRadiusY;
|
|
uniform float centerX;
|
|
uniform float centerY;
|
|
uniform bool circular;
|
|
uniform vec2 resolution;
|
|
uniform bool invert;
|
|
// uniform vec2 lensRadius; // 0.45, 0.38
|
|
|
|
vec4 process(vec4 c) {
|
|
if (lensRadiusX == 0.0) {
|
|
return vec4(0.0);
|
|
}
|
|
vec2 vignetteCoord = v_texcoord;
|
|
if (circular) {
|
|
float ar = (resolution.x/resolution.y);
|
|
vignetteCoord.x *= ar;
|
|
vignetteCoord.x -= (1.0-(1.0/ar));
|
|
}
|
|
float dist = distance(vignetteCoord, vec2(0.5 + centerX*0.01, 0.5 + centerY*0.01));
|
|
float size = (lensRadiusX*0.01);
|
|
|
|
if (invert)
|
|
{c *= 1.0 - smoothstep(size, size*0.99*(1.0-lensRadiusY*0.01), dist);}
|
|
else
|
|
{c *= smoothstep(size, size*0.99*(1.0-lensRadiusY*0.01), dist);}
|
|
|
|
return c;
|
|
}
|