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