uniform mat4 g_WorldViewProjectionMatrix; uniform mat4 g_WorldMatrix; uniform vec4 m_Ambient; uniform vec4 m_Diffuse; uniform vec4 m_Specular; uniform float m_Shininess; varying vec2 texCoord; varying vec4 AmbientSum; varying vec4 DiffuseSum; varying vec4 SpecularSum; attribute vec3 inPosition; attribute vec2 inTexCoord; attribute vec3 inNormal; #ifdef NORMALMAP attribute vec3 inTangent; varying mat3 tbnMat; #endif #ifdef VERTEX_COLOR attribute vec4 inColor; #endif varying vec3 vNormal; varying float vDepth; void main(){ vec4 pos = vec4(inPosition, 1.0); gl_Position = g_WorldViewProjectionMatrix * pos; texCoord = inTexCoord; #if defined(NORMALMAP) vec4 wvNormal, wvTangent, wvBinormal; wvNormal = vec4(inNormal, 0.0); wvTangent = vec4(inTangent, 0.0); wvNormal.xyz = normalize( (g_WorldMatrix * wvNormal).xyz ); wvTangent.xyz = normalize( (g_WorldMatrix * wvTangent).xyz ); wvBinormal.xyz = cross(wvNormal.xyz, wvTangent.xyz); tbnMat = mat3(wvTangent.xyz, wvBinormal.xyz, wvNormal.xyz); vNormal = wvNormal.xyz; #else vec4 wvNormal; #ifdef V_TANGENT wvNormal = vec4(inTangent, 0.0); #else wvNormal = vec4(inNormal, 0.0); #endif vNormal = normalize( (g_WorldMatrix * wvNormal).xyz ); #endif #ifdef MATERIAL_COLORS AmbientSum = m_Ambient; DiffuseSum = m_Diffuse; SpecularSum = m_Specular; #else AmbientSum = vec4(0.0); DiffuseSum = vec4(1.0); SpecularSum = vec4(1.0); #endif #ifdef VERTEX_COLOR DiffuseSum *= inColor; #endif }