1
attribute vec3 aVertexPosition;
2
attribute vec3 aNormal;
3
attribute vec2 aTextureCoord;
4
varying vec2 vTextureCoord;
6
// #if hasColorMap||hasBumpMap||hasNormalMap||hasAmbientMap||hasSpecularMap||hasAlphaMap
9
uniform mat4 uMVMatrix;
10
uniform mat4 uPMatrix;
11
uniform mat4 uOMatrix;
12
uniform mat3 uNMatrix;
18
varying vec4 vPosition;
32
uniform Light lights[loopCount];
33
varying vec3 lightDir[loopCount];
38
varying vec3 lightPos[loopCount];
46
varying vec2 vEnvTextureCoord;
52
#if hasBumpMap||hasNormalMap
58
mat4 uMVOMatrix = uMVMatrix * uOMatrix;
59
mat4 uMVPMatrix = uPMatrix * uMVMatrix;
61
vTextureCoord = aTextureCoord;
63
vPosition = uMVOMatrix * vec4(aVertexPosition, 1.0);
65
camPos.xyz = vec3(0.0,0.0,0.0);
67
gl_Position = uMVPMatrix * uOMatrix * vec4(aVertexPosition, 1.0);
69
vNormal = uNMatrix * normalize(uOMatrix*vec4(aNormal,0.0)).xyz;
72
#if hasBumpMap||hasNormalMap
76
vec3 c1 = cross( aNormal, vec3(0.0, 0.0, 1.0) );
77
vec3 c2 = cross( aNormal, vec3(0.0, 1.0, 0.0) );
79
if ( length(c1) > length(c2) ) {
85
tangent = normalize(tangent);
87
binormal = cross(aNormal, tangent);
88
binormal = normalize(binormal);
90
mat3 TBNMatrix = mat3( (vec3 (uMVOMatrix * vec4 (tangent, 0.0))),
91
(vec3 (uMVOMatrix * vec4 (binormal, 0.0))),
92
(vec3 (uMVOMatrix * vec4 (aNormal, 0.0)))
95
eyeVec = vec3(uMVOMatrix * vec4(aVertexPosition,1.0)) * TBNMatrix;
100
for (int i = 0; i < loopCount; i++)
102
lightDir[i] = uNMatrix * lights[i].lDir;
107
for (int i = 0; i < loopCount; i++)
109
lightDir[i] = uNMatrix*normalize(lights[i].lPos-(uOMatrix * vec4(aVertexPosition, 1.0)).xyz);
110
lightPos[i] = (uMVMatrix*vec4(lights[i].lPos,1.0)).xyz;
116
u = normalize( vPosition.xyz );
118
vec3 ws = (uMVMatrix * vec4(aVertexPosition,1.0)).xyz;
119
vec3 u = normalize( vPosition.xyz );
120
vec3 r = reflect(ws - camPos, vNormal );
121
float m = 2.0 * sqrt( r.x*r.x + r.y*r.y + (r.z+1.0)*(r.z+1.0) );
122
vEnvTextureCoord.s = r.x/m + 0.5;
123
vEnvTextureCoord.t = r.y/m + 0.5;
b'\\ No newline at end of file'