1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 // Adapted from the javascript implementation upon WebGL by kwaters@.
6 
7 #ifndef SHADER_H_INCLUDED
8 #define SHADER_H_INCLUDED
9 
10 #include <GLES2/gl2.h>
11 
12 #include "matrixop.h"
13 
14 typedef struct {
15     // program
16     GLuint program;
17     // attribute
18     GLint pos;
19     GLint normal;
20     GLint colorIn;
21     // uniform
22     GLint mvp;
23     GLint normalMatrix;
24     GLint ambient;
25     GLint shininess;
26     GLint light_0_direction;
27     GLint light_0_diffuse;
28     GLint light_0_specular;
29     GLint light_1_direction;
30     GLint light_1_diffuse;
31     GLint light_2_direction;
32     GLint light_2_diffuse;
33 } SHADERLIT;
34 
35 typedef struct {
36     // program
37     GLuint program;
38     // attribute
39     GLint pos;
40     GLint colorIn;
41     // uniform
42     GLint mvp;
43 } SHADERFLAT;
44 
45 typedef struct {
46     // program
47     GLuint program;
48     // attribute
49     GLint pos;
50     // uniform
51     GLint minFade;
52 } SHADERFADE;
53 
54 extern Matrix4x4 sModelView;
55 extern Matrix4x4 sProjection;
56 
57 extern SHADERLIT sShaderLit;
58 extern SHADERFLAT sShaderFlat;
59 extern SHADERFADE sShaderFade;
60 
61 extern int initShaderPrograms();
62 extern void deInitShaderPrograms();
63 extern void bindShaderProgram(GLuint program);
64 
65 #endif  // SHADER_H_INCLUDED
66 
67