4 in vec3 unscaledNormal;
11 uniform mat4 projection;
13 out vec3 defNormal, worldNormal;
16 uniform vec3 vLightPos;
17 uniform vec3 vViewPos;
19 out vec3 lightPos, viewPos, fragPos;
20 out vec3 worldViewPos, worldFragPos;
23 vec4 worldPos = model * vec4(pos, 1.f);
27 vec3 T = normalize(vec3(model * vec4(tangent, 0.0)));
28 vec3 B = normalize(vec3(model * vec4(bitangent, 0.0)));
29 vec3 N = normalize(vec3(model * vec4(unscaledNormal, 0.0)));
30 // convert TBN to world->tangent space
31 mat3 TBN = transpose(mat3(T, B, N));
33 lightPos = TBN * vLightPos;
34 viewPos = TBN * vViewPos;
35 fragPos = TBN * vec3(worldPos);
37 worldViewPos = vViewPos;
38 worldFragPos = vec3(worldPos);
40 vec3 normal = mat3(transpose(inverse(model))) * unscaledNormal;
42 defNormal = TBN * normal;
45 gl_Position = projection * view * worldPos;