44 lines
1.2 KiB
GLSL
44 lines
1.2 KiB
GLSL
#pragma header
|
|
#extension GL_EXT_gpu_shader4 : enable
|
|
|
|
// Used in charter by waveforms -lunar
|
|
|
|
uniform vec2 textureRes;
|
|
|
|
uniform sampler2D waveformTexture;
|
|
uniform ivec2 waveformSize;
|
|
|
|
float getAmplitude(vec2 pixel) {
|
|
float amplitudeRet = 0.; // look in charter for more how it works -lunar
|
|
|
|
float pixelID = floor(pixel.y/3.);
|
|
|
|
vec2 wavePixel = vec2(mod(pixelID, waveformSize.x), floor(pixelID/waveformSize.x));
|
|
vec4 waveData = texture2D(waveformTexture, wavePixel / waveformSize);
|
|
|
|
switch (int(round(mod(wavePixel.x, 3.)))) {
|
|
case 0: amplitudeRet = waveData.r; break;
|
|
case 1: amplitudeRet = waveData.g; break;
|
|
case 2: amplitudeRet = waveData.b; break;
|
|
}
|
|
return amplitudeRet;
|
|
}
|
|
|
|
void main()
|
|
{
|
|
vec2 pixel = openfl_TextureCoordv * textureRes;
|
|
float amplitude = getAmplitude(pixel);
|
|
float ampwidth = (1.-amplitude) * textureRes.x;
|
|
|
|
gl_FragColor = vec4(0.); // transprenty
|
|
|
|
if (pixel.x > (ampwidth/2.) && pixel.x < (textureRes.x-(ampwidth/2.))) {
|
|
vec3 waveColor = vec3(0.);
|
|
float outline = 2.;
|
|
|
|
if (pixel.x > ((ampwidth-outline)/2.) && pixel.x < (textureRes.x-((ampwidth-outline)/2.)))
|
|
waveColor = vec3(openfl_TextureCoordv.x);
|
|
|
|
gl_FragColor = vec4(waveColor, 1.);
|
|
}
|
|
} |