3 lines
2.5 KiB
JavaScript
3 lines
2.5 KiB
JavaScript
const d=self;let o,_,x,g,W;async function B(r){const e=new URL(r,d.location.origin).href,s=await import(new URL("nvsim-pkg/nvsim.js",e).href);await s.default(),o=s.WasmPipeline,_=s.referenceSceneJson,x=s.expectedReferenceWitnessHex,g=s.hexWitness,W=s.referenceWitness}let a=null,p="",b="",F=BigInt(3405691582),m=!1,l=null,i=0,w=0;function f(){b||(b=_()),p||(p=JSON.stringify({digitiser:{f_s_hz:1e4,f_mod_hz:1e3},sensor:{gamma_fwhm_hz:1e6,t1_s:.005,t2_s:1e-6,t2_star_s:2e-7,contrast:.03,n_spins:1e12,shot_noise_disabled:!1},dt_s:null})),a?.free?.(),a=new o(b,p,Number(F&0xFFFFFFFFn))}function t(r,e=[]){d.postMessage(r,e)}function S(){if(l!==null)return;w=performance.now(),i=0;const r=()=>{if(!m||!a)return;const e=32,n=a.run(e);i+=e;const s=(performance.now()-w)/1e3,c=s>0?i/s:0;t({type:"frames",batch:n.buffer,count:e,fps:c,framesEmitted:i},[n.buffer]),l=d.setTimeout(r,16)};l=d.setTimeout(r,0)}function h(){l!==null&&(d.clearTimeout(l),l=null)}d.addEventListener("message",async r=>{const e=r.data;try{switch(e.type){case"boot":{const n=e.base??"/";await B(n),f(),t({type:"booted",id:e.id,buildVersion:o.buildVersion(),frameMagic:o.frameMagic(),frameBytes:o.frameBytes(),expectedWitnessHex:x()});break}case"setScene":{b=e.json,f(),t({type:"ack",id:e.id});break}case"setConfig":{p=e.json,f(),t({type:"ack",id:e.id});break}case"setSeed":{F=BigInt(e.seed),f(),t({type:"ack",id:e.id});break}case"reset":{h(),m=!1,f(),i=0,t({type:"ack",id:e.id}),t({type:"state",running:!1,framesEmitted:i});break}case"run":{a||f(),m=!0,S(),t({type:"ack",id:e.id}),t({type:"state",running:!0,framesEmitted:i});break}case"pause":{m=!1,h(),t({type:"ack",id:e.id}),t({type:"state",running:!1,framesEmitted:i});break}case"step":{a||f();const n=a.run(1);i+=1,t({type:"frames",batch:n.buffer,count:1,fps:0,framesEmitted:i},[n.buffer]),t({type:"ack",id:e.id});break}case"witnessGenerate":{a||f();const n=e.samples??256,s=a.runWithWitness(n),c=g(s.witness);t({type:"witness",id:e.id,witness:s.witness.buffer,hex:c,frameCount:s.frameCount},[s.witness.buffer]);break}case"witnessVerify":{const n=e.expected,s=new Uint8Array(n),c=W();let y=c.length===s.length;if(y){for(let u=0;u<s.length;u++)if(c[u]!==s[u]){y=!1;break}}const k=c.slice().buffer;t({type:"verify",id:e.id,ok:y,actual:k,actualHex:g(c)},[k]);break}case"buildId":{t({type:"buildId",id:e.id,buildId:`nvsim@${o.buildVersion()}`});break}default:t({type:"err",id:e.id,msg:`unknown op ${e.type}`})}}catch(n){t({type:"err",id:e.id,msg:n.message??String(n)})}});t({type:"ready"});
|
|
//# sourceMappingURL=worker-BW0kLvYS.js.map
|