Created
June 22, 2014 20:34
-
-
Save paulhoux/d733781484b26c4e27aa to your computer and use it in GitHub Desktop.
Alternative shader for the AudioVisualizer sample. See: https://github.com/paulhoux/Cinder-Samples
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#version 110 | |
void main(void) | |
{ | |
// calculate glowing line strips based on texture coordinate | |
const float resolution = 64.0; | |
const float center = 0.5; | |
const float width = 0.02; | |
float f = fract( resolution * gl_TexCoord[0].s + 2.0 * gl_TexCoord[0].t ); | |
float d = abs(center - f); | |
float strips = clamp(width / d, 0.0, 1.0); | |
// calculate output color | |
gl_FragColor.rgb = gl_Color.rgb * strips; | |
gl_FragColor.a = 1.0; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#version 110 | |
uniform float uTexOffset; | |
uniform sampler2D uLeftTex; | |
uniform sampler2D uRightTex; | |
void main(void) | |
{ | |
// retrieve texture coordinate and offset it to scroll the texture | |
vec2 coord = gl_MultiTexCoord0.st + vec2(0.0, uTexOffset); | |
// retrieve the FFT from left and right texture and average it | |
float fft = max(0.0001, mix( texture2D( uLeftTex, coord ).r, texture2D( uRightTex, coord ).r, 0.5)); | |
// convert to decibels | |
const float logBase10 = 1.0 / log(10.0); | |
float decibels = 10.0 * log( fft ) * logBase10; | |
// offset the vertex based on the decibels and create a cylinder | |
const float two_pi = 6.2831853; | |
float fade = gl_MultiTexCoord0.t; | |
float r = 100.0 + decibels; | |
vec4 vertex = gl_Vertex; | |
vertex.y = r * cos(gl_MultiTexCoord0.t * two_pi); | |
vertex.z = r * sin(gl_MultiTexCoord0.t * two_pi); | |
// pass (unchanged) texture coordinates, bumped vertex and vertex color | |
gl_TexCoord[0] = gl_MultiTexCoord0; | |
gl_Position = gl_ModelViewProjectionMatrix * vertex; | |
gl_FrontColor = gl_Color; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment