MCPcopy Create free account
hub / github.com/GaijinEntertainment/daScript / v_mat33_compose

Function v_mat33_compose

include/vecmath/dag_vecMath_common.h:1518–1539  ·  view source on GitHub ↗

compose 3x3 matrix from rotation/scale

Source from the content-addressed store, hash-verified

1516
1517//! compose 3x3 matrix from rotation/scale
1518VECTORCALL VECMATH_FINLINE void v_mat33_compose(mat33f &dest, quat4f rot, vec4f scale)
1519{
1520 vec4f xyzw_2, wwww, yzxw, zxyw, yzxw_2, zxyw_2;
1521 vec4f tmp0, tmp1, tmp2, tmp3, tmp4, tmp5;
1522
1523 xyzw_2 = v_add(rot, rot);
1524 wwww = v_splat_w(rot);
1525 yzxw = v_perm_yzxw(rot); yzxw_2 = v_perm_yzxw(xyzw_2);
1526 zxyw = v_perm_zxyw(rot); zxyw_2 = v_perm_zxyw(xyzw_2);
1527 tmp0 = v_mul(yzxw_2, wwww);
1528 tmp1 = v_nmsub(yzxw, yzxw_2, V_C_ONE);
1529 tmp2 = v_mul(yzxw, xyzw_2);
1530 tmp0 = v_madd(zxyw, xyzw_2, tmp0);
1531 tmp1 = v_nmsub(zxyw, zxyw_2, tmp1);
1532 tmp2 = v_nmsub(zxyw_2, wwww, tmp2);
1533 tmp3 = v_perm_ayzw(tmp0, tmp1);
1534 tmp4 = v_perm_ayzw(tmp1, tmp2);
1535 tmp5 = v_perm_ayzw(tmp2, tmp0);
1536 dest.col0 = v_mul(v_perm_xycw(tmp3, tmp2), v_splat_x(scale));
1537 dest.col1 = v_mul(v_perm_xycw(tmp4, tmp0), v_splat_y(scale));
1538 dest.col2 = v_mul(v_perm_xycw(tmp5, tmp1), v_splat_z(scale));
1539}
1540
1541//! make 4x4 matrix from quaternion and position
1542VECTORCALL VECMATH_FINLINE void v_mat44_from_quat(mat44f &dest, quat4f q, vec4f pos)

Callers

nothing calls this directly

Calls 12

v_addFunction · 0.70
v_splat_wFunction · 0.70
v_perm_yzxwFunction · 0.70
v_perm_zxywFunction · 0.70
v_mulFunction · 0.70
v_nmsubFunction · 0.70
v_maddFunction · 0.70
v_perm_ayzwFunction · 0.70
v_perm_xycwFunction · 0.70
v_splat_xFunction · 0.70
v_splat_yFunction · 0.70
v_splat_zFunction · 0.70

Tested by

no test coverage detected