aboutsummaryrefslogtreecommitdiff
path: root/addons/visualization.vortex/resources/Presets/SpectrumSphere.vtx
diff options
context:
space:
mode:
Diffstat (limited to 'addons/visualization.vortex/resources/Presets/SpectrumSphere.vtx')
-rw-r--r--addons/visualization.vortex/resources/Presets/SpectrumSphere.vtx186
1 files changed, 186 insertions, 0 deletions
diff --git a/addons/visualization.vortex/resources/Presets/SpectrumSphere.vtx b/addons/visualization.vortex/resources/Presets/SpectrumSphere.vtx
new file mode 100644
index 0000000000..8ff226c786
--- /dev/null
+++ b/addons/visualization.vortex/resources/Presets/SpectrumSphere.vtx
@@ -0,0 +1,186 @@
+// SpectrumSphere.vtx
+// Author - morte0815
+
+float time = 0;
+float rx,rxamt,ry,ryamt;
+
+float[] org_coordsX(70);
+float[] org_coordsY(70);
+float[] org_coordsZ(70);
+float[] org_colorR(70);
+float[] org_colorG(70);
+float[] org_colorB(70);
+
+float stacks = 8;
+float segments = 8;
+
+float velX,velY,velZ;
+float posX,posY,posZ;
+float signX,signY,signZ;
+Map map;
+
+int x,y;
+
+void Init()
+{
+ velX= 0;
+ velY= 0;
+ velZ = 0;
+ posX= 0;
+ posY= 0;
+ posZ = 0;
+ posX= 0;
+ posY= 0;
+ posZ = 0;
+ signX= 1;
+ signY= 1;
+ signZ = 1;
+
+ if(BASS < 0.2f){signZ = 1;}
+ if(MIDDLE < 0.2f){signY = -1;}
+ if(TREBLE < 0.2f){signX = -1;}
+
+ for (int i = 0; i< stacks; i++)
+ {
+ float temp = Cos(3.14159f/6.0f*i-3.14159f/2.0f);
+ for (int j = 0; j < segments; j++)
+ {
+ org_coordsY[Fabs(i*segments+j)] = Sin(3.14159f/6.0f*i-3.14159f/2.0f);
+ org_coordsX[Fabs(i*segments+j)] = Cos(2*3.14159f/segments*j) * temp;
+ org_coordsZ[Fabs(i*segments+j)] = Sin(2*3.14159f/segments*j) * temp;
+ }
+ }
+ for (int i = 0; i< stacks; i++)
+ {
+ for (int j = 0; j< segments; j++)
+ {
+ org_colorR[i*segments+j] = Sin(i);
+ org_colorG[i*segments+j] = Sin(j);
+ org_colorB[i*segments+j] = 1-Sin(j);
+ }
+ }
+
+
+
+
+
+}
+
+void RenderSphere()
+{
+ float addX=0;
+ float addY=0;
+ float addZ=0;
+ float scale = 0.5f;
+ float colorVal = 0;
+ gfxBegin(PRIM_TRIANGLELIST);
+ for (int i = 0; i< stacks-2; i++)
+ {
+ for (int j = 0; j< segments; j++)
+ {
+ float temp = i*segments+j;
+ addX = GetSpec(Fabs(temp/2)) * org_coordsX[temp]*scale;
+ addY = GetSpec(Fabs(temp/2)) * org_coordsY[temp]*scale;
+ addZ = GetSpec(Fabs(temp/2)) * org_coordsZ[temp]*scale;
+ colorVal = GetSpec(Fabs(temp/2));
+
+
+ gfxColour(org_colorR[temp],org_colorG[temp] ,org_colorB[temp] ,1);
+ gfxVertex(org_coordsX[temp] + addX,org_coordsY[temp] + addY,org_coordsZ[temp] + addZ);
+
+ temp = (i+1)*segments+((j+1)%segments);
+ gfxVertex(org_coordsX[temp] + addX,org_coordsY[temp] + addY,org_coordsZ[temp] + addZ);
+
+ temp = i*segments+((j+1)%segments);
+ gfxVertex(org_coordsX[temp] + addX,org_coordsY[temp] + addY,org_coordsZ[temp] + addZ);
+
+ temp = i*segments+j;
+ addX = GetSpec(Fabs(temp/2)) * org_coordsX[temp]*scale;
+ addY = GetSpec(Fabs(temp/2)) * org_coordsY[temp]*scale;
+ addZ = GetSpec(Fabs(temp/2)) * org_coordsZ[temp]*scale;
+ colorVal = GetSpec(Fabs(temp/2));
+
+ gfxColour(org_colorR[temp],org_colorG[temp],org_colorB[temp],1);
+ gfxVertex(org_coordsX[temp] + addX,org_coordsY[temp] + addY,org_coordsZ[temp] + addZ);
+
+ temp = (i+1)*segments+j;
+ gfxVertex(org_coordsX[temp] + addX,org_coordsY[temp] + addY,org_coordsZ[temp] + addZ);
+
+ temp = (i+1)*segments+((j+1)%segments);
+ gfxVertex(org_coordsX[temp] + addX,org_coordsY[temp] + addY,org_coordsZ[temp] + addZ);
+ }
+ }
+ gfxEnd();
+}
+
+void PushAround()
+{
+ if (Abs(BASS) > 0.3f){velZ += BASS*3.0f;}
+ if (Abs(BASS) < 0.3f){velZ -= BASS*3.0f;}
+ if (Abs(MIDDLE) > 0.3f){velY += MIDDLE*3.0f;}
+ if (Abs(MIDDLE) < 0.3f){velY -= MIDDLE*3.0f;}
+ if (Abs(TREBLE) > 0.3f){velX += TREBLE*3.0f;}
+ if (Abs(TREBLE) < 0.3f){velX -= TREBLE*3.0f;}
+
+ velX = Clamp(velX,-3.0f,3.0f);
+ velY = Clamp(velY,-3.0f,3.0f);
+ velZ = Clamp(velZ,-3.0f,3.0f);
+
+ posX += signX*velX*TIMEPASS;
+ posY += signY*velY*TIMEPASS;
+ posZ += signZ*velZ*TIMEPASS;
+
+ if (posX < -4 || posX > 4){signX = -signX;}
+ if (posY < -4 || posY > 4){signY = -signY;}
+ if (posZ < -4 || posZ > 4){signZ = -signZ;}
+
+ gfxTranslate(posX,posY,posZ);
+
+}
+
+void Render()
+{
+ time += TIMEPASS;
+ for (y=0;y<24;y=y+1)
+ {
+ for (x=0;x<32;x=x+1)
+ {
+ float dx = (x-16);
+ float dy = (y-12);
+ float s = Mag(dx,dy)/Mag(16,12);
+ if (s == 0)
+ {
+ map.SetValues(x, y, 0.1, 0.1, 0.8,0.8, 0.8);
+ }
+ map.SetValues(x, y, dx*s*0.1*Fabs(BASS), dy*s*0.1*Fabs(BASS), 0.8,0.8, 0.8);
+ }
+
+ }
+ map.Render();
+
+ gfxSetRenderTarget(map);
+ gfxPushMatrix();
+ gfxTranslate(0,0,15);
+
+ PushAround();
+
+ if (BASS>0.3) ryamt = 1;
+ if (BASS<-0.3) ryamt = -1;
+ ry = ry + (ryamt*TIMEPASS);
+
+ gfxRotate(ry*90,0,1,0);
+
+
+ RenderSphere();
+
+ gfxPopMatrix();
+
+ gfxSetRenderTarget(0);
+ gfxSetEnvTexture(NULL);
+ gfxSetTexture(map);
+
+ gfxSetAspect(0);
+ gfxTranslate(0, 0, 2.414);
+ gfxColour(1, 1, 1, 1);
+ gfxTexRect(-1, 1, 1, -1);
+}