#version 300 es /*this will affect all the float guys (float, vecN, matN )*/ precision mediump float; layout (location = 0) in vec3 vertPos; // Attributo Posizione layout (location = 1) in vec2 coord_uv; // Attributo texture layout (location = 2) in vec3 vertNor; layout (location = 3) in vec3 vertTan; layout (location = 4) in vec3 vertBitan; uniform mat4 Model; uniform mat4 ModelRot; uniform mat4 Projection; uniform mat4 View; uniform vec3 boundingBoxLBN; uniform vec3 boundingBoxRTF; out vec3 fragPos; out vec2 frag_uv; out vec3 fragNormal; out vec3 fragBoundPos; out vec3 fragBaryc; out mat3 TBN; void main() { frag_uv = coord_uv; vec3 normal = normalize(vertNor); vec3 T = normalize(vec3(ModelRot * vec4(vertTan, 0.0))); vec3 B = normalize(vec3(ModelRot * vec4(vertBitan, 0.0))); vec3 N = normalize(vec3(ModelRot * vec4(vertNor, 0.0))); TBN = mat3(T, B, N); vec3 boundPos = vertPos - boundingBoxLBN; vec3 boundDim = boundingBoxRTF - boundingBoxLBN; fragBoundPos = vec3( boundPos.x / boundDim.x, boundPos.y / boundDim.y, boundPos.z / boundDim.z); fragNormal = mat3(ModelRot) * vec3(normal); fragPos=(Model*vec4(vertPos,1)).xyz; fragBoundPos=(Model*vec4(boundPos,1)).xyz; gl_Position=Projection*View*Model*vec4(vertPos,1); fragBaryc = vec3(gl_VertexID % 3 == 0, gl_VertexID % 3 == 1, gl_VertexID % 3 == 2); }