demosystem tracks
[andemo] / src / scr / testb.c
1 #include "demo.h"
2 #include "noise.h"
3 #include "cgmath/cgmath.h"
4
5 static int init(void);
6 static void destroy(void);
7 static void draw(void);
8
9 static unsigned int sdr_foo;
10
11 static struct demoscreen scr = { "testb", init, destroy, 0, 0, 0, 0, draw };
12
13 void regscr_testb(void)
14 {
15         dsys_add_screen(&scr);
16 }
17
18 static int init(void)
19 {
20         if(!(sdr_foo = get_sdrprog("sdr/foo.v.glsl", "sdr/foo-notex.p.glsl"))) {
21                 return -1;
22         }
23         return 0;
24 }
25
26 static void destroy(void)
27 {
28 }
29
30 #define NX      16
31 #define NY      10
32
33 static void draw(void)
34 {
35         int i, j;
36         float x, y, xr, yr, sz;
37         float t = dsys.tmsec / 700.0f;
38
39         glUseProgram(sdr_foo);
40         gl_begin(GL_QUADS);
41         for(i=0; i<NY; i++) {
42                 y = (i + 0.5f) / (NY/2.0f) - 1.0f;
43                 for(j=0; j<NX; j++) {
44                         x = (j + 0.5f) / (NX/2.0f) - 1.0f;
45                         sz = cgm_lerp(1.0f, noise2(x * 5.0f, t) * noise2(y * 5.0f, t) * 2.5f, scr.vis);
46                         if(sz < 0.0f) sz = 0.0f;
47                         if(sz > 1.0f) sz = 1.0f;
48                         xr = sz / NX;
49                         yr = sz / NY;
50
51                         gl_vertex2f(x - xr, y - yr);
52                         gl_vertex2f(x + xr, y - yr);
53                         gl_vertex2f(x + xr, y + yr);
54                         gl_vertex2f(x - xr, y + yr);
55                 }
56         }
57         gl_end();
58 }