Commit 85240fd1 authored by Adrien Plazas's avatar Adrien Plazas

Revert "glsl-filters: Drop the unused bicubic and sharp filters"

This reverts commit fd78cbae.
parent 0c7e8ccd
Pipeline #39076 passed with stages
in 3 minutes and 50 seconds
[GLSL Filter]
Fragment=bicubic.fs
Authors=hunterk;
License=GPL-2.0+;
URL=https://github.com/hizzlekizzle/quark-shaders/tree/master/Bicubic.shader
#version 150
uniform sampler2D source[];
uniform vec4 sourceSize[];
in Vertex {
vec2 texCoord;
};
out vec4 fragColor;
float weight(float x)
{
float ax = abs(x);
// Mitchel-Netravali coefficients.
// Best psychovisual result.
const float B = 1.0 / 3.0;
const float C = 1.0 / 3.0;
if (ax < 1.0) {
return (
pow(x, 2.0) * (
(12.0 - 9.0 * B - 6.0 * C) * ax +
(-18.0 + 12.0 * B + 6.0 * C)
) +
(6.0 - 2.0 * B)
) / 6.0;
} else if ((ax >= 1.0) && (ax < 2.0)) {
return (
pow(x, 2.0) * (
(-B - 6.0 * C) * ax +
(6.0 * B + 30.0 * C)
) +
(-12.0 * B - 48.0 * C) * ax +
(8.0 * B + 24.0 * C)
) / 6.0;
} else {
return 0.0;
}
}
vec4 weight4(float x)
{
return vec4(
weight(x + 1.0),
weight(x),
weight(1.0 - x),
weight(2.0 - x));
}
vec3 pixel(float xpos, float ypos)
{
return texture2D(source[0], vec2(xpos, ypos)).rgb;
}
vec3 line(float ypos, vec4 xpos, vec4 linetaps)
{
return
pixel(xpos.r, ypos) * linetaps.r +
pixel(xpos.g, ypos) * linetaps.g +
pixel(xpos.b, ypos) * linetaps.b +
pixel(xpos.a, ypos) * linetaps.a;
}
void main()
{
vec2 stepxy = 1.0 / sourceSize[0].xy;
vec2 pos = texCoord.xy + stepxy * 0.5;
vec2 f = fract(pos / stepxy);
vec4 linetaps = weight4(f.x);
vec4 columntaps = weight4(f.y);
// make sure all taps added together is exactly 1.0, otherwise some
// (very small) distortion can occur
linetaps /= linetaps.r + linetaps.g + linetaps.b + linetaps.a;
columntaps /= columntaps.r + columntaps.g + columntaps.b + columntaps.a;
vec2 xystart = (-1.5 - f) * stepxy + pos;
vec4 xpos = vec4(
xystart.x,
xystart.x + stepxy.x,
xystart.x + stepxy.x * 2.0,
xystart.x + stepxy.x * 3.0);
fragColor.a = 1.0;
fragColor.rgb = line(xystart.y, xpos, linetaps) * columntaps.r + line(xystart.y + stepxy.y, xpos, linetaps) * columntaps.g + line(xystart.y + stepxy.y * 2.0, xpos, linetaps) * columntaps.b + line(xystart.y + stepxy.y * 3.0, xpos, linetaps) * columntaps.a;
}
[GLSL Filter]
Filter=Nearest
Wrap=Border
Vertex=sharp.vs
Fragment=sharp.fs
Authors=Adrien Plazas;
License=GPL-3.0+;
#version 150
uniform sampler2D source[];
in Vertex {
vec2 texCoord;
};
out vec4 fragColor;
void main() {
fragColor = texture(source[0], texCoord);
}
#version 150 core
in vec2 position;
in vec2 texCoord;
out Vertex {
vec2 texCoord;
} vertexOut;
uniform float relative_aspect_ratio;
void main ()
{
vec2 aspect_ratio = (relative_aspect_ratio > 1.0f) ?
vec2 (1.0 / relative_aspect_ratio, 1.0) :
vec2 (1.0, relative_aspect_ratio);
vertexOut.texCoord = texCoord;
gl_Position = vec4 (position.xy * aspect_ratio, 0.0, 1.0);
}
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/org/gnome/Retro">
<file>glsl-filters/bicubic.filter</file>
<file>glsl-filters/bicubic.fs</file>
<file>glsl-filters/crt-simple.filter</file>
<file>glsl-filters/crt-simple.fs</file>
<file>glsl-filters/crt-simple.vs</file>
<file>glsl-filters/lcd-grid.filter</file>
<file>glsl-filters/lcd-grid.fs</file>
<file>glsl-filters/sharp.filter</file>
<file>glsl-filters/sharp.fs</file>
<file>glsl-filters/sharp.vs</file>
</gresource>
</gresources>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment