test/index.html
2019-07-04 13:12:46 +02:00

115 lines
4.9 KiB
HTML

<!DOCTYPE html>
<html lang="en-us">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Unity WebGL Player | Benchmarks</title>
<link rel="shortcut icon" href="TemplateData/favicon.ico">
<link rel="stylesheet" href="TemplateData/style.css">
<script src="TemplateData/UnityProgress.js"></script>
<!-- <script src="Build/04cfd823429f9d23bbb0a65451607432.js"></script> -->
<script src="TemplateData/UnityLoader.js"></script>
<script src="TemplateData/Timer.js"></script>
<script src="TemplateData/UI.js"></script>
<script src="TemplateData/Stats.js"></script>
<script>
var timeToScreen = new Timer("Time to Screen");
var timeToInteractive = new Timer("Time to Interactive");
Stats.Loading.timers.push(timeToScreen, timeToInteractive);
var gameInstance = UnityLoader.instantiate("gameContainer", "Build/b902fbf38adfeb66aff351adf71388a1.json", {
onProgress: UnityProgress,
compatibilityCheck: function (gameInstance, onsuccess, onerror) {
if (!UnityLoader.SystemInfo.hasWebGL) {
gameInstance.popup("Your browser does not support WebGL",
[{text: "OK", callback: onerror}]);
} else if (["Edge", "Firefox", "Chrome", "Safari"].indexOf(UnityLoader.SystemInfo.browser) == -1) {
gameInstance.popup("Please note that your browser is not currently supported for this Unity WebGL content. Press OK if you wish to continue anyway.",
[{text: "OK", callback: onsuccess}]);
} else {
UI.init(document.body, function(){
Stats.Loading.term();
});
Stats.Loading.init(gameInstance.Module);
onsuccess();
}
},
Module : {
cacheControl: {"default": "immutable"},
wasmRequest: function (wasmInstantiate, callback) {
var wasmInstantiation = null;
if (this.wasmCache) {
this.wasmCache.request = {
wasmInstantiate: function(moduleOrBinary){
return new Promise(function(success){
wasmInstantiation = new Timer("WebAssembly Instantiation");
Stats.Loading.timers.push(wasmInstantiation);
wasmInstantiate(moduleOrBinary).then(function(result){
wasmInstantiation.stop();
success(result);
});
});
},
callback: callback
};
this.wasmCache.update();
} else {
wasmInstantiation = new Timer("WebAssembly Instantiation");
Stats.Loading.timers.push(wasmInstantiation);
wasmInstantiate(this.wasmBinary).then(function (result) {
wasmInstantiation.stop();
callback(result.instance);
});
}
},
onRuntimeInitialized: function () {
Module = this;
var engineInitialization = new Timer("Engine Initialization");
Stats.Loading.timers.push(engineInitialization);
Stats.Memory.init(Module.TOTAL_MEMORY);
Module.postRun.unshift(function () {
var savedReallocBuffer = Module.reallocBuffer;
Module.reallocBuffer = function(size) {
var retValue = savedReallocBuffer(size);
// TODO: notify runtime about heap resize
return retValue;
}
engineInitialization.stop();
});
}
}
});
</script>
</head>
<body style="background-color: black">
<div class="webgl-content">
<div id="gameContainer" style="width: 1280px; height: 720px"></div>
</div>
<script>
var startLoadingTime = Date.now();
var timeToLoad = 0;
var timeToStableFPS = 0;
var lastFrame = 0;
function SampleFrame() {
var curTime = Date.now();
if (timeToLoad == 0) {
timeToLoad = curTime - startLoadingTime;
timeToScreen.stop();
console.log ("Loading took " + timeToLoad + "ms");
// LoadingTimes.element.innerText += "\nTime to first frame: " + (curTime - LoadingTimes.wasmDownloadEndTime);
}
if (timeToStableFPS == 0) {
var frameTime = curTime - lastFrame;
if (frameTime < 55) {
timeToStableFPS = curTime - startLoadingTime - timeToLoad;
timeToInteractive.stop();
Stats.Loading.term();
console.log ("Stabilizing took " + timeToStableFPS + "ms");
// LoadingTimes.element.innerText += "\nTime to interactive: " + (curTime - LoadingTimes.wasmDownloadEndTime);
}
lastFrame = curTime;
}
}
</script>
</body>
</html>