Archived
1
Fork 0
This repository has been archived on 2025-04-12. You can view files and clone it, but cannot push or open issues or pull requests.
graphite/dist/shaders/forward/normal.vert
2024-01-03 16:05:02 -05:00

36 lines
1.1 KiB
GLSL

layout(location = 0) in vec3 inPosition;
layout(location = 1) in vec3 inNormal;
layout(location = 2) in vec2 inTexCoords;
layout(location = 3) in vec3 inTangent;
layout(location = 4) in vec4 inBoneWeights;
layout(location = 5) in ivec4 inBoneIDs;
layout(std140, binding = 0) uniform UniformSceneData {
mat4 projection, view, model;
vec4 cameraPosition;
} sceneData;
out VS_OUT {
vec3 FragPos;
vec3 Normal;
vec2 TexCoords;
mat3 TBN;
} vs_out;
out gl_PerVertex {
vec4 gl_Position;
};
void main() {
gl_Position = sceneData.projection * sceneData.view * sceneData.model * vec4(inPosition, 1.0);
vs_out.Normal = transpose(inverse(mat3(sceneData.model))) * inNormal;
vs_out.FragPos = vec3(sceneData.model * vec4(inPosition, 1.0));
vs_out.TexCoords = inTexCoords;
vec3 Bitangent = cross(inTangent, normalize(vs_out.Normal));
vec3 T = normalize(vec3(sceneData.model * vec4(inTangent, 0.0)));
vec3 B = normalize(vec3(sceneData.model * vec4(Bitangent, 0.0)));
vec3 N = normalize(vec3(sceneData.model * vec4(inNormal, 0.0)));
vs_out.TBN = mat3(T, B, N);
}