mirror of
https://github.com/raysan5/raylib.git
synced 2025-12-06 06:13:10 +00:00
36 lines
1002 B
GLSL
36 lines
1002 B
GLSL
#version 120
|
|
|
|
// Input vertex attributes (from vertex shader)
|
|
varying vec2 fragTexCoord;
|
|
varying vec4 fragColor;
|
|
|
|
// Input uniform values
|
|
uniform vec2 iResolution;
|
|
uniform sampler2D iChannel0;
|
|
|
|
const vec4 BLACK = vec4(0.0, 0.0, 0.0, 1.0);
|
|
const vec4 WHITE = vec4(1.0, 1.0, 1.0, 1.0);
|
|
const float FFT_ROW = 0.0;
|
|
const float NUM_OF_BINS = 512.0;
|
|
|
|
void main()
|
|
{
|
|
vec2 fragCoord = fragTexCoord*iResolution;
|
|
float cellWidth = iResolution.x/NUM_OF_BINS;
|
|
float binIndex = floor(fragCoord.x/cellWidth);
|
|
float localX = mod(fragCoord.x, cellWidth);
|
|
float barWidth = cellWidth - 1.0;
|
|
vec4 color = WHITE;
|
|
|
|
if (localX <= barWidth)
|
|
{
|
|
float sampleX = (binIndex + 0.5)/NUM_OF_BINS;
|
|
vec2 sampleCoord = vec2(sampleX, FFT_ROW);
|
|
float amplitude = texture2D(iChannel0, sampleCoord).r; // Only filled the red channel, all channels left open for alternative use
|
|
|
|
if (fragTexCoord.y < amplitude) color = BLACK;
|
|
}
|
|
|
|
gl_FragColor = color;
|
|
}
|