aboutsummaryrefslogtreecommitdiff
path: root/deps/raylib/examples/models/resources/shaders/glsl330/skinning.vs
diff options
context:
space:
mode:
authorbonmas14 <bonmas14@gmail.com>2025-09-20 22:28:15 +0300
committerbonmas14 <bonmas14@gmail.com>2025-09-20 22:28:15 +0300
commitcdda4c4182c9ee068567529715e4a5c68a8efb58 (patch)
tree38a63f62a64018a2d35fc33354f8589fd33b7514 /deps/raylib/examples/models/resources/shaders/glsl330/skinning.vs
downloadc_wizard-cdda4c4182c9ee068567529715e4a5c68a8efb58.tar.gz
c_wizard-cdda4c4182c9ee068567529715e4a5c68a8efb58.zip
Init commit v1.0
Diffstat (limited to 'deps/raylib/examples/models/resources/shaders/glsl330/skinning.vs')
-rw-r--r--deps/raylib/examples/models/resources/shaders/glsl330/skinning.vs37
1 files changed, 37 insertions, 0 deletions
diff --git a/deps/raylib/examples/models/resources/shaders/glsl330/skinning.vs b/deps/raylib/examples/models/resources/shaders/glsl330/skinning.vs
new file mode 100644
index 0000000..7513611
--- /dev/null
+++ b/deps/raylib/examples/models/resources/shaders/glsl330/skinning.vs
@@ -0,0 +1,37 @@
+#version 330
+
+#define MAX_BONE_NUM 128
+
+// Input vertex attributes
+in vec3 vertexPosition;
+in vec2 vertexTexCoord;
+in vec4 vertexColor;
+in vec4 vertexBoneIds;
+in vec4 vertexBoneWeights;
+
+// Input uniform values
+uniform mat4 mvp;
+uniform mat4 boneMatrices[MAX_BONE_NUM];
+
+// Output vertex attributes (to fragment shader)
+out vec2 fragTexCoord;
+out vec4 fragColor;
+
+void main()
+{
+ int boneIndex0 = int(vertexBoneIds.x);
+ int boneIndex1 = int(vertexBoneIds.y);
+ int boneIndex2 = int(vertexBoneIds.z);
+ int boneIndex3 = int(vertexBoneIds.w);
+
+ vec4 skinnedPosition =
+ vertexBoneWeights.x*(boneMatrices[boneIndex0]*vec4(vertexPosition, 1.0)) +
+ vertexBoneWeights.y*(boneMatrices[boneIndex1]*vec4(vertexPosition, 1.0)) +
+ vertexBoneWeights.z*(boneMatrices[boneIndex2]*vec4(vertexPosition, 1.0)) +
+ vertexBoneWeights.w*(boneMatrices[boneIndex3]*vec4(vertexPosition, 1.0));
+
+ fragTexCoord = vertexTexCoord;
+ fragColor = vertexColor;
+
+ gl_Position = mvp*skinnedPosition;
+} \ No newline at end of file