| 12345678910111213141516171819202122232425262728293031 |
- #version 120
- attribute vec3 bone_indicies;
- attribute vec3 bone_weights;
-
- uniform mat4 world_matrix;
- uniform mat4 proj_matrix;
- uniform mat4 view_matrix;
- uniform mat4 bone_world_matrices[32];
- uniform int bone_count;
- varying vec3 normal;
- void main() {
-
- vec4 blendpos = vec4(0.0,0.0,0.0,0.0);
- for (int i = 0; i < 3; i++) {
- blendpos += vec4((bone_world_matrices[int(bone_indicies[i])] * gl_Vertex).xyz, 1.0) * bone_weights[i];
- }
-
- vec3 blendnorm = vec3(0.0,0.0,0.0);
- for (int i = 0; i < 3; i++) {
- blendnorm += (mat3(bone_world_matrices[int(bone_indicies[i])]) * gl_Normal) * bone_weights[i];
- }
-
- normal = mat3(world_matrix) * blendnorm;
-
- gl_Position = proj_matrix * view_matrix * world_matrix * blendpos;
-
- }
|