From 7243b51149a73d2cd5d90d5e73640628ce3e56d0 Mon Sep 17 00:00:00 2001 From: Camden Dixie O'Brien Date: Wed, 1 Oct 2025 19:48:17 +0100 Subject: [PATCH] Apply skinning matrix in vertex shader --- vert.glsl | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/vert.glsl b/vert.glsl index 56e63a4..2ab6447 100644 --- a/vert.glsl +++ b/vert.glsl @@ -13,7 +13,18 @@ layout(binding = 0) uniform mvp_t { mat4 proj; } mvp; +layout(binding = 1) uniform skeleton_t { + mat4 matrices[32]; +} bones; + void main() { - gl_Position = mvp.proj * mvp.view * mvp.model * vec4(position, 1.0); - frag_normal = mat3(mvp.model) * normal; + const mat4 skinning_matrix + = weights.x * bones.matrices[bone_indices.x] + + weights.y * bones.matrices[bone_indices.y] + + weights.z * bones.matrices[bone_indices.z] + + weights.w * bones.matrices[bone_indices.w]; + gl_Position = mvp.proj * mvp.view * mvp.model * skinning_matrix + * vec4(position, 1.0); + frag_normal + = transpose(inverse(mat3(mvp.model * skinning_matrix))) * normal; }