'use strict';var GLBench=function(){class l{constructor(a,b={}){this.css="#gl-bench { position:absolute; left:0; top:0; z-index:1000; -webkit-user-select: none; -moz-user-select: none; user-select: none; } #gl-bench div { position: relative; display: block; margin: 4px; padding: 0 7px 0 10px; background: #6c6; border-radius: 15px; cursor: pointer; opacity: 0.9; } #gl-bench svg { height: 60px; margin: 0 -1px; } #gl-bench text { font-size: 12px; font-family: Helvetica,Arial,sans-serif; font-weight: 700; dominant-baseline: middle; text-anchor: middle; } #gl-bench .gl-mem { font-size: 9px; } #gl-bench line { stroke-width: 5; stroke: #112211; stroke-linecap: round; } #gl-bench polyline { fill: none; stroke: #112211; stroke-linecap: round; stroke-linejoin: round; stroke-width: 3.5; } #gl-bench rect { fill: #448844; } #gl-bench .opacity { stroke: #448844; } ";
this.svg='
';
this.paramLogger=()=>{};this.chartLogger=()=>{};this.chartHz=this.chartLen=20;this.names=[];this.cpuAccums=[];this.gpuAccums=[];this.activeAccums=[];this.chart=Array(this.chartLen);this.now=()=>performance&&performance.now?performance.now():Date.now();this.updateUI=()=>{[].forEach.call(this.nodes["gl-gpu-svg"],a=>{a.style.display=this.trackGPU?"inline":"none"})};Object.assign(this,b);this.detected=0;this.finished=[];this.frameId=this.isFramebuffer=0;let e,c=0,f,g=a=>{20>++c?e=requestAnimationFrame(g):
(this.detected=Math.ceil(1E3*c/(a-f)/70),cancelAnimationFrame(e));f||(f=a)};requestAnimationFrame(g);if(a){let b=async(b,c)=>Promise.resolve(setTimeout(()=>{a.getError();const d=this.now()-b;c.forEach((a,b)=>{a&&(this.gpuAccums[b]+=d)})},0)),c=(a,c,d)=>function(){const n=c.now();a.apply(d,arguments);c.trackGPU&&c.finished.push(b(n,c.activeAccums.slice(0)))};"drawArrays drawElements drawArraysInstanced drawBuffers drawElementsInstanced drawRangeElements".split(" ").forEach(b=>{a[b]&&(a[b]=c(a[b],this,
a))});a.getExtension=((b,f)=>function(){let d=b.apply(a,arguments);d&&["drawElementsInstancedANGLE","drawBuffersWEBGL"].forEach(a=>{d[a]&&(d[a]=c(d[a],f,d))});return d})(a.getExtension,this)}this.withoutUI||(this.dom||(this.dom=document.body),b=document.createElement("div"),b.id="gl-bench",this.dom.appendChild(b),this.dom.insertAdjacentHTML("afterbegin",'"),this.dom=b,this.dom.addEventListener("click",()=>{this.trackGPU=!this.trackGPU;this.updateUI()}),
this.paramLogger=((a,b,c)=>{let f="gl-cpu gl-gpu gl-mem gl-fps gl-gpu-svg gl-chart".split(" "),d=Object.assign({},f);f.forEach(a=>d[a]=b.getElementsByClassName(a));this.nodes=d;return(b,f,e,h,k,g,m)=>{d["gl-cpu"][b].style.strokeDasharray=(.27*f).toFixed(0)+" 100";d["gl-gpu"][b].style.strokeDasharray=(.27*e).toFixed(0)+" 100";d["gl-mem"][b].innerHTML=c[b]?c[b]:h?"mem: "+h.toFixed(0)+"mb":"";d["gl-fps"][b].innerHTML=k.toFixed(0)+" FPS";a(c[b],f,e,h,k,g,m)}})(this.paramLogger,this.dom,this.names),this.chartLogger=
((a,b)=>{let c={"gl-chart":b.getElementsByClassName("gl-chart")};return(b,d,f)=>{let e="",g=d.length;for(let a=0;a=this.frameId)this.paramFrame=this.frameId,this.paramTime=a;else{var b=a-this.paramTime;if(1E3<=b){var e=this.frameId-this.paramFrame,c=e/b*1E3;for(let a=0;a{this.gpuAccums[a]=0;this.finished=[]});
this.paramFrame=this.frameId;this.paramTime=a}}if(this.detected&&this.chartFrame)for(b=a-this.chartTime,e=this.chartHz*b/1E3;0<--e&&this.detected;){this.chart[this.circularId%this.chartLen]=(this.frameId-this.chartFrame)/b*1E3;for(c=0;c