Browse Source

Small optimization.

Dario Manesku 12 years ago
parent
commit
d7647a4cb7
1 changed files with 19 additions and 14 deletions
  1. 19 14
      examples/14-shadowvolumes/shadowvolumes.cpp

+ 19 - 14
examples/14-shadowvolumes/shadowvolumes.cpp

@@ -849,20 +849,25 @@ struct Group
 	{
 		bool operator()(const f6_t& _a, const f6_t& _b)
 		{
-			if (_a.f[0] < _b.f[0]) return true;
-			if (_a.f[0] > _b.f[0]) return false;
-			if (_a.f[1] < _b.f[1]) return true;
-			if (_a.f[1] > _b.f[1]) return false;
-			if (_a.f[2] < _b.f[2]) return true;
-			if (_a.f[2] > _b.f[2]) return false;
-			if (_a.f[3] < _b.f[3]) return true;
-			if (_a.f[3] > _b.f[3]) return false;
-			if (_a.f[4] < _b.f[4]) return true;
-			if (_a.f[4] > _b.f[4]) return false;
-			if (_a.f[5] < _b.f[5]) return true;
-			/*if (_a.f[5] > _b.f[5]) return false;*/
-
-			return false;
+			const uint8_t t0 = 0
+				| ( (_a.f[0] < _b.f[0]) << 5)
+				| ( (_a.f[1] < _b.f[1]) << 4)
+				| ( (_a.f[2] < _b.f[2]) << 3)
+				| ( (_a.f[3] < _b.f[3]) << 2)
+				| ( (_a.f[4] < _b.f[4]) << 1)
+				| ( (_a.f[5] < _b.f[5]) << 0)
+				;
+
+			const uint8_t t1 = 0
+				| ( (_a.f[0] > _b.f[0]) << 5)
+				| ( (_a.f[1] > _b.f[1]) << 4)
+				| ( (_a.f[2] > _b.f[2]) << 3)
+				| ( (_a.f[3] > _b.f[3]) << 2)
+				| ( (_a.f[4] > _b.f[4]) << 1)
+				| ( (_a.f[5] > _b.f[5]) << 0)
+				;
+
+			return t0 > t1;
 		}
 	};