 				base_offset += 3;
 
 				if (params.has_normal) {
-					blend_normal += decode_abgr_2_10_10_10(src_blend_shapes.data[base_offset]).rgb * w;
+					blend_normal += decode_uint_oct_to_norm(src_blend_shapes.data[base_offset]) * w;
 					base_offset++;
 				}
 
 				if (params.has_tangent) {
-					blend_tangent += decode_abgr_2_10_10_10(src_blend_shapes.data[base_offset]).rgb * w;
+					blend_tangent += decode_uint_oct_to_tang(src_blend_shapes.data[base_offset]).rgb * w;
 				}
 
 				blend_total += w;

	dst_offset += 3;

	if (params.has_normal) {
		dst_vertices.data[dst_offset] = encode_abgr_2_10_10_10(vec4(normal, 0.0));
		dst_offset++;
	}

	if (params.has_tangent) {
		dst_vertices.data[dst_offset] = encode_abgr_2_10_10_10(tangent);
	}

#endif

	src_offset += 3;

	if (params.has_normal) {
		normal = decode_uint_oct_to_norm(src_vertices.data[src_offset]);
		src_offset++;
	}

	if (params.has_tangent) {
		tangent = decode_uint_oct_to_tang(src_vertices.data[src_offset]);
	}

	if (params.has_blend_shape) {
