diff --git a/src/main.cpp b/src/main.cpp index 0dd5721..f94a067 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -146,7 +146,7 @@ int __cdecl main(int argc, char* argv[]) { 0.0f, 0.0f, 0.0f } }; - float test[3] = { 0.0f, 0.1f, 0.0f }; // test float of one shape + float test[3] = { 0.0f, 0.0f, 0.0f }; // test float of one shape int currentShape = 0; // mark location which shape we are currently building @@ -246,20 +246,20 @@ int __cdecl main(int argc, char* argv[]) // if sound has stopped, end shape // if shape is finished, move shape forward - float captureSync = syncs[5]; + float captureSync = 0.0; if (captureSync >= 0.001f) { isPlaying = true; } - if (isPlaying) { + //if (isPlaying) { vec3ShapeArray[currentShape][1] = captureSync; vec3ShapeArray[currentShape][2] = vec3ShapeArray[currentShape][2] + shapeIncrement; - test[0] = captureSync; // y position - test[1] = test[1] + shapeIncrement; // x position + test[0] = test[0] + shapeIncrement; // x position + test[1] = captureSync; // y position test[2] = 0.3f; // length - } + //} // when note changes -- reset diff --git a/src/shaders/fragment.frag b/src/shaders/fragment.frag index 12a918d..fc20ffd 100644 --- a/src/shaders/fragment.frag +++ b/src/shaders/fragment.frag @@ -4,8 +4,8 @@ out vec4 o; const float PI = 3.14159265; const float TAU = (2. * PI); const float PHI = sqrt(5.) * 0.5 + 0.5; -layout(location = 0) uniform float syncs[7]; -layout(location = 8) uniform float fft_output[512]; // FFT_SIZE / 4 +layout(location = 0) uniform float syncs[12]; +layout(location = 20) uniform float fft_output[512]; // FFT_SIZE / 4 layout(location = 600) uniform vec3 shapes[15]; // shapes - x = horizontal position, y = vertical position, z = length layout(location = 700) uniform vec3 test; // shapes test float u_time = syncs[0]; @@ -67,11 +67,7 @@ vec2 opU( vec2 d1, vec2 d2 ) return (d1.x1e2)" + "f=v+i*k;" + "vec2 m=t(f);" + "k+=m.x;" + "n=m.y;" + "if(k>1e2)" "break;" - "if(l.x<.001*f)" + "if(m.x<.001*k)" "{" - "m=1.;" + "y=1.;" "break;" "}" "}" - "if(f>1e2)" - "f=0.;" - "return vec3(f,r,m);" + "if(k>1e2)" + "k=0.;" + "return vec3(k,n,y);" "}" - "float t(vec3 v,vec3 f,float n)" + "float t(vec3 v,vec3 i,float f)" "{" - "float i=1.,m=.02;" + "float k=1.,y=.02;" "for(int e=0;e<6;e++)" "{" - "if(m>n)" + "if(y>f)" "break;" - "float l=t(v+m*f).x;" - "i=min(i,l/(4.*m));" - "m+=clamp(l,.1,.8);" - "if(i<-1.)" + "float n=t(v+y*i).x;" + "k=min(k,n/(4.*y));" + "y+=clamp(n,.1,.8);" + "if(k<-1.)" "break;" "}" - "i=max(i,-1.);" - "return.25*(1.+i)*(1.+i)*(2.-i);" + "k=max(k,-1.);" + "return.25*(1.+k)*(1.+k)*(2.-k);" "}" "vec3 e(vec3 v)" "{" - "vec2 i=vec2(.01,0);" - "return normalize(vec3(t(v+i.xyy).x-t(v-i.xyy).x,t(v+i.yxy).x-t(v-i.yxy).x,t(v+i.yyx).x-t(v-i.yyx).x));" + "vec2 k=vec2(.01,0);" + "return normalize(vec3(t(v+k.xyy).x-t(v-k.xyy).x,t(v+k.yxy).x-t(v-k.yxy).x,t(v+k.yyx).x-t(v-k.yyx).x));" "}" - "vec3 e(vec3 v,vec3 i,vec3 l,vec3 f,vec3 m,float n)" + "vec3 e(vec3 v,vec3 k,float i,vec3 m,vec3 f,vec3 n,float y)" "{" - "v-=l;" + "v-=m;" "float e=length(v);" "v=normalize(v);" - "float y=3./(1.+.09*e+.032*e*e),r=max(dot(m,v),0.);" + "i/=1.+.09*e+.032*e*e;" + "float F=max(dot(n,v),0.);" "f=normalize(v-f);" - "vec3 x=vec3(.04);" - "x+=(1.-x)*pow(clamp(1.-max(dot(f,v),0.),0.,1.),5.);" - "e=t(l+m*.01,v,e);" - "return(i*r*y+i*pow(max(dot(m,f),0.),mix(128.,8.,n))*y*x)*e;" + "vec3 r=vec3(.04);" + "r+=(1.-r)*pow(clamp(1.-max(dot(f,v),0.),0.,1.),5.);" + "e=t(m+n*.01,v,e);" + "return(k*F*i+k*pow(max(dot(n,f),0.),mix(128.,8.,y))*i*r)*e;" "}" - "vec3 e(vec3 v,vec3 i,vec3 f,float n)" + "vec3 e(vec3 v,vec3 i,vec3 f,float k)" "{" - "float m=.01;" - "vec3 l=vec3(0);" - "if(n==0.)" - "l=vec3(.8314,.2941,.2941),m=.1;" - "else if(n==1.)" - "l=vec3(.6196,.6118,.6118),m=.7;" - "else if(n==2.)" - "l=vec3(.3255,.4784,.3255),m=.2;" - "else if(n==3.)" - "l=vec3(.2471,.3059,.6314),m=1.;" - "else if(n==4.)" - "l=vec3(.9961,1,.9922),m=.1;" - "else if(n==5.)" - "l=vec3(.9961,1,.9922),m=.3;" - "v=vec3(0)+e(vec3(-10,10,0),vec3(.77,.26,.73),v,f,i,m)+e(vec3(0,10,-5),vec3(.08,.62,.75),v,f,i,m)+e(vec3(0,25,0),vec3(.5137,.1961,.7725),v,f,i,m)+vec3(.08,.62,.75)*clamp(dot(i,normalize(vec3(0,1,-3)*vec3(0,-1,-2))),0.,1.)*.8;" - "return l*max(vec3(0),v);" + "float n=.01;" + "vec3 y=vec3(0);" + "if(k==0.)" + "y=vec3(.8314,.2941,.2941),n=.1;" + "else if(k==1.)" + "y=vec3(.6196,.6118,.6118),n=.7;" + "else if(k==2.)" + "y=vec3(.3255,.4784,.3255),n=.2;" + "else if(k==3.)" + "y=vec3(.2471,.3059,.6314),n=1.;" + "else if(k==4.)" + "y=vec3(.9961,1,.9922),n=.1;" + "else if(k==5.)" + "y=vec3(.9961,1,.9922),n=.3;" + "v=vec3(0)+e(vec3(0,40,-10),vec3(.77,.26,.73),30.,v,f,i,n)+e(vec3(0,6,-5),vec3(.08,.62,.75),20.,v,f,i,n)+e(vec3(0,20,15),vec3(.77,.26,.73),30.,v,f,i,n)+vec3(.08,.62,.75)*clamp(dot(i,normalize(vec3(0,1,-3)*vec3(0,-1,-2))),0.,1.)*.8;" + "return y*max(vec3(0),v);" "}" - "vec3 e(vec2 v,vec3 i)" + "vec3 e(vec2 k,vec3 v)" "{" - "i=normalize(vec3(0,-1,10)-i);" - "vec3 m=normalize(cross(vec3(0,1,0),i));" - "return normalize(v.x*m+v.y*normalize(cross(i,m))+i);" - "}" - "vec3 e()" - "{" - "vec3 i;" - "{" - "float v=l*.06;" - "i=vec3(sin(v)*15.,30.+cos(v*.5)*5.,cos(v)*15.);" - "}" - "return i;" + "v=normalize(vec3(0,-1,10)-v);" + "vec3 n=normalize(cross(vec3(0,1,0),v));" + "return normalize(v+k.x*n+k.y*cross(v,n));" "}" "vec3 e(vec2 v)" "{" - "vec3 i=e(v,e()),m=vec3(.102,.2431,.3412),n=vec3(0),l=t(e(),i,n);" - "if(l.x>0.)" + "vec3 k=vec3(0,20,-10),n=e(v,k),f=vec3(0),y=vec3(0);" + "k=t(k,n,y);" + "if(k.x>0.)" "{" - "vec3 v=e(n);" - "m=e(n,v,i,l.y);" + "vec3 v=e(y);" + "f=e(y,v,n,k.y);" "}" - "return m;" + "return f;" "}" "void main()" "{" "vec3 v=e(gl_FragCoord.xy*vec2(.00104166667,.00185185185)-1.);" - "i=vec4(v,1);" + "f=vec4(v,1);" "}"; #endif // FRAGMENT_INL_ diff --git a/src/sointu/song.h b/src/sointu/song.h index 13ff655..b963fed 100644 --- a/src/sointu/song.h +++ b/src/sointu/song.h @@ -13,7 +13,7 @@ #define SU_LENGTH_IN_PATTERNS 108 #define SU_LENGTH_IN_ROWS (SU_LENGTH_IN_PATTERNS*SU_PATTERN_SIZE) #define SU_SAMPLES_PER_ROW (SU_SAMPLE_RATE*60/(SU_BPM*SU_ROWS_PER_BEAT)) -#define SU_NUMSYNCS 11 +#define SU_NUMSYNCS 12 #define SU_SYNCBUFFER_LENGTH ((SU_LENGTH_IN_SAMPLES+255)>>8)*SU_NUMSYNCS #include