declare const _default: "\n\nattribute vertex_boneWeights: vec4f;\nattribute vertex_boneIndices: vec4f;\n\nvar texture_poseMap: texture_2d<f32>;\n\nstruct BoneMatrix {\n    v1: vec4f,\n    v2: vec4f,\n    v3: vec4f,\n}\n\nfn getBoneMatrix(width: i32, index: i32) -> BoneMatrix {\n\n    let v = index / width;\n    let u = index % width;\n\n    var result: BoneMatrix;\n    result.v1 = textureLoad(texture_poseMap, vec2i(u + 0, v), 0);\n    result.v2 = textureLoad(texture_poseMap, vec2i(u + 1, v), 0);\n    result.v3 = textureLoad(texture_poseMap, vec2i(u + 2, v), 0);\n    return result;\n}\n\nfn getSkinMatrix(indicesFloat: vec4f, weights: vec4f) -> mat4x4f {\n\n    let width = i32(textureDimensions(texture_poseMap).x);\n    var indices = vec4i(indicesFloat + 0.5) * 3;\n\n    let boneA = getBoneMatrix(width, indices.x);\n    let boneB = getBoneMatrix(width, indices.y);\n    let boneC = getBoneMatrix(width, indices.z);\n    let boneD = getBoneMatrix(width, indices.w);\n\n    // ... rest of getSkinMatrix remains the same ...\n    let v1 = boneA.v1 * weights.x + boneB.v1 * weights.y + boneC.v1 * weights.z + boneD.v1 * weights.w;\n    let v2 = boneA.v2 * weights.x + boneB.v2 * weights.y + boneC.v2 * weights.z + boneD.v2 * weights.w;\n    let v3 = boneA.v3 * weights.x + boneB.v3 * weights.y + boneC.v3 * weights.z + boneD.v3 * weights.w;\n\n    let one = dot(weights, vec4f(1.0, 1.0, 1.0, 1.0));\n\n    // transpose to 4x4 matrix\n    return mat4x4f(\n        v1.x, v2.x, v3.x, 0,\n        v1.y, v2.y, v3.y, 0,\n        v1.z, v2.z, v3.z, 0,\n        v1.w, v2.w, v3.w, one\n    );\n}\n";
export default _default;
