1ensure(!Result->ContainsNaN());

Engine\Source\Runtime\Core\Private\Math\UnrealMathSSE.cpp

出现崩溃,暂时屏蔽

void VectorMatrixMultiply(FMatrix44f* Result, const FMatrix44f* Matrix1, const FMatrix44f* Matrix2)
{
	const VectorRegister4Float* A = (const VectorRegister4Float*)Matrix1;
	const VectorRegister4Float* B = (const VectorRegister4Float*)Matrix2;
	VectorRegister4Float* R = (VectorRegister4Float*)Result;
	VectorRegister4Float Temp, R0, R1, R2;

	// First row of result (Matrix1[0] * Matrix2).
	Temp = VectorMultiply(VectorReplicate(A[0], 0), B[0]);
	Temp = VectorMultiplyAdd(VectorReplicate(A[0], 1), B[1], Temp);
	Temp = VectorMultiplyAdd(VectorReplicate(A[0], 2), B[2], Temp);
	R0 = VectorMultiplyAdd(VectorReplicate(A[0], 3), B[3], Temp);

	// Second row of result (Matrix1[1] * Matrix2).
	Temp = VectorMultiply(VectorReplicate(A[1], 0), B[0]);
	Temp = VectorMultiplyAdd(VectorReplicate(A[1], 1), B[1], Temp);
	Temp = VectorMultiplyAdd(VectorReplicate(A[1], 2), B[2], Temp);
	R1 = VectorMultiplyAdd(VectorReplicate(A[1], 3), B[3], Temp);

	// Third row of result (Matrix1[2] * Matrix2).
	Temp = VectorMultiply(VectorReplicate(A[2], 0), B[0]);
	Temp = VectorMultiplyAdd(VectorReplicate(A[2], 1), B[1], Temp);
	Temp = VectorMultiplyAdd(VectorReplicate(A[2], 2), B[2], Temp);
	R2 = VectorMultiplyAdd(VectorReplicate(A[2], 3), B[3], Temp);

	// Fourth row of result (Matrix1[3] * Matrix2).
	Temp = VectorMultiply(VectorReplicate(A[3], 0), B[0]);
	Temp = VectorMultiplyAdd(VectorReplicate(A[3], 1), B[1], Temp);
	Temp = VectorMultiplyAdd(VectorReplicate(A[3], 2), B[2], Temp);
	Temp = VectorMultiplyAdd(VectorReplicate(A[3], 3), B[3], Temp);

	// Store result. Must not be done during steps above in case source and destination are the same.
	R[0] = R0;
	R[1] = R1;
	R[2] = R2;
	R[3] = Temp;

	// TODO: Should change to DiagnosticCheckNaN call, though that's only in Debug.
#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
	//ensure(!Result->ContainsNaN());
#endif
}