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