From 084ac76f55a8b873217d3ed27a1f95991d5d5fc2 Mon Sep 17 00:00:00 2001 From: Bill Currie Date: Mon, 4 Sep 2023 11:08:55 +0900 Subject: [PATCH] [vulkan] Use identity for vertices with no bone weights Since the identity matrix is mixed in with the other bones, interesting things will happen if the bone weights don't add up to 1 and are not all zero. --- libs/video/renderer/vulkan/shader/iqm.vert | 1 + 1 file changed, 1 insertion(+) diff --git a/libs/video/renderer/vulkan/shader/iqm.vert b/libs/video/renderer/vulkan/shader/iqm.vert index 7c86acff5..5362083bd 100644 --- a/libs/video/renderer/vulkan/shader/iqm.vert +++ b/libs/video/renderer/vulkan/shader/iqm.vert @@ -46,6 +46,7 @@ main (void) m += bones[vbones.y] * vweights.y; m += bones[vbones.z] * vweights.z; m += bones[vbones.w] * vweights.w; + m += mat3x4(1,0,0,0,0,1,0,0,0,0,1,0) * (1 - dot(vweights, vec4(1,1,1,1))); vec4 pos = Model * vec4 (vec4(vposition, 1) * m, 1); if (IQMShadow) { gl_Position = shadowView[MatrixBase + gl_ViewIndex] * pos;