Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*!
- \brief Transform an object space vertex applying the given affine matrix.
- \param dst output transformed vertex.
- \param src input object space vertex.
- \param matrix the affine matrix to aplly.
- */
- AM_INLINE void amRasVertexTransform(AM_RAS_INPUT_VERTEX_TYPE *dst,
- const AM_RAS_INPUT_VERTEX_TYPE *src,
- const AM_RAS_MATRIX_TYPE *matrix) {
- #if defined(AM_FIXED_POINT_PIPELINE)
- AMint64 xa = INT32_INT32_MUL(matrix->a[0][0], src->x);
- AMint64 xb = INT32_INT32_MUL(matrix->a[0][1], src->y);
- AMint64 ya = INT32_INT32_MUL(matrix->a[1][0], src->x);
- AMint64 yb = INT32_INT32_MUL(matrix->a[1][1], src->y);
- //AMint64 x = (((xa + xb) >> 16) + matrix->a[0][2]) >> (15 - AM_RAS_FIXED_PRECISION);
- //AMint64 y = (((ya + yb) >> 16) + matrix->a[1][2]) >> (15 - AM_RAS_FIXED_PRECISION);
- AMint64 x = INT64_RSHIFT(INT64_INT32_ADD(INT64_RSHIFT(INT64_ADD(xa, xb), 16), matrix->a[0][2]), 15 - AM_RAS_FIXED_PRECISION);
- AMint64 y = INT64_RSHIFT(INT64_INT32_ADD(INT64_RSHIFT(INT64_ADD(ya, yb), 16), matrix->a[1][2]), 15 - AM_RAS_FIXED_PRECISION);
- AM_VECT2_SET(dst, (AMfixed)(INT64_INT32_CAST(x)), (AMfixed)(INT64_INT32_CAST(y)))
- #else
- AM_MATRIX33_VECT2_MUL(dst, matrix, src)
- #endif
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement