mirror of
https://github.com/AleziaKurdis/overte.git
synced 2025-04-14 13:06:48 +02:00
127 lines
No EOL
4.3 KiB
JavaScript
127 lines
No EOL
4.3 KiB
JavaScript
//
|
|
// Created by Seiji Emery on 9/4/15
|
|
// Copyright 2015 High Fidelity, Inc.
|
|
//
|
|
// Distributed under the Apache License, Version 2.0.
|
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
//
|
|
|
|
Script.include("perfTest.js");
|
|
|
|
// Native vec3 (for comparison)
|
|
var Native = {};
|
|
(function () {
|
|
Native.Vec3 = function (x, y, z) {
|
|
this.x = x || 0.0;
|
|
this.y = y || 0.0;
|
|
this.z = z || 0.0;
|
|
}
|
|
Native.Vec3.prototype.add = function (other) {
|
|
this.x += other.x;
|
|
this.y += other.y;
|
|
this.z += other.z;
|
|
}
|
|
Native.Vec3.prototype.distance = function (other) {
|
|
var rx = this.x - other.x;
|
|
var ry = this.y - other.y;
|
|
var rz = this.z - other.z;
|
|
return Math.sqrt(rx * rx + ry * ry + rz * rz);
|
|
}
|
|
Native.Vec3.prototype.dist2 = function (other) {
|
|
var rx = this.x - other.x;
|
|
var ry = this.y - other.y;
|
|
var rz = this.z - other.z;
|
|
return rx * rx + ry * ry + rz * rz;
|
|
}
|
|
|
|
Native.Quaternion = function (x, y, z, w) {
|
|
this.x = x || 0.0;
|
|
this.y = y || 0.0;
|
|
this.z = z || 0.0;
|
|
this.w = w || 0.0;
|
|
}
|
|
// Pulled from THREE.js
|
|
Native.Quaternion.prototype.multiply = function(quat2) {
|
|
var qax = this.x, qay = this.y, qaz = this.z, qaw = this.w,
|
|
qbx = quat2.x, qby = quat2.y, qbz = quat2.z, qbw = quat2.w;
|
|
this.x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;
|
|
this.y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;
|
|
this.z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;
|
|
this.w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;
|
|
return this;
|
|
}
|
|
})();
|
|
|
|
// Create + run tests
|
|
(function () {
|
|
var mathTests = new TestRunner();
|
|
var foo;
|
|
|
|
print("math tests:");
|
|
var iterations = [ 1000, 10000, 100000, 1000000 ];
|
|
|
|
print("builtin Vec3 + Quat (wrapped glm::vec3 + glm::quat)");
|
|
var builtinTests = new TestRunner();
|
|
builtinTests.addTestCase('Vec3.sum')
|
|
.run(function () {
|
|
foo = Vec3.sum({x: 10, y: 12, z: 3}, {x: 1, y: 2, z: 4});
|
|
})
|
|
builtinTests.addTestCase('Vec3.distance')
|
|
.run(function () {
|
|
foo = Vec3.distance({x: 1209, y: 298, z: 238}, {x: 239, y: 20, z: 23})
|
|
})
|
|
builtinTests.addTestCase('Quat.multiply')
|
|
.run(function () {
|
|
foo = Quat.multiply({x: 2190.0, y: 2109.0, z: 1209.0, w: 829.0}, {x: -1293.0, y: 1029.1, z: 2190.1, w: 129.0})
|
|
});
|
|
builtinTests.runAllTestsWithIterations([ 1e3, 1e4, 1e5 ], 1e3, 10);
|
|
|
|
print("");
|
|
print("native JS Vec3 + Quaternion");
|
|
var nativeTests = new TestRunner();
|
|
nativeTests.addTestCase('Native Vec3.sum')
|
|
.run(function () {
|
|
foo = new Native.Vec3(10, 12, 3).add(new Native.Vec3(1, 2, 4));
|
|
})
|
|
nativeTests.addTestCase('Native Vec3.distance')
|
|
.run(function () {
|
|
foo = new Native.Vec3(1209, 298, 238).distance(new Native.Vec3(239, 20, 23));
|
|
})
|
|
nativeTests.addTestCase('Native Vec3.dist2')
|
|
.run(function () {
|
|
foo = new Native.Vec3(1209, 298, 238).dist2(new Native.Vec3(239, 20, 23));
|
|
})
|
|
nativeTests.addTestCase('Native Quat.multiply')
|
|
.run(function () {
|
|
foo = new Native.Quaternion(2190.0, 2109.0, 1209.0, 829.0).multiply(new Native.Quaternion(-1293.0, 1029.1, 2190.1, 129.0));
|
|
});
|
|
nativeTests.runAllTestsWithIterations([ 1e3, 1e4, 1e5, 1e6 ], 1e6, 10);
|
|
|
|
print("");
|
|
print("no-ops (for test assignment / construction overhead)")
|
|
mathTests.addTestCase('no-op')
|
|
.run(function(){});
|
|
mathTests.addTestCase('assign null')
|
|
.run(function () {
|
|
foo = null;
|
|
});
|
|
mathTests.addTestCase('assign object')
|
|
.run(function () {
|
|
foo = { x: 1902, y: 129, z: 21 };
|
|
});
|
|
mathTests.addTestCase('Native Vec3.construct -- 3 args')
|
|
.run(function () {
|
|
foo = new Native.Vec3(1209, 298, 238);
|
|
});
|
|
mathTests.addTestCase('Native Vec3.construct -- 2 args')
|
|
.run(function () {
|
|
foo = new Native.Vec3(1209, 298);
|
|
});
|
|
mathTests.addTestCase('Native Vec3.construct -- no args')
|
|
.run(function() {
|
|
foo = new Native.Vec3();
|
|
});
|
|
|
|
mathTests.runAllTestsWithIterations([1e3, 1e4, 1e5, 1e6], 1e6, 10);
|
|
mathTests.writeResultsToLog();
|
|
})(); |