Renderer/assets/Shaders/old/VertexShader.vs

68 lines
1.8 KiB
GLSL

//Vertex Shader
#version 430 core
layout (location = 0) in vec3 aPos;
layout (location = 1) in vec3 aNormal;
layout (location = 2) in vec4 aWeights;
layout (location = 3) in ivec4 aIndex;
uniform mat4 transform;
uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;
const int MAX_BONES = 100;
uniform mat4 bones[MAX_BONES];
uniform int hasBones;
uniform int numBones;
out vec3 Normal;
out vec3 FragPos;
out vec2 TexCoords;
void main()
{
if(hasBones == 1){
//mat4 BoneTransform;
//for(int i = 0; i < MAX_BONES; i++){
// if(i < numBones){
// BoneTransform += bones[i] * aWeights[i];
// }
//}
mat4 BoneTransform;
BoneTransform = mat4(
1.0,0.0,0.0,0.0,
0.0,1.0,0.0,0.0,
0.0,0.0,1.0,0.0,
0.0,0.0,0.0,1.0);
//BoneTransform = BoneTransform * mat4(
// 1.0,0.0,0.0,0.0,
// 0.0,1.0,0.0,0.0,
// 0.0,0.0,2.0,0.0,
// 0.0,0.0,0.0,1.0);
BoneTransform = BoneTransform * bones[aIndex[0]] * aWeights[0];
BoneTransform += BoneTransform * bones[aIndex[1]] * aWeights[1];
BoneTransform += BoneTransform * bones[aIndex[2]] * aWeights[2];
BoneTransform += BoneTransform * bones[aIndex[3]] * aWeights[3];
//BoneTransform += bones[aIndex[0]] * 1.0;
//BoneTransform += bones[aIndex[1]] * aWeights[1];
//BoneTransform += bones[aIndex[2]] * aWeights[2];
//BoneTransform += bones[aIndex[3]] * aWeights[3];
gl_Position = projection * view * model * BoneTransform * vec4(aPos, 1.0);
} else {
gl_Position = projection * view * model * vec4(aPos, 1.0);
}
FragPos = vec3(model * vec4(aPos, 1.0));
Normal = vec3(vec4(aNormal, 1.0));
TexCoords = vec2(0.5, 0.5);
}