Pārlūkot izejas kodu

Code cleanup (#97)

- Style changes 
- Removed a bit of code duplication (compiler will inline this in release)
Jorrit Rouwe 3 gadi atpakaļ
vecāks
revīzija
8e1ef02eba
4 mainītis faili ar 15 papildinājumiem un 79 dzēšanām
  1. 1 1
      Build/CMakeLists.txt
  2. 1 19
      Jolt/Math/UVec4.inl
  3. 10 35
      Jolt/Math/Vec3.inl
  4. 3 24
      Jolt/Math/Vec4.inl

+ 1 - 1
Build/CMakeLists.txt

@@ -85,7 +85,7 @@ if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
 			set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.2 -mpopcnt")
 		elseif (USE_SSE4_1)
 			set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.1")
-		else ()
+		else()
 		  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2")
 		endif()
 		if (USE_LZCNT)

+ 1 - 19
Jolt/Math/UVec4.inl

@@ -112,9 +112,7 @@ UVec4 UVec4::sMin(UVec4Arg inV1, UVec4Arg inV2)
 #else
 	UVec4 result;
 	for (int i = 0; i < 4; i++)
-	{
 		result.mU32[i] = min(inV1.mU32[i], inV2.mU32[i]);
-	}
 	return result;
 #endif
 }
@@ -128,9 +126,7 @@ UVec4 UVec4::sMax(UVec4Arg inV1, UVec4Arg inV2)
 #else
 	UVec4 result;
 	for (int i = 0; i < 4; i++)
-	{
 		result.mU32[i] = max(inV1.mU32[i], inV2.mU32[i]);
-	}
 	return result;
 #endif
 }
@@ -155,9 +151,7 @@ UVec4 UVec4::sSelect(UVec4Arg inV1, UVec4Arg inV2, UVec4Arg inControl)
 #else
 	UVec4 result;
 	for (int i = 0; i < 4; i++)
-	{
 		result.mU32[i] = inControl.mU32[i] ? inV2.mU32[i] : inV1.mU32[i];
-	}
 	return result;
 #endif
 }
@@ -230,9 +224,7 @@ UVec4 UVec4::operator * (UVec4Arg inV2) const
 #else
 	UVec4 result;
 	for (int i = 0; i < 4; i++)
-	{
 		result.mU32[i] = mU32[i] * inV2.mU32[i];
-	}
 	return result;
 #endif
 }
@@ -469,9 +461,7 @@ UVec4 UVec4::Expand4Byte0() const
 #else
 	UVec4 result;
 	for (int i = 0; i < 4; i++)
-	{
 		result.mU32[i] = (mU32[0] >> (i * 8)) & 0xff;
-	}
 	return result;
 #endif
 }
@@ -486,9 +476,7 @@ UVec4 UVec4::Expand4Byte4() const
 #else
 	UVec4 result;
 	for (int i = 0; i < 4; i++)
-	{
 		result.mU32[i] = (mU32[1] >> (i * 8)) & 0xff;
-	}
 	return result;
 #endif
 }
@@ -503,9 +491,7 @@ UVec4 UVec4::Expand4Byte8() const
 #else
 	UVec4 result;
 	for (int i = 0; i < 4; i++)
-	{
 		result.mU32[i] = (mU32[2] >> (i * 8)) & 0xff;
-	}
 	return result;
 #endif
 }
@@ -520,9 +506,7 @@ UVec4 UVec4::Expand4Byte12() const
 #else
 	UVec4 result;
 	for (int i = 0; i < 4; i++)
-	{
 		result.mU32[i] = (mU32[3] >> (i * 8)) & 0xff;
-	}
 	return result;
 #endif
 }
@@ -535,11 +519,9 @@ UVec4 UVec4::ShiftComponents4Minus(int inCount) const
 	uint8x16_t idx = vreinterpretq_u8_u32(sFourMinusXShuffle[inCount].mValue);
 	return vreinterpretq_u32_s8(vqtbl1q_s8(vreinterpretq_s8_u32(mValue), idx));
 #else
-	UVec4 result(0, 0, 0, 0);
+	UVec4 result = UVec4::sZero();
 	for (int i = 0; i < inCount; i++)
-	{
 		result.mU32[i] = mU32[i + 4 - inCount];
-	}
 	return result;
 #endif
 }

+ 10 - 35
Jolt/Math/Vec3.inl

@@ -232,10 +232,10 @@ Vec3 Vec3::sSelect(Vec3Arg inV1, Vec3Arg inV2, UVec4Arg inControl)
 #else
 	Vec3 result;
 	for (int i = 0; i < 3; i++)
-	{
 		result.mF32[i] = inControl.mU32[i] ? inV2.mF32[i] : inV1.mF32[i];
-	}
+#ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
 	result.mF32[3] = result.mF32[2];
+#endif // JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
 	return result;
 #endif
 }
@@ -543,10 +543,8 @@ Vec3 Vec3::DotV(Vec3Arg inV2) const
 #else
 	float dot = 0.0f;
 	for (int i = 0; i < 3; i++)
-	{
 		dot += mF32[i] * inV2.mF32[i];
-	}
-	return Vec3(dot, dot, dot);
+	return Vec3::sReplicate(dot);
 #endif
 }
 
@@ -561,10 +559,8 @@ Vec4 Vec3::DotV4(Vec3Arg inV2) const
 #else
 	float dot = 0.0f;
 	for (int i = 0; i < 3; i++)
-	{
 		dot += mF32[i] * inV2.mF32[i];
-	}
-	return Vec4(dot, dot, dot, dot);
+	return Vec4::sReplicate(dot);
 #endif
 }
 
