Implement sound buffer texture
Texture channel 0 has a 512x2 texture with audio samples. For now, fill it with dummy data (ascending slope), so we can see some output. Signed-off-by: David Oberhollenzer <goliath@infraroot.at>master
parent
542669ef04
commit
8c47f2726c
@ -0,0 +1,40 @@
|
||||
// Created by inigo quilez - iq/2013
|
||||
// https://www.youtube.com/c/InigoQuilez
|
||||
// https://iquilezles.org/
|
||||
|
||||
|
||||
// See also:
|
||||
//
|
||||
// Input - Keyboard : https://www.shadertoy.com/view/lsXGzf
|
||||
// Input - Microphone : https://www.shadertoy.com/view/llSGDh
|
||||
// Input - Mouse : https://www.shadertoy.com/view/Mss3zH
|
||||
// Input - Sound : https://www.shadertoy.com/view/Xds3Rr
|
||||
// Input - SoundCloud : https://www.shadertoy.com/view/MsdGzn
|
||||
// Input - Time : https://www.shadertoy.com/view/lsXGz8
|
||||
// Input - TimeDelta : https://www.shadertoy.com/view/lsKGWV
|
||||
// Inout - 3D Texture : https://www.shadertoy.com/view/4llcR4
|
||||
|
||||
|
||||
void mainImage( out vec4 fragColor, in vec2 fragCoord )
|
||||
{
|
||||
// create pixel coordinates
|
||||
vec2 uv = fragCoord.xy / iResolution.xy;
|
||||
|
||||
// the sound texture is 512x2
|
||||
int tx = int(uv.x * 512.0);
|
||||
|
||||
// first row is frequency data (48Khz/4 in 512 texels, meaning 23 Hz per texel)
|
||||
float fft = texelFetch( iChannel0, ivec2(tx,0), 0 ).x;
|
||||
|
||||
// second row is the sound wave, one texel is one mono sample
|
||||
float wave = texelFetch( iChannel0, ivec2(tx,1), 0 ).x;
|
||||
|
||||
// convert frequency to colors
|
||||
vec3 col = vec3( fft, 4.0*fft*(1.0-fft), 1.0-fft ) * fft;
|
||||
|
||||
// add wave form on top
|
||||
col += 1.0 - smoothstep(0.0, 0.15, abs(wave - uv.y));
|
||||
|
||||
// output final color
|
||||
fragColor = vec4(col,1.0);
|
||||
}
|
Loading…
Reference in New Issue