gpmark
diff 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 diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/src/plasma.cpp Wed Jun 05 22:33:37 2013 +0300 1.3 @@ -0,0 +1,41 @@ 1.4 +#include <math.h> 1.5 +#include "main.h" 1.6 + 1.7 +int fsin1[4096],fsin2[4096],fsin3[4096]; 1.8 +unsigned short rgb[256]; 1.9 + 1.10 +void InitPlasma() 1.11 +{ 1.12 + float l = 4.0; 1.13 + for (int i=0; i<4096; i++) 1.14 + { 1.15 + fsin1[i] = (int)(sin(i/(l*15.0))*96.0+96.0); 1.16 + fsin2[i] = (int)(sin(i/(l*20.0))*112.0+112.0); 1.17 + fsin3[i] = (int)(sin(i/(l*35.0))*128.0+128.0); 1.18 + } 1.19 + 1.20 + for (int i=0; i<64; i++) 1.21 + { 1.22 + rgb[i] = ((i>>1)<<11) | ((i>>1)<<5); 1.23 + rgb[64+i] = ((31-(i>>2))<<11) | (((i>>1)+32)<<5) | (i>>1); 1.24 + rgb[128+i] = ((16-(i>>2))<<11) | ((63-(i>>1))<<5) | 31; 1.25 + rgb[192+i] = ((31-(i>>1))<<5) | (31-(i>>1)); 1.26 + } 1.27 +} 1.28 + 1.29 +void RunPlasma(int ntime, unsigned short *vram) 1.30 +{ 1.31 + int k1 = ntime; 1.32 + int k3 = 3 * ntime; 1.33 + if (k1>503) k1 = k1-(k1/503)*503; 1.34 + if (k3>880) k3 = k3-(k3/880)*880; 1.35 + 1.36 + for (int y=0; y<ScreenHeight; y++) 1.37 + { 1.38 + for (int x=0; x<ScreenWidth; x++) 1.39 + { 1.40 + unsigned char c = fsin1[x] + fsin2[y+k1] + fsin3[x+y+k3]; 1.41 + *vram++ = rgb[c]; 1.42 + } 1.43 + } 1.44 +}