#version 420 core layout(location = 0) in vec3 pos; layout(location = 1) in vec2 inTexCoord; layout(location = 2) in vec3 normals; layout(location = 3) in vec3 tangent; layout(location = 4) in vec3 bitangent; layout(std140, binding = 0) uniform Camera { mat4 projection; mat4 view; vec3 position; } camera; uniform mat4 model; out vec3 vertex; // Позиция вершины в пространстве out vec3 N; // Нормаль трансформированноая out vec2 texCoord; // Текстурные координаты out vec3 T; // Касательный вектор out vec3 B; // Бикасательный вектор out vec3 view; // Вектор от поверхности к камере void main() { vec4 P = model * vec4(pos, 1.0); // трансформация вершины vertex = P.xyz; N = normalize(mat3(model) * normals); // трансформация нормали texCoord = inTexCoord; // Текстурные координаты T = normalize(mat3(model) * tangent); B = normalize(mat3(model) * bitangent); view = camera.position - vertex; gl_Position = camera.projection * camera.view * P; }