… | |
… | |
25 | |
25 | |
26 | /**********************************************************************/ |
26 | /**********************************************************************/ |
27 | |
27 | |
28 | view camera; |
28 | view camera; |
29 | vec3 camera_velocity; |
29 | vec3 camera_velocity; |
30 | float camera_velocity_factor = 10; |
30 | float camera_velocity_factor = 10; |
31 | |
31 | |
32 | ShColor3f color = ShColor3f(.5, 0.9, 0.2); |
32 | ShColor3f color = ShColor3f(.5, 0.9, 0.2); |
33 | ShPoint3f lightPos = ShPoint3f(0.0, 10.0, 10.0); |
33 | ShPoint3f lightPos = ShPoint3f(0.0, 10.0, 10.0); |
34 | ShMatrix4x4f mvp, mv; |
34 | ShMatrix4x4f mvp; |
35 | ShProgram vsh, fsh; |
35 | ShProgram vsh, fsh; |
36 | |
36 | |
37 | void |
37 | void |
38 | init_shaders() { |
38 | init_shaders () |
|
|
39 | { |
39 | { |
40 | { |
40 | vsh = SH_BEGIN_PROGRAM("gpu:vertex") |
41 | vsh = SH_BEGIN_PROGRAM ("gpu:vertex") |
41 | ShInputNormal3f normal; |
42 | ShInputNormal3f normal; |
42 | ShInputPosition4f p; |
43 | ShInputPosition4f p; |
43 | |
44 | |
44 | ShOutputPoint4f ov; |
45 | ShOutputPoint4f ov; |
45 | ShOutputNormal3f on; |
46 | ShOutputNormal3f on; |
46 | ShOutputVector3f lvv; |
47 | ShOutputVector3f lvv; |
47 | ShOutputPosition4f opd; |
48 | ShOutputPosition4f opd; |
48 | |
49 | |
49 | opd = mvp | p; |
50 | opd = mvp | p; |
50 | on = normalize(mv | normal); |
51 | on = normalize (mvp | normal); |
51 | ov = -normalize(mv | p); |
52 | ov = -normalize (mvp | p); |
52 | lvv = normalize(lightPos - (mv | p)(0,1,2)); |
53 | lvv = normalize (lightPos - (mvp | p) (0, 1, 2)); |
53 | SH_END; |
54 | SH_END; |
54 | } |
55 | } |
|
|
56 | |
55 | // declare and initialize diffuse color |
57 | // declare and initialize diffuse color |
56 | ShColor3f kd = ShColor3f(0.5, 0.7, 0.9); |
58 | ShColor3f kd = ShColor3f (0.5, 0.7, 0.9); |
|
|
59 | |
57 | { |
60 | { |
58 | fsh = SH_BEGIN_PROGRAM("gpu:fragment") |
61 | fsh = SH_BEGIN_PROGRAM ("gpu:fragment") |
59 | ShInputVector4f v; |
62 | ShInputVector4f v; |
60 | ShInputNormal3f n; |
63 | ShInputNormal3f n; |
61 | ShInputVector3f lvv; |
64 | ShInputVector3f lvv; |
62 | ShInputPosition4f p; |
65 | ShInputPosition4f p; |
63 | |
66 | |
64 | ShOutputColor3f out; |
67 | ShOutputColor3f out; |
65 | out(0,1,2) = color * dot(normalize(n), normalize(lvv)); |
68 | out (0, 1, 2) = color * dot (normalize (n), normalize (lvv)); |
66 | |
69 | out(0,1,2) = kd; |
67 | |
|
|
68 | SH_END; |
70 | SH_END; |
69 | } |
71 | } |
70 | } |
72 | } |
71 | |
|
|
72 | |
73 | |
73 | void |
74 | void |
74 | HotKey_ToggleFullScreen (void) |
75 | HotKey_ToggleFullScreen (void) |
75 | { |
76 | { |
76 | SDL_Surface *screen; |
77 | SDL_Surface *screen; |