@@ -579,9 +575,7 @@ float Vec3::Dot(Vec3Arg inV2) const
 #else
 	float dot = 0.0f;
 	for (int i = 0; i < 3; i++)
-	{
 		dot += mF32[i] * inV2.mF32[i];
-	}
 	return dot;
 #endif
 }
@@ -597,9 +591,7 @@ float Vec3::LengthSq() const
 #else
 	float len_sq = 0.0f;
 	for (int i = 0; i < 3; i++)
-	{
 		len_sq += mF32[i] * mF32[i];
-	}
 	return len_sq;
 #endif
 }
@@ -614,12 +606,7 @@ float Vec3::Length() const
     float32x2_t sum = vdup_n_f32(vaddvq_f32(mul));
     return vget_lane_f32(vsqrt_f32(sum), 0);
 #else
-	float len_sq = 0.0f;
-	for (int i = 0; i < 3; i++)
-	{
-		len_sq += mF32[i] * mF32[i];
-	}
-	return sqrt(len_sq);
+	return sqrt(LengthSq());
 #endif
 }
 
@@ -644,13 +631,7 @@ Vec3 Vec3::Normalized() const
     float32x4_t sum = vdupq_n_f32(vaddvq_f32(mul));
     return vdivq_f32(mValue, vsqrtq_f32(sum));
 #else
-	float len_sq = 0.0f;
-	for (int i = 0; i < 3; i++)
-	{
-		len_sq += mF32[i] * mF32[i];
-	}
-	float len = sqrt(len_sq);
-	return Vec3(mF32[0] / len, mF32[1] / len, mF32[2] / len);
+	return *this / Length();
 #endif
 }
 
@@ -675,17 +656,11 @@ Vec3 Vec3::NormalizedOr(Vec3Arg inZeroValue) const
 	float32x4_t is_zero = vceqq_f32(len, vdupq_n_f32(0));
     return vbslq_f32(is_zero, inZeroValue.mValue, vdivq_f32(mValue, len));
 #else
-	float len_sq = 0.0f;
-	for (int i = 0; i < 3; i++)
-	{
-		len_sq += mF32[i] * mF32[i];
-	}
-	float len = sqrt(len_sq);
-	if (len == 0.0f) {
+	float len_sq = LengthSq();
+	if (len_sq == 0.0f)
 		return inZeroValue;
-	} else {
-		return Vec3(mF32[0] / len, mF32[1] / len, mF32[2] / len);
-	}
+	else
+		return *this / sqrt(len_sq);
 #endif
 }
 

+ 3 - 24
Jolt/Math/Vec4.inl

@@ -20,9 +20,7 @@ Vec4::Vec4(Vec3Arg inRHS, float inW)
 	mValue = vsetq_lane_f32(inW, inRHS.mValue, 3);
 #else
 	for (int i = 0; i < 3; i++)
-	{
 		mF32[i] = inRHS.mF32[i];
-	}
 	mF32[3] = inW;
 #endif
 }
@@ -233,9 +231,7 @@ Vec4 Vec4::sSelect(Vec4Arg inV1, Vec4Arg inV2, UVec4Arg inControl)
 #else
 	Vec4 result;
 	for (int i = 0; i < 4; i++)
-	{
 		result.mF32[i] = inControl.mU32[i] ? inV2.mF32[i] : inV1.mF32[i];
-	}
 	return result;
 #endif
 }
@@ -567,10 +563,8 @@ Vec4 Vec4::DotV(Vec4Arg inV2) const
 #else
 	float dot = 0.0f;
 	for (int i = 0; i < 4; i++)
-	{
 		dot += mF32[i] * inV2.mF32[i];
-	}
-	return Vec4(dot, dot, dot, dot);
+	return Vec4::sReplicate(dot);
 #endif
 }
 
@@ -584,9 +578,7 @@ float Vec4::Dot(Vec4Arg inV2) const
 #else
 	float dot = 0.0f;
 	for (int i = 0; i < 4; i++)
-	{
 		dot += mF32[i] * inV2.mF32[i];
-	}
 	return dot;
 #endif
 }
@@ -601,9 +593,7 @@ float Vec4::LengthSq() const
 #else
 	float len_sq = 0.0f;
 	for (int i = 0; i < 4; i++)
-	{
 		len_sq += mF32[i] * mF32[i];
-	}
 	return len_sq;
 #endif
 }
@@ -617,12 +607,7 @@ float Vec4::Length() const
     float32x2_t sum = vdup_n_f32(vaddvq_f32(mul));
     return vget_lane_f32(vsqrt_f32(sum), 0);
 #else
-	float len_sq = 0.0f;
-	for (int i = 0; i < 4; i++)
-	{
-		len_sq += mF32[i] * mF32[i];
-	}
-	return sqrt(len_sq);
+	return sqrt(LengthSq());
 #endif
 }
 
@@ -662,13 +647,7 @@ Vec4 Vec4::Normalized() const
     float32x4_t sum = vdupq_n_f32(vaddvq_f32(mul));
     return vdivq_f32(mValue, vsqrtq_f32(sum));
 #else
-	float len_sq = 0.0f;
-	for (int i = 0; i < 4; i++)
-	{
-		len_sq += mF32[i] * mF32[i];
-	}
-	float len = sqrt(len_sq);
-	return Vec4(mF32[0] / len, mF32[1] / len, mF32[2] / len, mF32[3] / len);
+	return *this / Length();
 #endif
 }