gpmark

view src/plasma.cpp @ 0:5019d031b485

initial commit
author John Tsiombikas <nuclear@member.fsf.org>
date Wed, 05 Jun 2013 22:33:37 +0300
parents
children
line source
1 #include <math.h>
2 #include "main.h"
4 int fsin1[4096],fsin2[4096],fsin3[4096];
5 unsigned short rgb[256];
7 void InitPlasma()
8 {
9 float l = 4.0;
10 for (int i=0; i<4096; i++)
11 {
12 fsin1[i] = (int)(sin(i/(l*15.0))*96.0+96.0);
13 fsin2[i] = (int)(sin(i/(l*20.0))*112.0+112.0);
14 fsin3[i] = (int)(sin(i/(l*35.0))*128.0+128.0);
15 }
17 for (int i=0; i<64; i++)
18 {
19 rgb[i] = ((i>>1)<<11) | ((i>>1)<<5);
20 rgb[64+i] = ((31-(i>>2))<<11) | (((i>>1)+32)<<5) | (i>>1);
21 rgb[128+i] = ((16-(i>>2))<<11) | ((63-(i>>1))<<5) | 31;
22 rgb[192+i] = ((31-(i>>1))<<5) | (31-(i>>1));
23 }
24 }
26 void RunPlasma(int ntime, unsigned short *vram)
27 {
28 int k1 = ntime;
29 int k3 = 3 * ntime;
30 if (k1>503) k1 = k1-(k1/503)*503;
31 if (k3>880) k3 = k3-(k3/880)*880;
33 for (int y=0; y<ScreenHeight; y++)
34 {
35 for (int x=0; x<ScreenWidth; x++)
36 {
37 unsigned char c = fsin1[x] + fsin2[y+k1] + fsin3[x+y+k3];
38 *vram++ = rgb[c];
39 }
40 }
41 }