ExperimentalGear/shaders/trackCover.fs

53 lines
1.4 KiB
GLSL

#ifdef EMBEDDED
varying vec2 fsTex;
#else
#extension GL_ARB_separate_shader_objects : enable
layout(location=1) in vec2 fsTex;
layout(location=0) out vec4 target;
#endif
uniform sampler2D mainTex;
uniform float hiddenCutoff;
uniform float hiddenFadeWindow;
uniform float suddenCutoff;
uniform float suddenFadeWindow;
void main()
{
#ifdef EMBEDDED
target = vec4(0.0);
#else
target = texture(mainTex, vec2(fsTex.x, fsTex.y * 2.0));
float off = 1.0 - (fsTex.y * 2.0);
if(hiddenCutoff < suddenCutoff)
{
float hiddenCutoffFade = hiddenCutoff - hiddenFadeWindow;
if (off > hiddenCutoffFade && off < hiddenCutoff) {
target.a = target.a * max(0.0, (hiddenCutoff - off) / hiddenFadeWindow);
}
if (off < suddenCutoff && off > hiddenCutoff) {
target.a = 0.0;
}
float suddenCutoffFade = suddenCutoff + suddenFadeWindow;
if (off < suddenCutoffFade && off > suddenCutoff) {
target.a = target.a * max(0.0, (off - suddenCutoff) / suddenFadeWindow);
}
}
else
{
float hiddenCutoffFade = hiddenCutoff + hiddenFadeWindow;
if (off > hiddenCutoff) {
target.a = target.a * max(0.0, (hiddenCutoffFade - off) / hiddenFadeWindow);
}
float suddenCutoffFade = suddenCutoff - suddenFadeWindow;
if (off < suddenCutoff) {
target.a = target.a * max(0.0, (off - suddenCutoffFade) / suddenFadeWindow);
}
}
#endif
}