@dorcsyful
It looks like you rotate in the wrong direction (i.e. from local to world rather than world to local). The right way is to rotate by inverse rotation into local space, compute support points, then apply a regular local to world transform.
/// Return a minkowski vertex for the support point on each of the two specified shapes in the given direction.
MinkowskiVertex getSupportPoint( const ShapeTransform1* shape1, const ShapeTransform2* shape2, const SIMDFloat4& direction )
{
// Transform the support direction into the local space of each shape.
const SIMDFloat4 localDirection1 = math::normalize( shape1->transform.rotateToLocal( direction ) );
const SIMDFloat4 localDirection2 = math::normalize( shape2->transform.rotateToLocal( -direction ) );
// Get the support point on each shape.
const SIMDFloat4 localPoint1 = getSupportPoint1( shape1->shape, localDirection1 );
const SIMDFloat4 localPoint2 = getSupportPoint2( shape2->shape, localDirection2 );
// Transform the local points on each shape into world space and return the minkowski vertex.
return MinkowskiVertex( shape1->transform.transformToWorld( localPoint1 ), shape2->transform.transformToWorld( localPoint2 ) );
}