#version 400 core
layout (location = 0) in vec3 aPos;
layout (location = 1) in vec3 aNormal;
out vec3 FragPos;
// ezt most magabol a vertex adatbol tudjuk de szamolhatnank a szomszedos vertex csucsokbol is (cross product)
out vec3 Normal;
uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;
void main() {
// a model matrixal transzformaljuk a fragmenteket es ezt adjuk tovabb a fs nek, mert minden fenyviszony szamitast most a world spacben szamolunk
FragPos = vec3(model * vec4(aPos, 1.0)); // kell h a light directiont tudjuk szamolni az fs ben
/// a norma vektor a local spacben van de mivel a szalitasokat a world spacben vegezzuk ezert transzformalnunk kell azt
/// azonban a n vektorok nem jelolnek poziciot es nincs homogen reszuk, tehat ha szorozzuk a model matrixal a n vektort nem szabad hasznalni a transzlacios komponenset csak a felso 3x3 matrixat azaz csak rotalni es scalelni akarjuk
// transpose of the inverse uper 3x3 model matris is the normal matrix
// a non uniform scaling miatt es nem kell uf=gye atranslation komponens
Normal = mat3(transpose(inverse(model))) * aNormal;
//Normal = aNormal;
gl_Position = projection * view * vec4(FragPos, 1.0);
}