// SpectrumCylinder.vtx // Author - MrC // Based on SpectrumCylinder.r4 by Gordon Williams float time = 0; float tm; int x,y; float rx,rxamt,ry,ryamt; int currBuffer; float[] buffers(12*12); float[] savr(12); int[] sn(12); float[] sp(12); Map map; Texture envTexture; void Init() { envTexture.LoadTexture("env3.png"); currBuffer = 0; for (y=0;y<24;y=y+1) { for (x=0;x<32;x=x+1) { map.SetValues(x, y, Sin((x-15.5)*3)*0.01, Sin((y-11.5)*3)*0.01, 1, 1, 1); } } rxamt = 1; ryamt = -1; } void Render() { time += TIMEPASS; map.Render(); gfxSetRenderTarget(map); gfxPushMatrix(); gfxTranslate(0,0,17.5f); gfxRotate(-70+(Sin(time)*12),1,0,0); if (BASS>0.3) rxamt = 1; if (BASS<-0.3) rxamt = -1; if (TREBLE>0.3) ryamt = 1; if (TREBLE<-0.3) ryamt = -1; rx = rx + (rxamt*TIMEPASS); ry = ry + (ryamt*TIMEPASS); gfxRotate(rx*90,0,0,1); gfxRotate(ry*90,0,1,0); for (x = 0; x < 12; x++) { sp[x] = GetSpec(x*2); } gfxSetEnvTexture(envTexture); // draw buffer out of cubes for (y=0;y<12;y=y+1) { for (x=0;x<12;x=x+1) { gfxColour(x/12.0,y/12.0,1.0-(y/12.0),1.0); // fade colour gfxCube(-5.5+x,-0.25f,1.0,-5.5+x+0.5f,0.25f,1.0+(sp[x]*1.5)); } gfxRotate(360.0/12.0,1,0,0); } gfxPopMatrix(); gfxSetRenderTarget(0); gfxSetEnvTexture(NULL); gfxSetTexture(map); gfxSetAspect(0); gfxTranslate(0, 0, 2.414); gfxColour(1, 1, 1, 1); gfxTexRect(-1, 1, 1, -1); }