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 }