2023-02-07 17:32:48 +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;
|
2023-02-08 18:04:30 +01:00
|
|
|
uniform mat4 LightVP;
|
2023-02-07 17:32:48 +01:00
|
|
|
|
|
|
|
out vec3 vecNormal;
|
|
|
|
out vec3 worldPos;
|
|
|
|
|
|
|
|
uniform vec3 lightPos;
|
|
|
|
uniform vec3 spotlightPos;
|
|
|
|
uniform vec3 cameraPos;
|
|
|
|
uniform vec3 sunDir;
|
2023-02-08 18:04:30 +01:00
|
|
|
|
|
|
|
out vec3 viewDirTS;
|
|
|
|
out vec3 lightDirTS;
|
|
|
|
out vec3 spotlightDirTS;
|
|
|
|
out vec3 sunDirTS;
|
|
|
|
out vec2 vecTex;
|
|
|
|
out vec4 sunSpacePos;
|
|
|
|
|
|
|
|
void main()
|
|
|
|
{
|
|
|
|
vecTex = vertexTexCoord;
|
|
|
|
vecTex.y = 1.0 - vecTex.y;
|
|
|
|
|
|
|
|
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);
|
|
|
|
mat3 TBN = transpose(mat3(w_tangent, w_bitangent, vecNormal));
|
|
|
|
|
|
|
|
vec3 V = normalize(cameraPos-worldPos);
|
|
|
|
viewDirTS = TBN*V;
|
|
|
|
vec3 L = normalize(lightPos-worldPos);
|
|
|
|
lightDirTS = TBN*L;
|
|
|
|
vec3 SL = normalize(spotlightPos-worldPos);
|
|
|
|
spotlightDirTS = TBN*SL;
|
|
|
|
sunDirTS = TBN*sunDir;
|
|
|
|
sunSpacePos=LightVP*modelMatrix*vec4(vertexPosition,1);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
#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;
|
|
|
|
uniform mat4 LightVP;
|
2023-02-07 17:32:48 +01:00
|
|
|
uniform sampler2D normalSampler;
|
|
|
|
|
2023-02-08 18:04:30 +01:00
|
|
|
out vec3 vecNormal;
|
|
|
|
out vec3 worldPos;
|
|
|
|
|
|
|
|
uniform vec3 lightPos;
|
|
|
|
uniform vec3 spotlightPos;
|
|
|
|
uniform vec3 cameraPos;
|
|
|
|
uniform vec3 sunDir;
|
|
|
|
|
2023-02-07 17:32:48 +01:00
|
|
|
out vec3 viewDirTS;
|
|
|
|
out vec3 lightDirTS;
|
|
|
|
out vec3 spotlightDirTS;
|
|
|
|
out vec3 sunDirTS;
|
|
|
|
out vec2 vecTex;
|
2023-02-08 18:04:30 +01:00
|
|
|
out vec4 sunSpacePos;
|
2023-02-07 17:32:48 +01:00
|
|
|
|
|
|
|
vec3 normal;
|
|
|
|
|
|
|
|
void main()
|
|
|
|
{
|
|
|
|
vecTex = vertexTexCoord;
|
|
|
|
vecTex.y = 1.0 - vecTex.y;
|
2023-02-08 18:04:30 +01:00
|
|
|
|
|
|
|
normal = texture(normalSampler, vecTex).xyz;
|
|
|
|
normal = normalize(normal * 2.0 - 1.0);
|
2023-02-07 17:32:48 +01:00
|
|
|
|
|
|
|
worldPos = (modelMatrix* vec4(vertexPosition,1)).xyz;
|
|
|
|
vecNormal = (modelMatrix* vec4(normal,0)).xyz;
|
2023-02-08 18:04:30 +01:00
|
|
|
//vecNormal = normalize(vecNormal);
|
2023-02-07 17:32:48 +01:00
|
|
|
gl_Position = transformation * vec4(vertexPosition, 1.0);
|
|
|
|
|
|
|
|
vec3 w_tangent = normalize(mat3(modelMatrix)*vertexTangent);
|
|
|
|
vec3 w_bitangent = normalize(mat3(modelMatrix)*vertexBitangent);
|
|
|
|
mat3 TBN = transpose(mat3(w_tangent, w_bitangent, vecNormal));
|
|
|
|
|
|
|
|
vec3 V = normalize(cameraPos-worldPos);
|
|
|
|
viewDirTS = TBN*V;
|
|
|
|
vec3 L = normalize(lightPos-worldPos);
|
|
|
|
lightDirTS = TBN*L;
|
|
|
|
vec3 SL = normalize(spotlightPos-worldPos);
|
|
|
|
spotlightDirTS = TBN*SL;
|
|
|
|
sunDirTS = TBN*sunDir;
|
2023-02-08 18:04:30 +01:00
|
|
|
sunSpacePos=LightVP*modelMatrix*vec4(vertexPosition,1);
|
2023-02-07 17:32:48 +01:00
|
|
|
|
2023-02-08 18:04:30 +01:00
|
|
|
}
|
|
|
|
*/
|