48 lines
1.4 KiB
Plaintext
48 lines
1.4 KiB
Plaintext
|
|
#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);
|
||
|
|
}
|