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
14typedef 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
35typedef struct {
36    // program
37    GLuint program;
38    // attribute
39    GLint pos;
40    GLint colorIn;
41    // uniform
42    GLint mvp;
43} SHADERFLAT;
44
45typedef struct {
46    // program
47    GLuint program;
48    // attribute
49    GLint pos;
50    // uniform
51    GLint minFade;
52} SHADERFADE;
53
54extern Matrix4x4 sModelView;
55extern Matrix4x4 sProjection;
56
57extern SHADERLIT sShaderLit;
58extern SHADERFLAT sShaderFlat;
59extern SHADERFADE sShaderFade;
60
61extern int initShaderPrograms();
62extern void deInitShaderPrograms();
63extern void bindShaderProgram(GLuint program);
64
65#endif  // SHADER_H_INCLUDED
66
67