1uniform mat4 g_WorldViewProjectionMatrix; 2uniform mat4 g_WorldMatrix; 3 4uniform vec4 m_Ambient; 5uniform vec4 m_Diffuse; 6uniform vec4 m_Specular; 7uniform float m_Shininess; 8 9varying vec2 texCoord; 10 11varying vec4 AmbientSum; 12varying vec4 DiffuseSum; 13varying vec4 SpecularSum; 14 15attribute vec3 inPosition; 16attribute vec2 inTexCoord; 17attribute vec3 inNormal; 18 19#ifdef NORMALMAP 20attribute vec3 inTangent; 21varying mat3 tbnMat; 22#endif 23 24#ifdef VERTEX_COLOR 25 attribute vec4 inColor; 26#endif 27 28varying vec3 vNormal; 29varying float vDepth; 30 31void main(){ 32 vec4 pos = vec4(inPosition, 1.0); 33 gl_Position = g_WorldViewProjectionMatrix * pos; 34 texCoord = inTexCoord; 35 36 #if defined(NORMALMAP) 37 vec4 wvNormal, wvTangent, wvBinormal; 38 39 wvNormal = vec4(inNormal, 0.0); 40 wvTangent = vec4(inTangent, 0.0); 41 42 wvNormal.xyz = normalize( (g_WorldMatrix * wvNormal).xyz ); 43 wvTangent.xyz = normalize( (g_WorldMatrix * wvTangent).xyz ); 44 wvBinormal.xyz = cross(wvNormal.xyz, wvTangent.xyz); 45 tbnMat = mat3(wvTangent.xyz, wvBinormal.xyz, wvNormal.xyz); 46 47 vNormal = wvNormal.xyz; 48 #else 49 vec4 wvNormal; 50 #ifdef V_TANGENT 51 wvNormal = vec4(inTangent, 0.0); 52 #else 53 wvNormal = vec4(inNormal, 0.0); 54 #endif 55 vNormal = normalize( (g_WorldMatrix * wvNormal).xyz ); 56 #endif 57 58 #ifdef MATERIAL_COLORS 59 AmbientSum = m_Ambient; 60 DiffuseSum = m_Diffuse; 61 SpecularSum = m_Specular; 62 #else 63 AmbientSum = vec4(0.0); 64 DiffuseSum = vec4(1.0); 65 SpecularSum = vec4(1.0); 66 #endif 67 68 #ifdef VERTEX_COLOR 69 DiffuseSum *= inColor; 70 #endif 71}