mirror of
https://github.com/italicsjenga/slang-shaders.git
synced 2024-11-22 07:41:31 +11:00
Add anti-ringing to lanczos3-fast shaders
- Similar to spline16 and spline36 anti-ringing code; - ON by default and can be disabled using realtime param.
This commit is contained in:
parent
8766bbc0bf
commit
e16a936fb5
|
@ -37,8 +37,15 @@ layout(push_constant) uniform Push
|
|||
vec4 OriginalSize;
|
||||
vec4 OutputSize;
|
||||
uint FrameCount;
|
||||
float LANCZOS3_ANTI_RINGING;
|
||||
} params;
|
||||
|
||||
#pragma parameter LANCZOS3_ANTI_RINGING "Lanczos3 Anti-Ringing [ OFF | ON ]" 1.0 0.0 1.0 1.0
|
||||
|
||||
#define LANCZOS3_ANTI_RINGING params.LANCZOS3_ANTI_RINGING
|
||||
|
||||
#define AR_STRENGTH 0.8
|
||||
|
||||
#define FIX(c) (max(abs(c), 1e-5))
|
||||
|
||||
const float PI = 3.1415926535897932384626433832795;
|
||||
|
@ -102,5 +109,15 @@ void main()
|
|||
|
||||
vec3 color = mat3( C0, C2, C4 ) * w1 + mat3( C1, C3, C5) * w2;
|
||||
|
||||
// Anti-ringing
|
||||
if (LANCZOS3_ANTI_RINGING == 1.0)
|
||||
{
|
||||
vec3 aux = color;
|
||||
vec3 min_sample = min(min(C1, C2), min(C3, C4));
|
||||
vec3 max_sample = max(max(C1, C2), max(C3, C4));
|
||||
color = clamp(color, min_sample, max_sample);
|
||||
color = mix(aux, color, AR_STRENGTH*step(0.0, (C1-C2)*(C3-C4)));
|
||||
}
|
||||
|
||||
FragColor = vec4(color, 1.0);
|
||||
}
|
||||
|
|
|
@ -37,8 +37,15 @@ layout(push_constant) uniform Push
|
|||
vec4 OriginalSize;
|
||||
vec4 OutputSize;
|
||||
uint FrameCount;
|
||||
float LANCZOS3_ANTI_RINGING;
|
||||
} params;
|
||||
|
||||
#pragma parameter LANCZOS3_ANTI_RINGING "Lanczos3 Anti-Ringing [ OFF | ON ]" 1.0 0.0 1.0 1.0
|
||||
|
||||
#define LANCZOS3_ANTI_RINGING params.LANCZOS3_ANTI_RINGING
|
||||
|
||||
#define AR_STRENGTH 0.8
|
||||
|
||||
#define FIX(c) (max(abs(c), 1e-5))
|
||||
|
||||
const float PI = 3.1415926535897932384626433832795;
|
||||
|
@ -102,5 +109,15 @@ void main()
|
|||
|
||||
vec3 color = mat3( C0, C2, C4 ) * w1 + mat3( C1, C3, C5) * w2;
|
||||
|
||||
// Anti-ringing
|
||||
if (LANCZOS3_ANTI_RINGING == 1.0)
|
||||
{
|
||||
vec3 aux = color;
|
||||
vec3 min_sample = min(min(C1, C2), min(C3, C4));
|
||||
vec3 max_sample = max(max(C1, C2), max(C3, C4));
|
||||
color = clamp(color, min_sample, max_sample);
|
||||
color = mix(aux, color, AR_STRENGTH*step(0.0, (C1-C2)*(C3-C4)));
|
||||
}
|
||||
|
||||
FragColor = vec4(color, 1.0);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue