grafika_komputerowa/grk/project/shaders/shader_tex.vert

50 lines
1.2 KiB
GLSL
Raw Normal View History

2024-01-22 18:46:06 +01:00
#version 430 core
layout(location = 0) in vec3 vertexPosition;
layout(location = 1) in vec3 vertexNormal;
layout(location = 2) in vec2 vertexTexCoord;
layout(location = 3) in vec3 vertexTangent;
layout(location = 4) in vec3 vertexBitangent;
uniform mat4 transformation;
uniform mat4 modelMatrix;
out vec3 vecNormal;
out vec3 worldPos;
out vec2 TexCoords;
uniform vec3 lightsPositions[10];
uniform vec3 spotlightPos;
uniform vec3 cameraPos;
out vec3 viewDirTS;
out vec3 lightDirTS[10];
out vec3 spotlightDirTS;
out mat3 TBN;
2024-01-22 18:46:06 +01:00
void main()
{
2024-01-22 19:39:58 +01:00
TexCoords = vertexTexCoord * -1;
2024-02-05 22:22:25 +01:00
TexCoords = vec2(vertexTexCoord.x, 1.0 - vertexTexCoord.y);
2024-01-22 18:46:06 +01:00
worldPos = (modelMatrix* vec4(vertexPosition,1)).xyz;
vecNormal = (modelMatrix* vec4(vertexNormal,0)).xyz;
gl_Position = transformation * vec4(vertexPosition, 1.0);
vec3 w_tangent = normalize(mat3(modelMatrix)*vertexTangent);
vec3 w_bitangent = normalize(mat3(modelMatrix)*vertexBitangent);
TBN = transpose(mat3(w_tangent, w_bitangent, vecNormal));
2024-01-22 18:46:06 +01:00
vec3 V = normalize(cameraPos-worldPos);
viewDirTS = TBN*V;
for (int i = 0; i < 9; ++i) {
vec3 L = normalize(lightsPositions[i]-worldPos);
lightDirTS[i] = TBN*L;
}
vec3 SL = normalize(spotlightPos-worldPos);
spotlightDirTS = TBN*SL;
}