Bonzomatic はじめてのtexFFT
BonzomaticではtexFFTというsampler1D型(1次元テクスチャ)の変数として音情報が取れるらしい
FFTはfast fourier transform: 高速フーリエ変換の意
FFTというアルゴリズムで音情報を1次元テクスチャに変換したものが利用できるので、これを使ってオーディオリアクティブが実現できる
以下のコードで実際に可視化できる
sampler1Dの0側に低音、1によるほど高音の情報が格納されるっぽい
以下では画面中心ほど低音、外側ほど高音に対応
texture()で情報を取得する。R成分にしか情報は無いみたいなので、texture(texFFT, uv).rで使うのが基本か
texFFTSmoothedを使うことで断続的でない、より滑らかな値をとれる
texFFTIntegratedは増え続け、蓄積されていくらしい。どのように使えるのか要調査
https://scrapbox.io/files/68a5871463a398248d67dc02.png
code:glsl
void main(void)
{
vec2 p = out_texcoord;
p -= 0.5;
p /= vec2(v2Resolution.y / v2Resolution.x, 1.0);
float r = max(length(p), 1e-3);
float d = clamp(r, 0.0, 1.0);
float fft = texture( texFFT, d ).r;
// fft = texture(texFFTSmoothed, d).r;
fft *= 100.0;
// fft = pow(fft, .5);
out_color = vec4(vec3(fft), 1.0);
}
modでたくさん出すだけで情報量が増えていいね
https://scrapbox.io/files/68a589356ffad384be420784.png
#Bonzomatic #GLSL