typegpu 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.cjs CHANGED
@@ -1,26 +1,26 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk3QXCKMEJcjs = require('./chunk-3QXCKMEJ.cjs');var _chunk3JTP2ATRcjs = require('./chunk-3JTP2ATR.cjs');var _chunkQRLTUOBJcjs = require('./chunk-QRLTUOBJ.cjs');var Mn=["vec2f","vec2h","vec2i","vec2u","vec3f","vec3h","vec3i","vec3u","vec4f","vec4h","vec4i","vec4u","struct"],Nn={f:{1:_chunkQRLTUOBJcjs.N,2:_chunkQRLTUOBJcjs.s,3:_chunkQRLTUOBJcjs.w,4:_chunkQRLTUOBJcjs.A},h:{1:_chunkQRLTUOBJcjs.O,2:_chunkQRLTUOBJcjs.t,3:_chunkQRLTUOBJcjs.x,4:_chunkQRLTUOBJcjs.B},i:{1:_chunkQRLTUOBJcjs.M,2:_chunkQRLTUOBJcjs.u,3:_chunkQRLTUOBJcjs.y,4:_chunkQRLTUOBJcjs.C},u:{1:_chunkQRLTUOBJcjs.L,2:_chunkQRLTUOBJcjs.v,3:_chunkQRLTUOBJcjs.z,4:_chunkQRLTUOBJcjs.D}},Or={vec2f:_chunkQRLTUOBJcjs.s,vec2h:_chunkQRLTUOBJcjs.t,vec2i:_chunkQRLTUOBJcjs.u,vec2u:_chunkQRLTUOBJcjs.v,vec3f:_chunkQRLTUOBJcjs.w,vec3h:_chunkQRLTUOBJcjs.x,vec3i:_chunkQRLTUOBJcjs.y,vec3u:_chunkQRLTUOBJcjs.z,vec4f:_chunkQRLTUOBJcjs.A,vec4h:_chunkQRLTUOBJcjs.B,vec4i:_chunkQRLTUOBJcjs.C,vec4u:_chunkQRLTUOBJcjs.D,mat2x2f:_chunkQRLTUOBJcjs.E,mat3x3f:_chunkQRLTUOBJcjs.F,mat4x4f:_chunkQRLTUOBJcjs.G},kr={vec2f:_chunkQRLTUOBJcjs.N,vec2h:_chunkQRLTUOBJcjs.O,vec2i:_chunkQRLTUOBJcjs.M,vec2u:_chunkQRLTUOBJcjs.L,vec3f:_chunkQRLTUOBJcjs.N,vec3h:_chunkQRLTUOBJcjs.O,vec3i:_chunkQRLTUOBJcjs.M,vec3u:_chunkQRLTUOBJcjs.L,vec4f:_chunkQRLTUOBJcjs.N,vec4h:_chunkQRLTUOBJcjs.O,vec4i:_chunkQRLTUOBJcjs.M,vec4u:_chunkQRLTUOBJcjs.L,mat2x2f:_chunkQRLTUOBJcjs.s,mat3x3f:_chunkQRLTUOBJcjs.w,mat4x4f:_chunkQRLTUOBJcjs.A};function Ce(e,t){var o;if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")return _chunk3JTP2ATRcjs.f;if(_chunk3JTP2ATRcjs.c.call(void 0, e)||_chunk3JTP2ATRcjs.b.call(void 0, e)){let i=_chunkQRLTUOBJcjs.m.call(void 0, );if(!i)throw new Error("Resolution context not found when unwrapping slot or derived");let s=i.unwrap(e);return we(s)}let r=e;for(_chunk3JTP2ATRcjs.l.call(void 0, r)&&(r=r[_chunk3JTP2ATRcjs.a].dataType);_chunkQRLTUOBJcjs.da.call(void 0, r);)r=r.inner;let n="kind"in r?r.kind:r.type;if(n==="struct")return(o=r.propTypes[t])!=null?o:_chunk3JTP2ATRcjs.f;let a=t.length;if(Mn.includes(n)&&a>=1&&a<=4){let i=n[4],s=Nn[i][a];if(s)return s}return _chunkQRLTUOBJcjs.V.call(void 0, r)?r:_chunk3JTP2ATRcjs.f}function Wr(e){if(_chunkQRLTUOBJcjs.V.call(void 0, e)){if(_chunkQRLTUOBJcjs.W.call(void 0, e))return e.elementType;if(e.type in kr)return kr[e.type]}return _chunk3JTP2ATRcjs.f}function we(e){var t,r;if(_chunk3JTP2ATRcjs.c.call(void 0, e)||_chunk3JTP2ATRcjs.b.call(void 0, e))return we(e.value);if(typeof e=="string")return _chunk3JTP2ATRcjs.f;if(typeof e=="number")return(r=(t=Lt(String(e)))==null?void 0:t.dataType)!=null?r:_chunk3JTP2ATRcjs.f;if(typeof e=="boolean")return _chunkQRLTUOBJcjs.K;if("kind"in e){let n=e.kind;if(n in Or)return Or[n]}return _chunkQRLTUOBJcjs.V.call(void 0, e)?e:_chunk3JTP2ATRcjs.f}function Lt(e){if(/^0x[0-9a-f]+$/i.test(e))return{value:e,dataType:_chunkQRLTUOBJcjs.I};if(/^0b[01]+$/i.test(e))return{value:`${Number.parseInt(e.slice(2),2)}`,dataType:_chunkQRLTUOBJcjs.I};if(/^-?(?:\d+\.\d*|\d*\.\d+)$/i.test(e))return{value:e,dataType:_chunkQRLTUOBJcjs.J};if(/^-?\d+(?:\.\d+)?e-?\d+$/i.test(e))return{value:e,dataType:_chunkQRLTUOBJcjs.J};if(/^-?\d+$/i.test(e))return{value:e,dataType:_chunkQRLTUOBJcjs.I}}var M={get(e,t){if(t in e)return Reflect.get(e,t);if(t!=="~providing")return t==="toString"||t===Symbol.toStringTag||t===Symbol.toPrimitive?()=>e.toString():new Proxy({"~resolve":r=>`${r.resolve(e)}.${String(t)}`,toString:()=>{var r;return`.value(...).${String(t)}:${(r=e.label)!=null?r:"<unnamed>"}`},[_chunk3JTP2ATRcjs.a]:{dataType:Ce(e[_chunk3JTP2ATRcjs.a].dataType,String(t))}},M)}};function Ee(e){let t=e;for(;_chunk3JTP2ATRcjs.b.call(void 0, t)||_chunk3JTP2ATRcjs.c.call(void 0, t)||_chunk3JTP2ATRcjs.e.call(void 0, t)||_chunk3JTP2ATRcjs.k.call(void 0, t);)t=t.value;return t}function Nr(e,t){return new Ct(e,t)}var Mr;Mr=_chunk3JTP2ATRcjs.a;var Ct=class{constructor(t,r){this.dataType=t;this._value=r;_chunkQRLTUOBJcjs.c.call(void 0, this,"_label");_chunkQRLTUOBJcjs.c.call(void 0, this,Mr);this[_chunk3JTP2ATRcjs.a]={dataType:t}}get label(){return this._label}$name(t){return this._label=t,this}"~resolve"(t){let r=t.names.makeUnique(this._label),n=t.resolveValue(this._value,this.dataType);return t.addDeclaration(`const ${r} = ${n};`),r}toString(){var t;return`const:${(t=this.label)!=null?t:"<unnamed>"}`}get value(){return _chunkQRLTUOBJcjs.p.call(void 0, )?new Proxy({"~resolve":t=>t.resolve(this),toString:()=>{var t;return`.value:${(t=this.label)!=null?t:"<unnamed>"}`},[_chunk3JTP2ATRcjs.a]:{dataType:this.dataType}},M):this._value}};function N(e){return!!e&&(typeof e=="object"||typeof e=="function")&&"$name"in e}function pe(e,t){for(let[r,n]of Object.entries(t))e[r]=n,N(n)&&(!("label"in n)||n.label===void 0)&&n.$name(r)}function zr(e,t,r){let n=[...e.matchAll(new RegExp(":\\s*(?<arg>.*?)\\s*[,)]","g"))].map(a=>a?a[1]:void 0);r(Object.fromEntries(t.flatMap((a,o)=>{let i=n?n[o]:void 0;return _chunkQRLTUOBJcjs.X.call(void 0, a)&&i!==void 0?[[i,a]]:[]})))}function Se(e,t,r){var o;let n=e.match(new RegExp("->(?<output>.*?){","s")),a=n?(o=n[1])==null?void 0:o.trim():void 0;_chunkQRLTUOBJcjs.X.call(void 0, t)&&a&&!/\s/g.test(a)&&r({[a]:t})}function zn(e){return new RegExp(`(?<![\\w_.])${e.replaceAll(".","\\.")}(?![\\w_])`,"g")}function le(e,t,r){return Object.entries(t).reduce((n,[a,o])=>{var i;return _chunk3JTP2ATRcjs.i.call(void 0, o)||_chunk3QXCKMEJcjs.c.call(void 0, o)?n.replaceAll(zn(a),e.resolve(o)):o!==null&&typeof o=="object"?((i=[...r.matchAll(new RegExp(`${a.replaceAll(".","\\.")}\\.(?<prop>.*?)(?![\\w_])`,"g"))].map(l=>l[1]))!=null?i:[]).reduce((l,u)=>u&&u in o?le(e,{[`${a}.${u}`]:o[u]},l):l,n):n},r)}function jr(e){return new Et(e)}var Et=class{constructor(t){this.declaration=t;_chunkQRLTUOBJcjs.c.call(void 0, this,"externalsToApply",[])}$uses(t){return this.externalsToApply.push(t),this}"~resolve"(t){let r={};for(let a of this.externalsToApply)pe(r,a);let n=le(t,r,this.declaration);return t.addDeclaration(n),""}toString(){return`declare: ${this.declaration}`}};var Kr=new WeakMap;function qr(e){return Kr.get(e)}function Jr(e,t,r){return Kr.set(e,{ast:t,externals:r}),e}function ee(e,t){let r=[];return typeof t=="string"&&(zr(t,e.argTypes,n=>r.push(n)),Se(t,e.returnType,n=>r.push(n))),{label:void 0,applyExternals(n){r.push(n)},resolve(n,a=""){var s;let o={};for(let l of r)pe(o,l);let i=n.names.makeUnique(this.label);if(typeof t=="string"){let l=le(n,o,t.trim());n.addDeclaration(`${a}fn ${i}${l}`)}else{let l=qr(t);if(l!=null&&l.externals){let y=Object.fromEntries(Object.entries(l.externals).filter(([T])=>!(T in o)));pe(o,y)}let u=(s=l==null?void 0:l.ast)!=null?s:n.transpileFn(String(t)),m=u.externalNames.filter(y=>!(y in o));if(m.length>0)throw new (0, _chunkQRLTUOBJcjs.h)(this.label,m);let f=u.argNames.map((y,T)=>({value:y,dataType:e.argTypes[T]})),{head:g,body:w}=n.fnToWgsl({args:f,returnType:e.returnType,body:u.body,externalMap:o});n.addDeclaration(`${a}fn ${i}${n.resolve(g)}${n.resolve(w)}`)}return i}}}function Hr(e){let t=0;return Object.fromEntries(Object.entries(e).map(([r,n])=>{if(_chunk3QXCKMEJcjs.ta.call(void 0, n))return[r,n];let a=_chunk3QXCKMEJcjs.g.call(void 0, n);return a!==void 0?(t=a+1,[r,n]):[r,_chunk3QXCKMEJcjs.oa.call(void 0, n,{type:"@location",value:t++})]}))}function rt(e){return _chunk3QXCKMEJcjs.h.call(void 0, e)?_chunk3QXCKMEJcjs.g.call(void 0, e)!==void 0?e:_chunk3QXCKMEJcjs.ra.call(void 0, 0,e):_chunk3QXCKMEJcjs.i.call(void 0, Hr(e))}function De(e){return _chunk3QXCKMEJcjs.i.call(void 0, Hr(e))}function Yr(e){var t,r,n,a;return{argTypes:[De((t=e.in)!=null?t:{})],returnType:void 0,workgroupSize:[(r=e.workgroupSize[0])!=null?r:1,(n=e.workgroupSize[1])!=null?n:1,(a=e.workgroupSize[2])!=null?a:1],does(o){return jn(this,e.workgroupSize,o)}}}function jn(e,t,r){let n=ee(e,r),a=e.argTypes[0];return{shell:e,get label(){return n.label},$uses(o){return n.applyExternals(o),this},$name(o){return n.label=o,N(a)&&a.$name(`${o}_Input`),this},"~resolve"(o){return n.resolve(o,`@compute @workgroup_size(${t.join(", ")}) `)},toString(){var o;return`computeFn:${(o=this.label)!=null?o:"<unnamed>"}`}}}function Qr(e,t){return{argTypes:e,returnType:t,does(r){return qn(this,r)}}}function Vt(e){return(e==null?void 0:e.resourceType)==="function"}function Kn([e,t]){var r;return`${(r=e.label)!=null?r:"<unnamed>"}=${t}`}function qn(e,t){let r=ee(e,t),n={shell:e,resourceType:"function",$uses(i){return r.applyExternals(i),this},$name(i){return r.label=i,this},with(i,s){return Xr(o,[[_chunk3JTP2ATRcjs.e.call(void 0, i)?i.slot:i,s]])},"~resolve"(i){return r.resolve(i)}},a=_chunkQRLTUOBJcjs.r.call(void 0, (...i)=>{if(typeof t=="string")throw new Error("Cannot execute on the CPU functions constructed with raw WGSL");return t(...i)},(...i)=>{var s;return{value:new nt(o,i.map(l=>l.value)),dataType:(s=e.returnType)!=null?s:_chunk3JTP2ATRcjs.f}});Object.defineProperty(a,_chunk3JTP2ATRcjs.a,{value:{implementation:t}});let o=Object.assign(a,n);return Object.defineProperty(o,"label",{get:()=>r.label}),Object.defineProperty(o,"toString",{value:()=>{var i;return`fn:${(i=r.label)!=null?i:"<unnamed>"}`}}),o}function Xr(e,t){let r={resourceType:"function",shell:e.shell,"~providing":{inner:e,pairs:t},$uses(o){return e.$uses(o),this},$name(o){return e.$name(o),this},with(o,i){return Xr(a,[...t,[_chunk3JTP2ATRcjs.e.call(void 0, o)?o.slot:o,i]])}},n=_chunkQRLTUOBJcjs.r.call(void 0, (...o)=>e(...o),(...o)=>{var i;return{value:new nt(a,o.map(s=>s.value)),dataType:(i=e.shell.returnType)!=null?i:_chunk3JTP2ATRcjs.f}}),a=Object.assign(n,r);return Object.defineProperty(a,"label",{get:()=>e.label}),Object.defineProperty(a,"toString",{value(){var i;return`fn:${(i=e.label)!=null?i:"<unnamed>"}[${t.map(Kn).join(", ")}]`}}),Object.defineProperty(a,_chunk3JTP2ATRcjs.a,{value:{implementation:e[_chunk3JTP2ATRcjs.a].implementation}}),a}var nt=class{constructor(t,r){this._fn=t;this._params=r}get label(){return this._fn.label}"~resolve"(t){return t.resolve(`${t.resolve(this._fn)}(${this._params.map(r=>t.resolve(r)).join(", ")})`)}toString(){var t;return`call:${(t=this.label)!=null?t:"<unnamed>"}`}};function Zr(e){var t;return{argTypes:[De((t=e.in)!=null?t:{})],targets:e.out,returnType:rt(e.out),does(r){return Jn(this,r)}}}function Jn(e,t){let r=ee(e,t),n=e.returnType,a=e.argTypes[0];return typeof t=="string"&&Se(t,n,i=>r.applyExternals(i)),{shell:e,outputType:n,get label(){return r.label},$uses(i){return r.applyExternals(i),this},$name(i){return r.label=i,N(n)&&n.$name(`${i}_Output`),N(a)&&a.$name(`${i}_Input`),this},"~resolve"(i){if(typeof t=="string")return r.resolve(i,"@fragment ");let s=i;if(s.callStack===void 0)throw new Error("Cannot resolve a TGSL function outside of a generation context");try{return s.callStack.push(n),r.resolve(i,"@fragment ")}finally{s.callStack.pop()}},toString(){var i;return`fragmentFn:${(i=this.label)!=null?i:"<unnamed>"}`}}}function en(e){var t,r;return{attributes:[(t=e.in)!=null?t:{}],returnType:rt(e.out),argTypes:[De((r=e.in)!=null?r:{})],does(n){return Hn(this,n)}}}function Hn(e,t){let r=ee(e,t),n=e.returnType,a=e.argTypes[0];return typeof t=="string"&&Se(t,n,o=>r.applyExternals(o)),{shell:e,outputType:n,inputType:a,get label(){return r.label},$uses(o){return r.applyExternals(o),this},$name(o){return r.label=o,N(n)&&n.$name(`${o}_Output`),N(a)&&a.$name(`${o}_Input`),this},"~resolve"(o){if(typeof t=="string")return r.resolve(o,"@vertex ");let i=o;if(i.callStack===void 0)throw new Error("Cannot resolve a TGSL function outside of a generation context");try{return i.callStack.push(n),r.resolve(o,"@vertex ")}finally{i.callStack.pop()}},toString(){var o;return`vertexFn:${(o=this.label)!=null?o:"<unnamed>"}`}}}var te=class{constructor(){_chunkQRLTUOBJcjs.c.call(void 0, this,"lastUniqueId",0)}makeUnique(t){let r;return t?(r=t.replaceAll(/\s/g,"_"),r=r.replaceAll(/[^\w\d]/g,"")):r="item",`${r}_${this.lastUniqueId++}`}},re= exports.StrictNameRegistry =class{constructor(){_chunkQRLTUOBJcjs.c.call(void 0, this,"_usedNames",new Set)}makeUnique(t){if(t===void 0)throw new Error("Unnamed item found when using a strict name registry");let r=0,n=t;for(;this._usedNames.has(n);)r++,n=`${t}_${r}`;return this._usedNames.add(n),n}};function tn(e,t){throw new Error(`Failed to handle ${e} at ${t}`)}function Ve(e){return typeof(e==null?void 0:e.format)=="string"}function rn(e,t){var i,s;let r=[];if(_chunk3QXCKMEJcjs.h.call(void 0, e)){if(!Ve(t))throw new Error("Shader expected a single attribute, not a record of attributes to be passed in.");return r.push(t._layout),{usedVertexLayouts:r,bufferDefinitions:[{arrayStride:t._layout.stride,stepMode:t._layout.stepMode,attributes:[{format:t.format,offset:t.offset,shaderLocation:(i=_chunk3QXCKMEJcjs.g.call(void 0, e))!=null?i:0}]}]}}let n=[],a=new WeakMap,o=0;for(let[l,u]of Object.entries(e)){if(_chunk3QXCKMEJcjs.ta.call(void 0, u))continue;let m=t[l];if(!m)throw new Error(`An attribute by the name of '${l}' was not provided to the shader.`);let f=m._layout,g=a.get(f);g||(r.push(f),g=[],n.push({arrayStride:f.stride,stepMode:f.stepMode,attributes:g}),a.set(f,g)),o=(s=_chunk3QXCKMEJcjs.g.call(void 0, u))!=null?s:o,g.push({format:m.format,offset:m.offset,shaderLocation:o++})}return{usedVertexLayouts:r,bufferDefinitions:n}}var Yn=["bool","f32","f16","i32","u32","vec2f","vec3f","vec4f","vec2h","vec3h","vec4h","vec2i","vec3i","vec4i","vec2u","vec3u","vec4u","mat2x2f","mat3x3f","mat4x4f"];function Qn(e){return Yn.includes(e.type)}function Gt(e,[t,r]){return` ${_chunk3QXCKMEJcjs.ua.call(void 0, r)}${t}: ${e.resolve(r)},
2
- `}function Xn(e,t){let r=e.names.makeUnique(t.label);return e.addDeclaration(`
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk3QXCKMEJcjs = require('./chunk-3QXCKMEJ.cjs');var _chunk3JTP2ATRcjs = require('./chunk-3JTP2ATR.cjs');var _chunkQRLTUOBJcjs = require('./chunk-QRLTUOBJ.cjs');var Nn=["vec2f","vec2h","vec2i","vec2u","vec3f","vec3h","vec3i","vec3u","vec4f","vec4h","vec4i","vec4u","struct"],zn={f:{1:_chunkQRLTUOBJcjs.N,2:_chunkQRLTUOBJcjs.s,3:_chunkQRLTUOBJcjs.w,4:_chunkQRLTUOBJcjs.A},h:{1:_chunkQRLTUOBJcjs.O,2:_chunkQRLTUOBJcjs.t,3:_chunkQRLTUOBJcjs.x,4:_chunkQRLTUOBJcjs.B},i:{1:_chunkQRLTUOBJcjs.M,2:_chunkQRLTUOBJcjs.u,3:_chunkQRLTUOBJcjs.y,4:_chunkQRLTUOBJcjs.C},u:{1:_chunkQRLTUOBJcjs.L,2:_chunkQRLTUOBJcjs.v,3:_chunkQRLTUOBJcjs.z,4:_chunkQRLTUOBJcjs.D}},kr={vec2f:_chunkQRLTUOBJcjs.s,vec2h:_chunkQRLTUOBJcjs.t,vec2i:_chunkQRLTUOBJcjs.u,vec2u:_chunkQRLTUOBJcjs.v,vec3f:_chunkQRLTUOBJcjs.w,vec3h:_chunkQRLTUOBJcjs.x,vec3i:_chunkQRLTUOBJcjs.y,vec3u:_chunkQRLTUOBJcjs.z,vec4f:_chunkQRLTUOBJcjs.A,vec4h:_chunkQRLTUOBJcjs.B,vec4i:_chunkQRLTUOBJcjs.C,vec4u:_chunkQRLTUOBJcjs.D,mat2x2f:_chunkQRLTUOBJcjs.E,mat3x3f:_chunkQRLTUOBJcjs.F,mat4x4f:_chunkQRLTUOBJcjs.G},Wr={vec2f:_chunkQRLTUOBJcjs.N,vec2h:_chunkQRLTUOBJcjs.O,vec2i:_chunkQRLTUOBJcjs.M,vec2u:_chunkQRLTUOBJcjs.L,vec3f:_chunkQRLTUOBJcjs.N,vec3h:_chunkQRLTUOBJcjs.O,vec3i:_chunkQRLTUOBJcjs.M,vec3u:_chunkQRLTUOBJcjs.L,vec4f:_chunkQRLTUOBJcjs.N,vec4h:_chunkQRLTUOBJcjs.O,vec4i:_chunkQRLTUOBJcjs.M,vec4u:_chunkQRLTUOBJcjs.L,mat2x2f:_chunkQRLTUOBJcjs.s,mat3x3f:_chunkQRLTUOBJcjs.w,mat4x4f:_chunkQRLTUOBJcjs.A};function Ce(e,t){var o;if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")return _chunk3JTP2ATRcjs.f;if(_chunk3JTP2ATRcjs.c.call(void 0, e)||_chunk3JTP2ATRcjs.b.call(void 0, e)){let i=_chunkQRLTUOBJcjs.m.call(void 0, );if(!i)throw new Error("Resolution context not found when unwrapping slot or derived");let s=i.unwrap(e);return we(s)}let r=e;for(_chunk3JTP2ATRcjs.l.call(void 0, r)&&(r=r[_chunk3JTP2ATRcjs.a].dataType);_chunkQRLTUOBJcjs.da.call(void 0, r);)r=r.inner;let n="kind"in r?r.kind:r.type;if(n==="struct")return(o=r.propTypes[t])!=null?o:_chunk3JTP2ATRcjs.f;let a=t.length;if(Nn.includes(n)&&a>=1&&a<=4){let i=n[4],s=zn[i][a];if(s)return s}return _chunkQRLTUOBJcjs.V.call(void 0, r)?r:_chunk3JTP2ATRcjs.f}function Mr(e){if(_chunkQRLTUOBJcjs.V.call(void 0, e)){if(_chunkQRLTUOBJcjs.W.call(void 0, e))return e.elementType;if(e.type in Wr)return Wr[e.type]}return _chunk3JTP2ATRcjs.f}function we(e){var t,r;if(_chunk3JTP2ATRcjs.c.call(void 0, e)||_chunk3JTP2ATRcjs.b.call(void 0, e))return we(e.value);if(typeof e=="string")return _chunk3JTP2ATRcjs.f;if(typeof e=="number")return(r=(t=Lt(String(e)))==null?void 0:t.dataType)!=null?r:_chunk3JTP2ATRcjs.f;if(typeof e=="boolean")return _chunkQRLTUOBJcjs.K;if("kind"in e){let n=e.kind;if(n in kr)return kr[n]}return _chunkQRLTUOBJcjs.V.call(void 0, e)?e:_chunk3JTP2ATRcjs.f}function Lt(e){if(/^0x[0-9a-f]+$/i.test(e))return{value:e,dataType:_chunkQRLTUOBJcjs.I};if(/^0b[01]+$/i.test(e))return{value:`${Number.parseInt(e.slice(2),2)}`,dataType:_chunkQRLTUOBJcjs.I};if(/^-?(?:\d+\.\d*|\d*\.\d+)$/i.test(e))return{value:e,dataType:_chunkQRLTUOBJcjs.J};if(/^-?\d+(?:\.\d+)?e-?\d+$/i.test(e))return{value:e,dataType:_chunkQRLTUOBJcjs.J};if(/^-?\d+$/i.test(e))return{value:e,dataType:_chunkQRLTUOBJcjs.I}}var M={get(e,t){if(t in e)return Reflect.get(e,t);if(t!=="~providing")return t==="toString"||t===Symbol.toStringTag||t===Symbol.toPrimitive?()=>e.toString():new Proxy({"~resolve":r=>`${r.resolve(e)}.${String(t)}`,toString:()=>{var r;return`.value(...).${String(t)}:${(r=e.label)!=null?r:"<unnamed>"}`},[_chunk3JTP2ATRcjs.a]:{dataType:Ce(e[_chunk3JTP2ATRcjs.a].dataType,String(t))}},M)}};function Ee(e){let t=e;for(;_chunk3JTP2ATRcjs.b.call(void 0, t)||_chunk3JTP2ATRcjs.c.call(void 0, t)||_chunk3JTP2ATRcjs.e.call(void 0, t)||_chunk3JTP2ATRcjs.k.call(void 0, t);)t=t.value;return t}function zr(e,t){return new Ct(e,t)}var Nr;Nr=_chunk3JTP2ATRcjs.a;var Ct=class{constructor(t,r){this.dataType=t;this._value=r;_chunkQRLTUOBJcjs.c.call(void 0, this,"_label");_chunkQRLTUOBJcjs.c.call(void 0, this,Nr);this[_chunk3JTP2ATRcjs.a]={dataType:t}}get label(){return this._label}$name(t){return this._label=t,this}"~resolve"(t){let r=t.names.makeUnique(this._label),n=t.resolveValue(this._value,this.dataType);return t.addDeclaration(`const ${r} = ${n};`),r}toString(){var t;return`const:${(t=this.label)!=null?t:"<unnamed>"}`}get value(){return _chunkQRLTUOBJcjs.p.call(void 0, )?new Proxy({"~resolve":t=>t.resolve(this),toString:()=>{var t;return`.value:${(t=this.label)!=null?t:"<unnamed>"}`},[_chunk3JTP2ATRcjs.a]:{dataType:this.dataType}},M):this._value}};function N(e){return!!e&&(typeof e=="object"||typeof e=="function")&&"$name"in e}function pe(e,t){for(let[r,n]of Object.entries(t))e[r]=n,N(n)&&(!("label"in n)||n.label===void 0)&&n.$name(r)}function jr(e,t,r){let n=[...e.matchAll(new RegExp(":\\s*(?<arg>.*?)\\s*[,)]","g"))].map(a=>a?a[1]:void 0);r(Object.fromEntries(t.flatMap((a,o)=>{let i=n?n[o]:void 0;return _chunkQRLTUOBJcjs.X.call(void 0, a)&&i!==void 0?[[i,a]]:[]})))}function Se(e,t,r){var o;let n=e.match(new RegExp("->(?<output>.*?){","s")),a=n?(o=n[1])==null?void 0:o.trim():void 0;_chunkQRLTUOBJcjs.X.call(void 0, t)&&a&&!/\s/g.test(a)&&r({[a]:t})}function jn(e){return new RegExp(`(?<![\\w_.])${e.replaceAll(".","\\.")}(?![\\w_])`,"g")}function le(e,t,r){return Object.entries(t).reduce((n,[a,o])=>{var i;return _chunk3JTP2ATRcjs.i.call(void 0, o)||_chunk3QXCKMEJcjs.c.call(void 0, o)?n.replaceAll(jn(a),e.resolve(o)):o!==null&&typeof o=="object"?((i=[...r.matchAll(new RegExp(`${a.replaceAll(".","\\.")}\\.(?<prop>.*?)(?![\\w_])`,"g"))].map(l=>l[1]))!=null?i:[]).reduce((l,u)=>u&&u in o?le(e,{[`${a}.${u}`]:o[u]},l):l,n):n},r)}function Kr(e){return new Et(e)}var Et=class{constructor(t){this.declaration=t;_chunkQRLTUOBJcjs.c.call(void 0, this,"externalsToApply",[])}$uses(t){return this.externalsToApply.push(t),this}"~resolve"(t){let r={};for(let a of this.externalsToApply)pe(r,a);let n=le(t,r,this.declaration);return t.addDeclaration(n),""}toString(){return`declare: ${this.declaration}`}};var qr=new WeakMap;function Jr(e){return qr.get(e)}function Hr(e,t,r){return qr.set(e,{ast:t,externals:r}),e}function ee(e,t){let r=[];return typeof t=="string"&&(jr(t,e.argTypes,n=>r.push(n)),Se(t,e.returnType,n=>r.push(n))),{label:void 0,applyExternals(n){r.push(n)},resolve(n,a=""){var s;let o={};for(let l of r)pe(o,l);let i=n.names.makeUnique(this.label);if(typeof t=="string"){let l=le(n,o,t.trim());n.addDeclaration(`${a}fn ${i}${l}`)}else{let l=Jr(t);if(l!=null&&l.externals){let y=Object.fromEntries(Object.entries(l.externals).filter(([T])=>!(T in o)));pe(o,y)}let u=(s=l==null?void 0:l.ast)!=null?s:n.transpileFn(String(t)),m=u.externalNames.filter(y=>!(y in o));if(m.length>0)throw new (0, _chunkQRLTUOBJcjs.h)(this.label,m);let f=u.argNames.map((y,T)=>({value:y,dataType:e.argTypes[T]})),{head:g,body:w}=n.fnToWgsl({args:f,returnType:e.returnType,body:u.body,externalMap:o});n.addDeclaration(`${a}fn ${i}${n.resolve(g)}${n.resolve(w)}`)}return i}}}function Yr(e){let t=0;return Object.fromEntries(Object.entries(e).map(([r,n])=>{if(_chunk3QXCKMEJcjs.ta.call(void 0, n))return[r,n];let a=_chunk3QXCKMEJcjs.g.call(void 0, n);return a!==void 0?(t=a+1,[r,n]):[r,_chunk3QXCKMEJcjs.oa.call(void 0, n,{type:"@location",value:t++})]}))}function rt(e){return _chunk3QXCKMEJcjs.h.call(void 0, e)?_chunk3QXCKMEJcjs.g.call(void 0, e)!==void 0?e:_chunk3QXCKMEJcjs.ra.call(void 0, 0,e):_chunk3QXCKMEJcjs.i.call(void 0, Yr(e))}function De(e){return _chunk3QXCKMEJcjs.i.call(void 0, Yr(e))}function Qr(e){var t,r,n,a;return{argTypes:[De((t=e.in)!=null?t:{})],returnType:void 0,workgroupSize:[(r=e.workgroupSize[0])!=null?r:1,(n=e.workgroupSize[1])!=null?n:1,(a=e.workgroupSize[2])!=null?a:1],does(o){return Kn(this,e.workgroupSize,o)}}}function Kn(e,t,r){let n=ee(e,r),a=e.argTypes[0];return{shell:e,get label(){return n.label},$uses(o){return n.applyExternals(o),this},$name(o){return n.label=o,N(a)&&a.$name(`${o}_Input`),this},"~resolve"(o){return n.resolve(o,`@compute @workgroup_size(${t.join(", ")}) `)},toString(){var o;return`computeFn:${(o=this.label)!=null?o:"<unnamed>"}`}}}function Xr(e,t){return{argTypes:e,returnType:t,does(r){return Jn(this,r)}}}function Vt(e){return(e==null?void 0:e.resourceType)==="function"}function qn([e,t]){var r;return`${(r=e.label)!=null?r:"<unnamed>"}=${t}`}function Jn(e,t){let r=ee(e,t),n={shell:e,resourceType:"function",$uses(i){return r.applyExternals(i),this},$name(i){return r.label=i,this},with(i,s){return Zr(o,[[_chunk3JTP2ATRcjs.e.call(void 0, i)?i.slot:i,s]])},"~resolve"(i){return r.resolve(i)}},a=_chunkQRLTUOBJcjs.r.call(void 0, (...i)=>{if(typeof t=="string")throw new Error("Cannot execute on the CPU functions constructed with raw WGSL");return t(...i)},(...i)=>{var s;return{value:new nt(o,i.map(l=>l.value)),dataType:(s=e.returnType)!=null?s:_chunk3JTP2ATRcjs.f}});Object.defineProperty(a,_chunk3JTP2ATRcjs.a,{value:{implementation:t}});let o=Object.assign(a,n);return Object.defineProperty(o,"label",{get:()=>r.label}),Object.defineProperty(o,"toString",{value:()=>{var i;return`fn:${(i=r.label)!=null?i:"<unnamed>"}`}}),o}function Zr(e,t){let r={resourceType:"function",shell:e.shell,"~providing":{inner:e,pairs:t},$uses(o){return e.$uses(o),this},$name(o){return e.$name(o),this},with(o,i){return Zr(a,[...t,[_chunk3JTP2ATRcjs.e.call(void 0, o)?o.slot:o,i]])}},n=_chunkQRLTUOBJcjs.r.call(void 0, (...o)=>e(...o),(...o)=>{var i;return{value:new nt(a,o.map(s=>s.value)),dataType:(i=e.shell.returnType)!=null?i:_chunk3JTP2ATRcjs.f}}),a=Object.assign(n,r);return Object.defineProperty(a,"label",{get:()=>e.label}),Object.defineProperty(a,"toString",{value(){var i;return`fn:${(i=e.label)!=null?i:"<unnamed>"}[${t.map(qn).join(", ")}]`}}),Object.defineProperty(a,_chunk3JTP2ATRcjs.a,{value:{implementation:e[_chunk3JTP2ATRcjs.a].implementation}}),a}var nt=class{constructor(t,r){this._fn=t;this._params=r}get label(){return this._fn.label}"~resolve"(t){return t.resolve(`${t.resolve(this._fn)}(${this._params.map(r=>t.resolve(r)).join(", ")})`)}toString(){var t;return`call:${(t=this.label)!=null?t:"<unnamed>"}`}};function en(e){var t;return{argTypes:[De((t=e.in)!=null?t:{})],targets:e.out,returnType:rt(e.out),does(r){return Hn(this,r)}}}function Hn(e,t){let r=ee(e,t),n=e.returnType,a=e.argTypes[0];return typeof t=="string"&&Se(t,n,i=>r.applyExternals(i)),{shell:e,outputType:n,get label(){return r.label},$uses(i){return r.applyExternals(i),this},$name(i){return r.label=i,N(n)&&n.$name(`${i}_Output`),N(a)&&a.$name(`${i}_Input`),this},"~resolve"(i){if(typeof t=="string")return r.resolve(i,"@fragment ");let s=i;if(s.callStack===void 0)throw new Error("Cannot resolve a TGSL function outside of a generation context");try{return s.callStack.push(n),r.resolve(i,"@fragment ")}finally{s.callStack.pop()}},toString(){var i;return`fragmentFn:${(i=this.label)!=null?i:"<unnamed>"}`}}}function tn(e){var t,r;return{attributes:[(t=e.in)!=null?t:{}],returnType:rt(e.out),argTypes:[De((r=e.in)!=null?r:{})],does(n){return Yn(this,n)}}}function Yn(e,t){let r=ee(e,t),n=e.returnType,a=e.argTypes[0];return typeof t=="string"&&Se(t,n,o=>r.applyExternals(o)),{shell:e,outputType:n,inputType:a,get label(){return r.label},$uses(o){return r.applyExternals(o),this},$name(o){return r.label=o,N(n)&&n.$name(`${o}_Output`),N(a)&&a.$name(`${o}_Input`),this},"~resolve"(o){if(typeof t=="string")return r.resolve(o,"@vertex ");let i=o;if(i.callStack===void 0)throw new Error("Cannot resolve a TGSL function outside of a generation context");try{return i.callStack.push(n),r.resolve(o,"@vertex ")}finally{i.callStack.pop()}},toString(){var o;return`vertexFn:${(o=this.label)!=null?o:"<unnamed>"}`}}}var te=class{constructor(){_chunkQRLTUOBJcjs.c.call(void 0, this,"lastUniqueId",0)}makeUnique(t){let r;return t?(r=t.replaceAll(/\s/g,"_"),r=r.replaceAll(/[^\w\d]/g,"")):r="item",`${r}_${this.lastUniqueId++}`}},re= exports.StrictNameRegistry =class{constructor(){_chunkQRLTUOBJcjs.c.call(void 0, this,"_usedNames",new Set)}makeUnique(t){if(t===void 0)throw new Error("Unnamed item found when using a strict name registry");let r=0,n=t;for(;this._usedNames.has(n);)r++,n=`${t}_${r}`;return this._usedNames.add(n),n}};function rn(e,t){throw new Error(`Failed to handle ${e} at ${t}`)}function Ve(e){return typeof(e==null?void 0:e.format)=="string"}function nn(e,t){var i,s;let r=[];if(_chunk3QXCKMEJcjs.h.call(void 0, e)){if(!Ve(t))throw new Error("Shader expected a single attribute, not a record of attributes to be passed in.");return r.push(t._layout),{usedVertexLayouts:r,bufferDefinitions:[{arrayStride:t._layout.stride,stepMode:t._layout.stepMode,attributes:[{format:t.format,offset:t.offset,shaderLocation:(i=_chunk3QXCKMEJcjs.g.call(void 0, e))!=null?i:0}]}]}}let n=[],a=new WeakMap,o=0;for(let[l,u]of Object.entries(e)){if(_chunk3QXCKMEJcjs.ta.call(void 0, u))continue;let m=t[l];if(!m)throw new Error(`An attribute by the name of '${l}' was not provided to the shader.`);let f=m._layout,g=a.get(f);g||(r.push(f),g=[],n.push({arrayStride:f.stride,stepMode:f.stepMode,attributes:g}),a.set(f,g)),o=(s=_chunk3QXCKMEJcjs.g.call(void 0, u))!=null?s:o,g.push({format:m.format,offset:m.offset,shaderLocation:o++})}return{usedVertexLayouts:r,bufferDefinitions:n}}var Qn=["bool","f32","f16","i32","u32","vec2f","vec3f","vec4f","vec2h","vec3h","vec4h","vec2i","vec3i","vec4i","vec2u","vec3u","vec4u","mat2x2f","mat3x3f","mat4x4f"];function Xn(e){return Qn.includes(e.type)}function Gt(e,[t,r]){return` ${_chunk3QXCKMEJcjs.ua.call(void 0, r)}${t}: ${e.resolve(r)},
2
+ `}function Zn(e,t){let r=e.names.makeUnique(t.label);return e.addDeclaration(`
3
3
  struct ${r} {
4
4
  ${Object.entries(t.propTypes).map(n=>Gt(e,n)).join("")}}
5
- `),r}function Zn(e,t){let r=e.names.makeUnique(t.label);return e.addDeclaration(`
5
+ `),r}function ea(e,t){let r=e.names.makeUnique(t.label);return e.addDeclaration(`
6
6
  struct ${r} {
7
7
  ${Object.entries(t.propTypes).map(n=>Ve(n[1])?Gt(e,[n[0],_chunk3QXCKMEJcjs.k[n[1].format]]):Gt(e,n)).join("")}
8
8
  }
9
- `),r}function ea(e,t){let r=e.resolve(t.elementType);return t.elementCount===0?`array<${r}>`:`array<${r}, ${t.elementCount}>`}function ta(e,t){let r=e.resolve(Ve(t.elementType)?_chunk3QXCKMEJcjs.k[t.elementType.format]:t.elementType);return t.elementCount===0?`array<${r}>`:`array<${r}, ${t.elementCount}>`}function $t(e,t){if(_chunk3QXCKMEJcjs.c.call(void 0, t))return t.type==="unstruct"?Zn(e,t):t.type==="disarray"?ta(e,t):t.type==="loose-decorated"?e.resolve(Ve(t.inner)?_chunk3QXCKMEJcjs.k[t.inner.format]:t.inner):e.resolve(_chunk3QXCKMEJcjs.k[t.type]);if(Qn(t))return t.type;if(t.type==="struct")return Xn(e,t);if(t.type==="array")return ea(e,t);if(t.type==="atomic")return`atomic<${$t(e,t.inner)}>`;if(t.type==="decorated")return e.resolve(t.inner);if(t.type==="ptr")return t.addressSpace==="storage"?`ptr<storage, ${e.resolve(t.inner)}, ${t.access==="read-write"?"read_write":t.access}>`:`ptr<${t.addressSpace}, ${e.resolve(t.inner)}>`;if(t.type==="abstractInt"||t.type==="abstractFloat")throw new Error("Abstract types have no concrete representation in WGSL");tn(t,"resolveData")}var na=["==","!=","<","<=",">",">=","<<",">>","+","-","*","/","%","|","^","&","&&","||"],aa=["&&","||","==","!=","<","<=",">",">="];function nn(e,t,r){return r?aa.includes(t)?_chunkQRLTUOBJcjs.K:t==="="?r:e:t==="!"||t==="~"?_chunkQRLTUOBJcjs.K:e}function U(e,t){return _chunk3JTP2ATRcjs.i.call(void 0, t.value)?e.resolve(t.value):String(t.value)}function oa(e){throw new Error(`'${JSON.stringify(e)}' was not handled by the WGSL generator.`)}function an(e,t){return{value:t?"true":"false",dataType:_chunkQRLTUOBJcjs.K}}function on(e,t){e.pushBlockScope();try{return`${e.indent()}{
9
+ `),r}function ta(e,t){let r=e.resolve(t.elementType);return t.elementCount===0?`array<${r}>`:`array<${r}, ${t.elementCount}>`}function ra(e,t){let r=e.resolve(Ve(t.elementType)?_chunk3QXCKMEJcjs.k[t.elementType.format]:t.elementType);return t.elementCount===0?`array<${r}>`:`array<${r}, ${t.elementCount}>`}function $t(e,t){if(_chunk3QXCKMEJcjs.c.call(void 0, t))return t.type==="unstruct"?ea(e,t):t.type==="disarray"?ra(e,t):t.type==="loose-decorated"?e.resolve(Ve(t.inner)?_chunk3QXCKMEJcjs.k[t.inner.format]:t.inner):e.resolve(_chunk3QXCKMEJcjs.k[t.type]);if(Xn(t))return t.type;if(t.type==="struct")return Zn(e,t);if(t.type==="array")return ta(e,t);if(t.type==="atomic")return`atomic<${$t(e,t.inner)}>`;if(t.type==="decorated")return e.resolve(t.inner);if(t.type==="ptr")return t.addressSpace==="storage"?`ptr<storage, ${e.resolve(t.inner)}, ${t.access==="read-write"?"read_write":t.access}>`:`ptr<${t.addressSpace}, ${e.resolve(t.inner)}>`;if(t.type==="abstractInt"||t.type==="abstractFloat")throw new Error("Abstract types have no concrete representation in WGSL");rn(t,"resolveData")}var aa=["==","!=","<","<=",">",">=","<<",">>","+","-","*","/","%","|","^","&","&&","||"],oa=["&&","||","==","!=","<","<=",">",">="];function an(e,t,r){return r?oa.includes(t)?_chunkQRLTUOBJcjs.K:t==="="?r:e:t==="!"||t==="~"?_chunkQRLTUOBJcjs.K:e}function U(e,t){return _chunk3JTP2ATRcjs.i.call(void 0, t.value)?e.resolve(t.value):String(t.value)}function ia(e){throw new Error(`'${JSON.stringify(e)}' was not handled by the WGSL generator.`)}function on(e,t){return{value:t?"true":"false",dataType:_chunkQRLTUOBJcjs.K}}function sn(e,t){e.pushBlockScope();try{return`${e.indent()}{
10
10
  ${t.b.map(r=>de(e,r)).join(`
11
11
  `)}
12
- ${e.dedent()}}`}finally{e.popBlockScope()}}function ia(e,t,r){return e.defineVariable(t,r)}function Ot(e,t){let r=e.getById(t);if(!r)throw new Error(`Identifier ${t} not found`);return r}function R(e,t){if(typeof t=="string")return Ot(e,t);if(typeof t=="boolean")return an(e,t);if("x"in t){let[r,n,a]=t.x,o=R(e,r),i=R(e,a),s=U(e,o),l=U(e,i),u=nn(o.dataType,n,i.dataType);return{value:na.includes(n)?`(${s} ${n} ${l})`:`${s} ${n} ${l}`,dataType:u}}if("p"in t){let[r,n]=t.p,a=R(e,n);return{value:`${U(e,a)}${r}`,dataType:a.dataType}}if("u"in t){let[r,n]=t.u,a=R(e,n),o=U(e,a),i=nn(a.dataType,r);return{value:`${r}${o}`,dataType:i}}if("a"in t){let[r,n]=t.a,a=R(e,r);if(typeof a.value=="string")return{value:`${a.value}.${n}`,dataType:Ce(a.dataType,n)};let o=a.value[n];if(_chunk3JTP2ATRcjs.i.call(void 0, a.value))return{value:o,dataType:Ce(a.value,n)};if(typeof a.value=="object"){let i=_chunk3JTP2ATRcjs.i.call(void 0, o)?we(o):_chunk3JTP2ATRcjs.f;return{value:o,dataType:i}}throw new Error(`Cannot access member ${n} of ${a.value}`)}if("i"in t){let[r,n]=t.i,a=R(e,r),o=R(e,n),i=U(e,a),s=U(e,o);return{value:`${i}[${s}]`,dataType:Wr(a.dataType)}}if("n"in t){let r=Lt(t.n);if(!r)throw new Error(`Invalid numeric literal ${t.n}`);return r}if("f"in t){let[r,n]=t.f,a=R(e,r),o=a.value;e.callStack.push(o);let s=n.map(u=>R(e,u)).map(u=>({value:U(e,u),dataType:u.dataType})),l=s.map(u=>u.value);return e.callStack.pop(),typeof o=="string"?{value:`${o}(${l.join(", ")})`,dataType:a.dataType}:_chunkQRLTUOBJcjs.X.call(void 0, o)?{value:`${e.resolve(o)}(${l.join(", ")})`,dataType:a.dataType}:o(...s)}if("o"in t){let r=t.o,n=e.callStack[e.callStack.length-1],a=o=>o.map(i=>{let s=R(e,i);return U(e,s)}).join(", ");if(_chunkQRLTUOBJcjs.X.call(void 0, n)){let i=Object.keys(n.propTypes).map(s=>{let l=r[s];if(l===void 0)throw new Error(`Missing property ${s} in object literal for struct ${n}`);return l});return{value:a(i),dataType:n}}return{value:a(Object.values(r)),dataType:_chunk3JTP2ATRcjs.f}}if("s"in t)throw new Error("Cannot use string literals in TGSL.");oa(t)}function de(e,t){if(typeof t=="string")return`${e.pre}${U(e,Ot(e,t))};`;if(typeof t=="boolean")return`${e.pre}${U(e,an(e,t))};`;if("r"in t){if(_chunkQRLTUOBJcjs.X.call(void 0, e.callStack[e.callStack.length-1])&&t.r!==null&&typeof t.r=="object"&&"o"in t.r){let r=U(e,R(e,t.r)),n=e.resolve(e.callStack[e.callStack.length-1]);return`${e.pre}return ${n}(${r});`}return t.r===null?`${e.pre}return;`:`${e.pre}return ${U(e,R(e,t.r))};`}if("q"in t){let[r,n,a]=t.q,o=U(e,R(e,r));e.indent();let i=de(e,n);e.dedent(),e.indent();let s=a?de(e,a):void 0;return e.dedent(),s?`${e.pre}if (${o})
12
+ ${e.dedent()}}`}finally{e.popBlockScope()}}function sa(e,t,r){return e.defineVariable(t,r)}function Ot(e,t){let r=e.getById(t);if(!r)throw new Error(`Identifier ${t} not found`);return r}function R(e,t){if(typeof t=="string")return Ot(e,t);if(typeof t=="boolean")return on(e,t);if("x"in t){let[r,n,a]=t.x,o=R(e,r),i=R(e,a),s=U(e,o),l=U(e,i),u=an(o.dataType,n,i.dataType);return{value:aa.includes(n)?`(${s} ${n} ${l})`:`${s} ${n} ${l}`,dataType:u}}if("p"in t){let[r,n]=t.p,a=R(e,n);return{value:`${U(e,a)}${r}`,dataType:a.dataType}}if("u"in t){let[r,n]=t.u,a=R(e,n),o=U(e,a),i=an(a.dataType,r);return{value:`${r}${o}`,dataType:i}}if("a"in t){let[r,n]=t.a,a=R(e,r);if(typeof a.value=="string")return{value:`${a.value}.${n}`,dataType:Ce(a.dataType,n)};let o=a.value[n];if(_chunk3JTP2ATRcjs.i.call(void 0, a.value))return{value:o,dataType:Ce(a.value,n)};if(typeof a.value=="object"){let i=_chunk3JTP2ATRcjs.i.call(void 0, o)?we(o):_chunk3JTP2ATRcjs.f;return{value:o,dataType:i}}throw new Error(`Cannot access member ${n} of ${a.value}`)}if("i"in t){let[r,n]=t.i,a=R(e,r),o=R(e,n),i=U(e,a),s=U(e,o);return{value:`${i}[${s}]`,dataType:Mr(a.dataType)}}if("n"in t){let r=Lt(t.n);if(!r)throw new Error(`Invalid numeric literal ${t.n}`);return r}if("f"in t){let[r,n]=t.f,a=R(e,r),o=a.value;e.callStack.push(o);let s=n.map(u=>R(e,u)).map(u=>({value:U(e,u),dataType:u.dataType})),l=s.map(u=>u.value);return e.callStack.pop(),typeof o=="string"?{value:`${o}(${l.join(", ")})`,dataType:a.dataType}:_chunkQRLTUOBJcjs.X.call(void 0, o)?{value:`${e.resolve(o)}(${l.join(", ")})`,dataType:a.dataType}:o(...s)}if("o"in t){let r=t.o,n=e.callStack[e.callStack.length-1],a=o=>o.map(i=>{let s=R(e,i);return U(e,s)}).join(", ");if(_chunkQRLTUOBJcjs.X.call(void 0, n)){let i=Object.keys(n.propTypes).map(s=>{let l=r[s];if(l===void 0)throw new Error(`Missing property ${s} in object literal for struct ${n}`);return l});return{value:a(i),dataType:n}}return{value:a(Object.values(r)),dataType:_chunk3JTP2ATRcjs.f}}if("s"in t)throw new Error("Cannot use string literals in TGSL.");ia(t)}function de(e,t){if(typeof t=="string")return`${e.pre}${U(e,Ot(e,t))};`;if(typeof t=="boolean")return`${e.pre}${U(e,on(e,t))};`;if("r"in t){if(_chunkQRLTUOBJcjs.X.call(void 0, e.callStack[e.callStack.length-1])&&t.r!==null&&typeof t.r=="object"&&"o"in t.r){let r=U(e,R(e,t.r)),n=e.resolve(e.callStack[e.callStack.length-1]);return`${e.pre}return ${n}(${r});`}return t.r===null?`${e.pre}return;`:`${e.pre}return ${U(e,R(e,t.r))};`}if("q"in t){let[r,n,a]=t.q,o=U(e,R(e,r));e.indent();let i=de(e,n);e.dedent(),e.indent();let s=a?de(e,a):void 0;return e.dedent(),s?`${e.pre}if (${o})
13
13
  ${i}
14
14
  ${e.pre}else
15
15
  ${s}`:`${e.pre}if (${o})
16
- ${i}`}if("l"in t||"c"in t){let[r,n]="l"in t?t.l:t.c,a=n?R(e,n):void 0;if(!a||!n)throw new Error("Cannot create variable without an initial value.");ia(e,r,a.dataType);let o=U(e,Ot(e,r));if(typeof n=="object"&&"o"in n&&_chunkQRLTUOBJcjs.X.call(void 0, e.callStack[e.callStack.length-1])){let i=e.resolve(e.callStack[e.callStack.length-1]);return`${e.pre}var ${o} = ${i}(${U(e,a)});`}return`${e.pre}var ${o} = ${U(e,a)};`}if("b"in t){e.pushBlockScope();try{return on(e,t)}finally{e.popBlockScope()}}if("j"in t){let[r,n,a,o]=t.j,i=r?de(e,r):void 0,s=i?i.slice(0,-1):"",l=n?R(e,n):void 0,u=l?U(e,l):"",m=a?de(e,a):void 0,f=m?m.slice(0,-1):"";e.indent();let g=de(e,o);return e.dedent(),`${e.pre}for (${s}; ${u}; ${f})
16
+ ${i}`}if("l"in t||"c"in t){let[r,n]="l"in t?t.l:t.c,a=n?R(e,n):void 0;if(!a||!n)throw new Error("Cannot create variable without an initial value.");sa(e,r,a.dataType);let o=U(e,Ot(e,r));if(typeof n=="object"&&"o"in n&&_chunkQRLTUOBJcjs.X.call(void 0, e.callStack[e.callStack.length-1])){let i=e.resolve(e.callStack[e.callStack.length-1]);return`${e.pre}var ${o} = ${i}(${U(e,a)});`}return`${e.pre}var ${o} = ${U(e,a)};`}if("b"in t){e.pushBlockScope();try{return sn(e,t)}finally{e.popBlockScope()}}if("j"in t){let[r,n,a,o]=t.j,i=r?de(e,r):void 0,s=i?i.slice(0,-1):"",l=n?R(e,n):void 0,u=l?U(e,l):"",m=a?de(e,a):void 0,f=m?m.slice(0,-1):"";e.indent();let g=de(e,o);return e.dedent(),`${e.pre}for (${s}; ${u}; ${f})
17
17
  ${g}`}if("w"in t){let[r,n]=t.w,a=U(e,R(e,r));e.indent();let o=de(e,n);return e.dedent(),`${e.pre}while (${a})
18
- ${o}`}return"k"in t?`${e.pre}continue;`:"d"in t?`${e.pre}break;`:`${e.pre}${U(e,R(e,t))};`}function kt(e,t){return on(e,t)}var _typedbinary = require('typed-binary');function sa(e,t){let r="size"in e?e.size:e.currentByteOffset,n=t-1,a=r&n;"skipBytes"in e?e.skipBytes(t-a&n):e.add(t-a&n)}var D=sa;var sn=new WeakMap;function at(e){let t=sn.get(e);if(t)return t;let r=new _typedbinary.Measurer,n={},a;for(let o in e.propTypes){let i=e.propTypes[o];if(i===void 0)throw new Error(`Property ${o} is undefined in struct`);let s=r.size;D(r,_chunk3QXCKMEJcjs.e.call(void 0, e)?_chunk3QXCKMEJcjs.aa.call(void 0, i):_chunk3QXCKMEJcjs.$.call(void 0, i)),a&&(a.padding=r.size-s);let l=_chunk3QXCKMEJcjs.ca.call(void 0, i);n[o]={offset:r.size,size:l},a=n[o],r.add(l)}return a&&(a.padding=_chunk3QXCKMEJcjs.j.call(void 0, _chunk3QXCKMEJcjs.ca.call(void 0, e),_chunk3QXCKMEJcjs.$.call(void 0, e))-r.size),sn.set(e,n),n}var ot=(()=>{try{return new Function("return true"),!0}catch(e){return!1}})(),Wt=new WeakMap,Mt={u32:"u32",vec2u:"u32",vec3u:"u32",vec4u:"u32",i32:"i32",vec2i:"i32",vec3i:"i32",vec4i:"i32",f32:"f32",vec2f:"f32",vec3f:"f32",vec4f:"f32",vec2h:"f32",vec3h:"f32",vec4h:"f32",mat2x2f:"f32",mat3x3f:"f32",mat4x4f:"f32"},Nt={u32:"setUint32",i32:"setInt32",f32:"setFloat32"};function zt(e,t,r){if(_chunkQRLTUOBJcjs.X.call(void 0, e)||_chunk3QXCKMEJcjs.e.call(void 0, e)){let a=at(e),o=Object.entries(a).sort((s,l)=>s[1].offset-l[1].offset),i="";for(let[s,l]of o){let u=e.propTypes[s];u&&(i+=zt(u,`(${t} + ${l.offset})`,`${r}.${s}`))}return i}if(_chunkQRLTUOBJcjs.W.call(void 0, e)||_chunk3QXCKMEJcjs.d.call(void 0, e)){let a=e,o=_chunk3QXCKMEJcjs.j.call(void 0, _chunk3QXCKMEJcjs.ca.call(void 0, a.elementType),_chunk3QXCKMEJcjs.$.call(void 0, a.elementType)),i="";return i+=`for (let i = 0; i < ${a.elementCount}; i++) {
18
+ ${o}`}return"k"in t?`${e.pre}continue;`:"d"in t?`${e.pre}break;`:`${e.pre}${U(e,R(e,t))};`}function kt(e,t){return sn(e,t)}var _typedbinary = require('typed-binary');function ua(e,t){let r="size"in e?e.size:e.currentByteOffset,n=t-1,a=r&n;"skipBytes"in e?e.skipBytes(t-a&n):e.add(t-a&n)}var D=ua;var un=new WeakMap;function at(e){let t=un.get(e);if(t)return t;let r=new _typedbinary.Measurer,n={},a;for(let o in e.propTypes){let i=e.propTypes[o];if(i===void 0)throw new Error(`Property ${o} is undefined in struct`);let s=r.size;D(r,_chunk3QXCKMEJcjs.e.call(void 0, e)?_chunk3QXCKMEJcjs.aa.call(void 0, i):_chunk3QXCKMEJcjs.$.call(void 0, i)),a&&(a.padding=r.size-s);let l=_chunk3QXCKMEJcjs.ca.call(void 0, i);n[o]={offset:r.size,size:l},a=n[o],r.add(l)}return a&&(a.padding=_chunk3QXCKMEJcjs.j.call(void 0, _chunk3QXCKMEJcjs.ca.call(void 0, e),_chunk3QXCKMEJcjs.$.call(void 0, e))-r.size),un.set(e,n),n}var ot=(()=>{try{return new Function("return true"),!0}catch(e){return!1}})(),Wt=new WeakMap,Mt={u32:"u32",vec2u:"u32",vec3u:"u32",vec4u:"u32",i32:"i32",vec2i:"i32",vec3i:"i32",vec4i:"i32",f32:"f32",vec2f:"f32",vec3f:"f32",vec4f:"f32",vec2h:"f32",vec3h:"f32",vec4h:"f32",mat2x2f:"f32",mat3x3f:"f32",mat4x4f:"f32"},Nt={u32:"setUint32",i32:"setInt32",f32:"setFloat32"};function zt(e,t,r){if(_chunkQRLTUOBJcjs.X.call(void 0, e)||_chunk3QXCKMEJcjs.e.call(void 0, e)){let a=at(e),o=Object.entries(a).sort((s,l)=>s[1].offset-l[1].offset),i="";for(let[s,l]of o){let u=e.propTypes[s];u&&(i+=zt(u,`(${t} + ${l.offset})`,`${r}.${s}`))}return i}if(_chunkQRLTUOBJcjs.W.call(void 0, e)||_chunk3QXCKMEJcjs.d.call(void 0, e)){let a=e,o=_chunk3QXCKMEJcjs.j.call(void 0, _chunk3QXCKMEJcjs.ca.call(void 0, a.elementType),_chunk3QXCKMEJcjs.$.call(void 0, a.elementType)),i="";return i+=`for (let i = 0; i < ${a.elementCount}; i++) {
19
19
  `,i+=zt(a.elementType,`(${t} + i * ${o})`,`${r}[i]`),i+=`}
20
20
  `,i}if(_chunkQRLTUOBJcjs.R.call(void 0, e)){let a=Mt[e.type],o="",i=Nt[a],s=["x","y","z","w"],l=_chunkQRLTUOBJcjs.P.call(void 0, e)?2:_chunkQRLTUOBJcjs.Q.call(void 0, e)?3:4;for(let u=0;u<l;u++)o+=`output.${i}((${t} + ${u*4}), ${r}.${s[u]}, littleEndian);
21
21
  `;return o}if(_chunkQRLTUOBJcjs.U.call(void 0, e)){let a=Mt[e.type],o=Nt[a],i=_chunkQRLTUOBJcjs.S.call(void 0, e)?2:_chunkQRLTUOBJcjs.T.call(void 0, e)?3:4,s=i*i,l=_chunk3QXCKMEJcjs.j.call(void 0, i*4,8),u="";for(let m=0;m<s;m++){let f=Math.floor(m/i),g=m%i,w=f*l+g*4;u+=`output.${o}((${t} + ${w}), ${r}.columns[${f}].${["x","y","z","w"][g]}, littleEndian);
22
- `}return u}let n=Mt[e.type];return`output.${Nt[n]}(${t}, ${r}, littleEndian);
23
- `}function it(e){if(Wt.has(e))return Wt.get(e);let t=zt(e,"offset","value"),r=new Function("output","offset","value","littleEndian=true",t);return Wt.set(e,r),r}var V={bool(e,t,r){e.writeBool(r)},f32(e,t,r){e.writeFloat32(r)},f16(e,t,r){e.writeFloat16(r)},i32(e,t,r){e.writeInt32(r)},u32(e,t,r){e.writeUint32(r)},vec2f(e,t,r){e.writeFloat32(r.x),e.writeFloat32(r.y)},vec2h(e,t,r){e.writeFloat16(r.x),e.writeFloat16(r.y)},vec2i(e,t,r){e.writeInt32(r.x),e.writeInt32(r.y)},vec2u(e,t,r){e.writeUint32(r.x),e.writeUint32(r.y)},vec3f(e,t,r){e.writeFloat32(r.x),e.writeFloat32(r.y),e.writeFloat32(r.z)},vec3h(e,t,r){e.writeFloat16(r.x),e.writeFloat16(r.y),e.writeFloat16(r.z)},vec3i(e,t,r){e.writeInt32(r.x),e.writeInt32(r.y),e.writeInt32(r.z)},vec3u(e,t,r){e.writeUint32(r.x),e.writeUint32(r.y),e.writeUint32(r.z)},vec4f(e,t,r){e.writeFloat32(r.x),e.writeFloat32(r.y),e.writeFloat32(r.z),e.writeFloat32(r.w)},vec4h(e,t,r){e.writeFloat16(r.x),e.writeFloat16(r.y),e.writeFloat16(r.z),e.writeFloat16(r.w)},vec4i(e,t,r){e.writeInt32(r.x),e.writeInt32(r.y),e.writeInt32(r.z),e.writeInt32(r.w)},vec4u(e,t,r){e.writeUint32(r.x),e.writeUint32(r.y),e.writeUint32(r.z),e.writeUint32(r.w)},mat2x2f(e,t,r){for(let n=0;n<r.length;++n)e.writeFloat32(r[n])},mat3x3f(e,t,r){for(let n=0;n<r.length;++n)e.writeFloat32(r[n])},mat4x4f(e,t,r){for(let n=0;n<r.length;++n)e.writeFloat32(r[n])},struct(e,t,r){let n=_chunk3QXCKMEJcjs.$.call(void 0, t);D(e,n);for(let[a,o]of Object.entries(t.propTypes))D(e,_chunk3QXCKMEJcjs.$.call(void 0, o)),ne(e,o,r[a]);D(e,n)},array(e,t,r){if(t.elementCount===0)throw new Error("Cannot write using a runtime-sized schema.");let n=_chunk3QXCKMEJcjs.$.call(void 0, t);D(e,n);let a=e.currentByteOffset;for(let o=0;o<Math.min(t.elementCount,r.length);o++)D(e,n),ne(e,t.elementType,r[o]);e.seekTo(a+_chunk3QXCKMEJcjs.ca.call(void 0, t))},ptr(){throw new Error("Pointers are not host-shareable")},atomic(e,t,r){var n;(n=V[t.inner.type])==null||n.call(V,e,t,r)},decorated(e,t,r){var o,i;let n=_chunk3QXCKMEJcjs.aa.call(void 0, t);D(e,n);let a=e.currentByteOffset;(i=V[(o=t.inner)==null?void 0:o.type])==null||i.call(V,e,t.inner,r),e.seekTo(a+_chunk3QXCKMEJcjs.ca.call(void 0, t))},uint8(e,t,r){e.writeUint8(r)},uint8x2(e,t,r){e.writeUint8(r.x),e.writeUint8(r.y)},uint8x4(e,t,r){e.writeUint8(r.x),e.writeUint8(r.y),e.writeUint8(r.z),e.writeUint8(r.w)},sint8(e,t,r){e.writeInt8(r)},sint8x2(e,t,r){e.writeInt8(r.x),e.writeInt8(r.y)},sint8x4(e,t,r){e.writeInt8(r.x),e.writeInt8(r.y),e.writeInt8(r.z),e.writeInt8(r.w)},unorm8(e,t,r){e.writeUint8(r*255)},unorm8x2(e,t,r){e.writeUint8(r.x*255),e.writeUint8(r.y*255)},unorm8x4(e,t,r){e.writeUint8(r.x*255),e.writeUint8(r.y*255),e.writeUint8(r.z*255),e.writeUint8(r.w*255)},snorm8(e,t,r){e.writeUint8(r*127+128)},snorm8x2(e,t,r){e.writeUint8(r.x*127+128),e.writeUint8(r.y*127+128)},snorm8x4(e,t,r){e.writeUint8(r.x*127+128),e.writeUint8(r.y*127+128),e.writeUint8(r.z*127+128),e.writeUint8(r.w*127+128)},uint16(e,t,r){e.writeUint16(r)},uint16x2(e,t,r){e.writeUint16(r.x),e.writeUint16(r.y)},uint16x4(e,t,r){e.writeUint16(r.x),e.writeUint16(r.y),e.writeUint16(r.z),e.writeUint16(r.w)},sint16(e,t,r){e.writeInt16(r)},sint16x2(e,t,r){e.writeInt16(r.x),e.writeInt16(r.y)},sint16x4(e,t,r){e.writeInt16(r.x),e.writeInt16(r.y),e.writeInt16(r.z),e.writeInt16(r.w)},unorm16(e,t,r){e.writeUint16(r*65535)},unorm16x2(e,t,r){e.writeUint16(r.x*65535),e.writeUint16(r.y*65535)},unorm16x4(e,t,r){e.writeUint16(r.x*65535),e.writeUint16(r.y*65535),e.writeUint16(r.z*65535),e.writeUint16(r.w*65535)},snorm16(e,t,r){e.writeUint16(r*32767+32768)},snorm16x2(e,t,r){e.writeUint16(r.x*32767+32768),e.writeUint16(r.y*32767+32768)},snorm16x4(e,t,r){e.writeUint16(r.x*32767+32768),e.writeUint16(r.y*32767+32768),e.writeUint16(r.z*32767+32768),e.writeUint16(r.w*32767+32768)},float16(e,t,r){e.writeFloat16(r)},float16x2(e,t,r){e.writeFloat16(r.x),e.writeFloat16(r.y)},float16x4(e,t,r){e.writeFloat16(r.x),e.writeFloat16(r.y),e.writeFloat16(r.z),e.writeFloat16(r.w)},float32(e,t,r){e.writeFloat32(r)},float32x2(e,t,r){e.writeFloat32(r.x),e.writeFloat32(r.y)},float32x3(e,t,r){e.writeFloat32(r.x),e.writeFloat32(r.y),e.writeFloat32(r.z)},float32x4(e,t,r){e.writeFloat32(r.x),e.writeFloat32(r.y),e.writeFloat32(r.z),e.writeFloat32(r.w)},uint32(e,t,r){e.writeUint32(r)},uint32x2(e,t,r){e.writeUint32(r.x),e.writeUint32(r.y)},uint32x3(e,t,r){e.writeUint32(r.x),e.writeUint32(r.y),e.writeUint32(r.z)},uint32x4(e,t,r){e.writeUint32(r.x),e.writeUint32(r.y),e.writeUint32(r.z),e.writeUint32(r.w)},sint32(e,t,r){e.writeInt32(r)},sint32x2(e,t,r){e.writeInt32(r.x),e.writeInt32(r.y)},sint32x3(e,t,r){e.writeInt32(r.x),e.writeInt32(r.y),e.writeInt32(r.z)},sint32x4(e,t,r){e.writeInt32(r.x),e.writeInt32(r.y),e.writeInt32(r.z),e.writeInt32(r.w)},"unorm10-10-10-2"(e,t,r){let n=0;n|=(r.x*1023&1023)<<22,n|=(r.x*1023&1023)<<12,n|=(r.y*1023&1023)<<2,n|=r.z*3&3,e.writeUint32(n)},"unorm8x4-bgra"(e,t,r){e.writeUint8(r.z*255),e.writeUint8(r.y*255),e.writeUint8(r.x*255),e.writeUint8(r.w*255)},disarray(e,t,r){var o,i;let n=_chunk3QXCKMEJcjs.$.call(void 0, t);D(e,n);let a=e.currentByteOffset;for(let s=0;s<Math.min(t.elementCount,r.length);s++)D(e,n),(i=V[(o=t.elementType)==null?void 0:o.type])==null||i.call(V,e,t.elementType,r[s]);e.seekTo(a+_chunk3QXCKMEJcjs.ca.call(void 0, t))},unstruct(e,t,r){var n;for(let[a,o]of Object.entries(t.propTypes))(n=V[o.type])==null||n.call(V,e,o,r[a])},"loose-decorated"(e,t,r){var i;let n=_chunk3QXCKMEJcjs.aa.call(void 0, t);D(e,n);let a=e.currentByteOffset,o=V[(i=t.inner)==null?void 0:i.type];return o==null||o(e,t.inner,r),e.seekTo(a+_chunk3QXCKMEJcjs.ca.call(void 0, t)),r}};function ne(e,t,r){let n=V[t.type];if(!n)throw new Error(`Cannot write data of type '${t.type}'.`);n(e,t,r)}var me={bool(e){return e.readBool()},f32(e){return e.readFloat32()},f16(e){return e.readFloat16()},i32(e){return e.readInt32()},u32(e){return e.readUint32()},vec2f(e){return _chunkQRLTUOBJcjs.s.call(void 0, e.readFloat32(),e.readFloat32())},vec3f(e){return _chunkQRLTUOBJcjs.w.call(void 0, e.readFloat32(),e.readFloat32(),e.readFloat32())},vec4f(e){return _chunkQRLTUOBJcjs.A.call(void 0, e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32())},vec2h(e){return _chunkQRLTUOBJcjs.t.call(void 0, e.readFloat16(),e.readFloat16())},vec3h(e){return _chunkQRLTUOBJcjs.x.call(void 0, e.readFloat16(),e.readFloat16(),e.readFloat16())},vec4h(e){return _chunkQRLTUOBJcjs.B.call(void 0, e.readFloat16(),e.readFloat16(),e.readFloat16(),e.readFloat16())},vec2i(e){return _chunkQRLTUOBJcjs.u.call(void 0, e.readInt32(),e.readInt32())},vec3i(e){return _chunkQRLTUOBJcjs.y.call(void 0, e.readInt32(),e.readInt32(),e.readInt32())},vec4i(e){return _chunkQRLTUOBJcjs.C.call(void 0, e.readInt32(),e.readInt32(),e.readInt32(),e.readInt32())},vec2u(e){return _chunkQRLTUOBJcjs.v.call(void 0, e.readUint32(),e.readUint32())},vec3u(e){return _chunkQRLTUOBJcjs.z.call(void 0, e.readUint32(),e.readUint32(),e.readUint32())},vec4u(e){return _chunkQRLTUOBJcjs.D.call(void 0, e.readUint32(),e.readUint32(),e.readUint32(),e.readUint32())},mat2x2f(e){return _chunkQRLTUOBJcjs.E.call(void 0, e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32())},mat3x3f(e){let t=()=>{let r=e.readFloat32();return e.readFloat32(),r};return _chunkQRLTUOBJcjs.F.call(void 0, e.readFloat32(),e.readFloat32(),t(),e.readFloat32(),e.readFloat32(),t(),e.readFloat32(),e.readFloat32(),t())},mat4x4f(e){return _chunkQRLTUOBJcjs.G.call(void 0, e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32())},struct(e,t){let r=_chunk3QXCKMEJcjs.$.call(void 0, t);D(e,r);let n={};for(let[a,o]of Object.entries(t.propTypes))D(e,_chunk3QXCKMEJcjs.$.call(void 0, o)),n[a]=O(e,o);return D(e,r),n},array(e,t){if(t.elementCount===0)throw new Error("Cannot read using a runtime-sized schema.");let r=_chunk3QXCKMEJcjs.$.call(void 0, t),n=[];for(let a=0;a<t.elementCount;a++){D(e,r);let o=t.elementType,i=O(e,o);n.push(i)}return D(e,r),n},ptr(){throw new Error("Pointers are not host-shareable")},atomic(e,t){return O(e,t.inner)},decorated(e,t){let r=_chunk3QXCKMEJcjs.aa.call(void 0, t);D(e,r);let n=e.currentByteOffset,a=O(e,t.inner);return e.seekTo(n+_chunk3QXCKMEJcjs.ca.call(void 0, t)),a},uint8:e=>e.readUint8(),uint8x2:e=>_chunkQRLTUOBJcjs.v.call(void 0, e.readUint8(),e.readUint8()),uint8x4:e=>_chunkQRLTUOBJcjs.D.call(void 0, e.readUint8(),e.readUint8(),e.readUint8(),e.readUint8()),sint8:e=>e.readInt8(),sint8x2:e=>_chunkQRLTUOBJcjs.u.call(void 0, e.readInt8(),e.readInt8()),sint8x4:e=>_chunkQRLTUOBJcjs.C.call(void 0, e.readInt8(),e.readInt8(),e.readInt8(),e.readInt8()),unorm8:e=>e.readUint8()/255,unorm8x2:e=>_chunkQRLTUOBJcjs.s.call(void 0, e.readUint8()/255,e.readUint8()/255),unorm8x4:e=>_chunkQRLTUOBJcjs.A.call(void 0, e.readUint8()/255,e.readUint8()/255,e.readUint8()/255,e.readUint8()/255),snorm8:e=>(e.readUint8()-128)/127,snorm8x2:e=>_chunkQRLTUOBJcjs.s.call(void 0, (e.readUint8()-128)/127,(e.readUint8()-128)/127),snorm8x4:e=>_chunkQRLTUOBJcjs.A.call(void 0, (e.readUint8()-128)/127,(e.readUint8()-128)/127,(e.readUint8()-128)/127,(e.readUint8()-128)/127),uint16:e=>e.readUint16(),uint16x2:e=>_chunkQRLTUOBJcjs.v.call(void 0, e.readUint16(),e.readUint16()),uint16x4:e=>_chunkQRLTUOBJcjs.D.call(void 0, e.readUint16(),e.readUint16(),e.readUint16(),e.readUint16()),sint16:e=>e.readInt16(),sint16x2:e=>_chunkQRLTUOBJcjs.u.call(void 0, e.readInt16(),e.readInt16()),sint16x4:e=>_chunkQRLTUOBJcjs.C.call(void 0, e.readInt16(),e.readInt16(),e.readInt16(),e.readInt16()),unorm16:e=>e.readUint16()/65535,unorm16x2:e=>_chunkQRLTUOBJcjs.s.call(void 0, e.readUint16()/65535,e.readUint16()/65535),unorm16x4:e=>_chunkQRLTUOBJcjs.A.call(void 0, e.readUint16()/65535,e.readUint16()/65535,e.readUint16()/65535,e.readUint16()/65535),snorm16:e=>(e.readUint16()-32768)/32767,snorm16x2:e=>_chunkQRLTUOBJcjs.s.call(void 0, me.snorm16(e),me.snorm16(e)),snorm16x4:e=>_chunkQRLTUOBJcjs.A.call(void 0, me.snorm16(e),me.snorm16(e),me.snorm16(e),me.snorm16(e)),float16(e){return e.readFloat16()},float16x2:e=>_chunkQRLTUOBJcjs.s.call(void 0, e.readFloat16(),e.readFloat16()),float16x4:e=>_chunkQRLTUOBJcjs.A.call(void 0, e.readFloat16(),e.readFloat16(),e.readFloat16(),e.readFloat16()),float32:e=>e.readFloat32(),float32x2:e=>_chunkQRLTUOBJcjs.s.call(void 0, e.readFloat32(),e.readFloat32()),float32x3:e=>_chunkQRLTUOBJcjs.w.call(void 0, e.readFloat32(),e.readFloat32(),e.readFloat32()),float32x4:e=>_chunkQRLTUOBJcjs.A.call(void 0, e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32()),uint32:e=>e.readUint32(),uint32x2:e=>_chunkQRLTUOBJcjs.v.call(void 0, e.readUint32(),e.readUint32()),uint32x3:e=>_chunkQRLTUOBJcjs.z.call(void 0, e.readUint32(),e.readUint32(),e.readUint32()),uint32x4:e=>_chunkQRLTUOBJcjs.D.call(void 0, e.readUint32(),e.readUint32(),e.readUint32(),e.readUint32()),sint32:e=>e.readInt32(),sint32x2:e=>_chunkQRLTUOBJcjs.u.call(void 0, e.readInt32(),e.readInt32()),sint32x3:e=>_chunkQRLTUOBJcjs.y.call(void 0, e.readInt32(),e.readInt32(),e.readInt32()),sint32x4:e=>_chunkQRLTUOBJcjs.C.call(void 0, e.readInt32(),e.readInt32(),e.readInt32(),e.readInt32()),"unorm10-10-10-2"(e){let t=e.readUint32(),r=(t>>22)/1023,n=(t>>12&1023)/1023,a=(t>>2&1023)/1023,o=(t&3)/3;return _chunkQRLTUOBJcjs.A.call(void 0, r,n,a,o)},"unorm8x4-bgra"(e){let t=e.readByte()/255,r=e.readByte()/255,n=e.readByte()/255,a=e.readByte()/255;return _chunkQRLTUOBJcjs.A.call(void 0, n,r,t,a)},unstruct(e,t){let r={};for(let[n,a]of Object.entries(t.propTypes))r[n]=O(e,a);return r},disarray(e,t){let r=_chunk3QXCKMEJcjs.$.call(void 0, t),n=[];for(let a=0;a<t.elementCount;a++)D(e,r),n.push(O(e,t.elementType));return D(e,r),n},"loose-decorated"(e,t){D(e,_chunk3QXCKMEJcjs.aa.call(void 0, t));let r=e.currentByteOffset,n=O(e,t.inner);return e.seekTo(r+_chunk3QXCKMEJcjs.ca.call(void 0, t)),n}};function O(e,t){let r=me[t.type];if(!r)throw new Error(`Cannot read data of type '${t.type}'.`);return r(e,t)}function un(e,t){var u;let r=_chunk3QXCKMEJcjs.ca.call(void 0, e);if(r===0||t===void 0||t===null)return[];let n=new ArrayBuffer(r),a=new (0, _typedbinary.BufferWriter)(n),o=[];function i(m,f,g,w){var y;if(f!=null){if(_chunkQRLTUOBJcjs.X.call(void 0, m)||_chunk3QXCKMEJcjs.e.call(void 0, m)){let T=at(m);for(let[F,c]of Object.entries(T)){let x=m.propTypes[F];if(!x)continue;let Te=f[F];Te!==void 0&&i(x,Te,g+c.offset,(y=c.padding)!=null?y:w)}return}if(_chunkQRLTUOBJcjs.W.call(void 0, m)||_chunk3QXCKMEJcjs.d.call(void 0, m)){let T=m,F=_chunk3QXCKMEJcjs.j.call(void 0, _chunk3QXCKMEJcjs.ca.call(void 0, T.elementType),_chunk3QXCKMEJcjs.$.call(void 0, T.elementType));if(!Array.isArray(f))throw new Error("Partial value for array must be an array");let c=f;c.sort((x,Te)=>x.idx-Te.idx);for(let{idx:x,value:Te}of c)i(T.elementType,Te,g+x*F,F-_chunk3QXCKMEJcjs.ca.call(void 0, T.elementType))}else{let T=_chunk3QXCKMEJcjs.ca.call(void 0, m);a.seekTo(g),ne(a,m,f),o.push({start:g,end:g+T,padding:w})}}}if(i(e,t,0),o.length===0)return[];let s=[],l=o[0];for(let m=1;m<o.length;m++){let f=o[m];if(!f||!l)throw new Error("Internal error: missing segment");f.start===l.end+((u=l.padding)!=null?u:0)?(l.end=f.end,l.padding=f.padding):(s.push({data:new Uint8Array(n,l.start,l.end-l.start)}),l=f)}if(!l)throw new Error("Internal error: missing segment");return s.push({data:new Uint8Array(n,l.start,l.end-l.start)}),s}function fe(e){return!!(e!=null&&e.usableAsStorage)}var Ge=class e extends Error{constructor(t){var r;super(`Resource '${(r=t.label)!=null?r:"<unnamed>"}' cannot be bound as 'storage'. Use .$usage('storage') to allow it.`),Object.setPrototypeOf(this,e.prototype)}};function st(e){return!!e.usableAsUniform}var gn={uniform:"uniform",mutable:"storage, read_write",readonly:"storage, read"},mn;mn=_chunk3JTP2ATRcjs.a;var $e=class{constructor(t,r){this.usage=t;this.buffer=r;_chunkQRLTUOBJcjs.c.call(void 0, this,"~repr");_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","buffer-usage");_chunkQRLTUOBJcjs.c.call(void 0, this,mn);this[_chunk3JTP2ATRcjs.a]={dataType:r.dataType}}get label(){return this.buffer.label}$name(t){return this.buffer.$name(t),this}"~resolve"(t){let r=t.names.makeUnique(this.label),{group:n,binding:a}=t.allocateFixedEntry(this.usage==="uniform"?{uniform:this.buffer.dataType}:{storage:this.buffer.dataType,access:this.usage},this.buffer),o=gn[this.usage];return t.addDeclaration(`@group(${n}) @binding(${a}) var<${o}> ${r}: ${t.resolve(this.buffer.dataType)};`),r}write(t){this.buffer.write(t)}toString(){var t;return`${this.usage}:${(t=this.label)!=null?t:"<unnamed>"}`}get value(){if(!_chunkQRLTUOBJcjs.p.call(void 0, ))throw new Error("Cannot access buffer's value directly in JS.");return new Proxy({"~resolve":t=>t.resolve(this),toString:()=>{var t;return`.value:${(t=this.label)!=null?t:"<unnamed>"}`},[_chunk3JTP2ATRcjs.a]:{dataType:this.buffer.dataType}},M)}},fn;fn=_chunk3JTP2ATRcjs.a;var Oe=class{constructor(t,r,n){this.usage=t;this.dataType=r;this._membership=n;_chunkQRLTUOBJcjs.c.call(void 0, this,"~repr");_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","buffer-usage");_chunkQRLTUOBJcjs.c.call(void 0, this,fn);this[_chunk3JTP2ATRcjs.a]={dataType:r}}get label(){return this._membership.key}"~resolve"(t){let r=t.names.makeUnique(this.label),n=t.allocateLayoutEntry(this._membership.layout),a=gn[this.usage];return t.addDeclaration(`@group(${n}) @binding(${this._membership.idx}) var<${a}> ${r}: ${t.resolve(this.dataType)};`),r}toString(){var t;return`${this.usage}:${(t=this.label)!=null?t:"<unnamed>"}`}get value(){if(!_chunkQRLTUOBJcjs.p.call(void 0, ))throw new Error("Cannot access buffer's value directly in JS.");return new Proxy({"~resolve":t=>t.resolve(this),toString:()=>{var t;return`.value:${(t=this.label)!=null?t:"<unnamed>"}`},[_chunk3JTP2ATRcjs.a]:{dataType:this.dataType}},M)}},pn=new WeakMap;function jt(e){if(!fe(e))throw new Error(`Cannot pass ${e} to asMutable, as it is not allowed to be used as storage. To allow it, call .$usage('storage') when creating the buffer.`);let t=pn.get(e);return t||(t=new $e("mutable",e),pn.set(e,t)),t}var ln=new WeakMap;function Kt(e){if(!fe(e))throw new Error(`Cannot pass ${e} to asReadonly, as it is not allowed to be used as storage. To allow it, call .$usage('storage') when creating the buffer.`);let t=ln.get(e);return t||(t=new $e("readonly",e),ln.set(e,t)),t}var dn=new WeakMap;function qt(e){if(!st(e))throw new Error(`Cannot pass ${e} to asUniform, as it is not allowed to be used as a uniform. To allow it, call .$usage('uniform') when creating the buffer.`);let t=dn.get(e);return t||(t=new $e("uniform",e),dn.set(e,t)),t}var Yt={uniform:qt,mutable:jt,readonly:Kt};function cn(e,t,r){return _chunkQRLTUOBJcjs.V.call(void 0, t)?new ut(e,t,r):new ut(e,t,r,["storage","uniform"])}function ae(e){return e.resourceType==="buffer"}function da(e){return!!e.usableAsVertex}var Tn=_typedbinary.getSystemEndianness.call(void 0, ),ut=class{constructor(t,r,n,a){this._group=t;this.dataType=r;this.initialOrBuffer=n;this._disallowedUsages=a;_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","buffer");_chunkQRLTUOBJcjs.c.call(void 0, this,"flags",GPUBufferUsage.COPY_DST|GPUBufferUsage.COPY_SRC);_chunkQRLTUOBJcjs.c.call(void 0, this,"_buffer",null);_chunkQRLTUOBJcjs.c.call(void 0, this,"_ownBuffer");_chunkQRLTUOBJcjs.c.call(void 0, this,"_destroyed",!1);_chunkQRLTUOBJcjs.c.call(void 0, this,"_hostBuffer");_chunkQRLTUOBJcjs.c.call(void 0, this,"_label");_chunkQRLTUOBJcjs.c.call(void 0, this,"initial");_chunkQRLTUOBJcjs.c.call(void 0, this,"usableAsUniform",!1);_chunkQRLTUOBJcjs.c.call(void 0, this,"usableAsStorage",!1);_chunkQRLTUOBJcjs.c.call(void 0, this,"usableAsVertex",!1);_chunk3JTP2ATRcjs.j.call(void 0, n)?(this._ownBuffer=!1,this._buffer=n):(this._ownBuffer=!0,this.initial=n)}get label(){return this._label}get buffer(){var r;let t=this._group.device;if(this._destroyed)throw new Error("This buffer has been destroyed");if(!this._buffer&&(this._buffer=t.createBuffer({size:_chunk3QXCKMEJcjs.ca.call(void 0, this.dataType),usage:this.flags,mappedAtCreation:!!this.initial,label:(r=this.label)!=null?r:"<unnamed>"}),this.initial)){let n=new (0, _typedbinary.BufferWriter)(this._buffer.getMappedRange());ne(n,this.dataType,this.initial),this._buffer.unmap()}return this._buffer}get destroyed(){return this._destroyed}$name(t){return this._label=t,this._buffer&&(this._buffer.label=t),this}$usage(...t){var r;for(let n of t){if((r=this._disallowedUsages)!=null&&r.includes(n))throw new Error(`Buffer of type ${this.dataType.type} cannot be used as ${n}`);this.flags|=n==="uniform"?GPUBufferUsage.UNIFORM:0,this.flags|=n==="storage"?GPUBufferUsage.STORAGE:0,this.flags|=n==="vertex"?GPUBufferUsage.VERTEX:0,this.usableAsUniform=this.usableAsUniform||n==="uniform",this.usableAsStorage=this.usableAsStorage||n==="storage",this.usableAsVertex=this.usableAsVertex||n==="vertex"}return this}$addFlags(t){if(!this._ownBuffer)throw new Error("Cannot add flags to a buffer that is not managed by TypeGPU.");return t&GPUBufferUsage.MAP_READ?(this.flags=GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ,this):t&GPUBufferUsage.MAP_WRITE?(this.flags=GPUBufferUsage.COPY_SRC|GPUBufferUsage.MAP_WRITE,this):(this.flags|=t,this)}compileWriter(){if(ot)it(this.dataType);else throw new Error("This environment does not allow eval")}write(t){let r=this.buffer,n=this._group.device;if(r.mapState==="mapped"){let o=r.getMappedRange();if(ot){it(this.dataType)(new DataView(o),0,t,Tn==="little");return}ne(new (0, _typedbinary.BufferWriter)(o),this.dataType,t);return}let a=_chunk3QXCKMEJcjs.ca.call(void 0, this.dataType);this._hostBuffer||(this._hostBuffer=new ArrayBuffer(a)),this._group.flush(),ot?it(this.dataType)(new DataView(this._hostBuffer),0,t,Tn==="little"):ne(new (0, _typedbinary.BufferWriter)(this._hostBuffer),this.dataType,t),n.queue.writeBuffer(r,0,this._hostBuffer,0,a)}writePartial(t){let r=this.buffer,n=this._group.device,a=un(this.dataType,t);if(r.mapState==="mapped"){let o=r.getMappedRange(),i=new Uint8Array(o);for(let s of a)i.set(s.data,s.data.byteOffset)}else for(let o of a)n.queue.writeBuffer(r,o.data.byteOffset,o.data,0,o.data.byteLength)}copyFrom(t){if(this.buffer.mapState==="mapped")throw new Error("Cannot copy to a mapped buffer.");let r=_chunk3QXCKMEJcjs.ca.call(void 0, this.dataType);this._group.commandEncoder.copyBufferToBuffer(t.buffer,0,this.buffer,0,r)}async read(){this._group.flush();let t=this.buffer,r=this._group.device;if(t.mapState==="mapped"){let i=t.getMappedRange();return O(new (0, _typedbinary.BufferReader)(i),this.dataType)}if(t.usage&GPUBufferUsage.MAP_READ){await t.mapAsync(GPUMapMode.READ);let i=t.getMappedRange(),s=O(new (0, _typedbinary.BufferReader)(i),this.dataType);return t.unmap(),s}let n=r.createBuffer({size:_chunk3QXCKMEJcjs.ca.call(void 0, this.dataType),usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ}),a=r.createCommandEncoder();a.copyBufferToBuffer(t,0,n,0,_chunk3QXCKMEJcjs.ca.call(void 0, this.dataType)),r.queue.submit([a.finish()]),await r.queue.onSubmittedWorkDone(),await n.mapAsync(GPUMapMode.READ,0,_chunk3QXCKMEJcjs.ca.call(void 0, this.dataType));let o=O(new (0, _typedbinary.BufferReader)(n.getMappedRange()),this.dataType);return n.unmap(),n.destroy(),o}as(t){var r;return(r=Yt[t])==null?void 0:r.call(Yt,this)}destroy(){var t;this._destroyed||(this._destroyed=!0,this._ownBuffer&&((t=this._buffer)==null||t.destroy()))}toString(){var t;return`buffer:${(t=this._label)!=null?t:"<unnamed>"}`}};function yn(e){return new Qt(e)}function xn(e){return new Xt(e)}function ke(e){return(e==null?void 0:e.resourceType)==="sampler"}function We(e){return(e==null?void 0:e.resourceType)==="sampler-comparison"}var pt=class{constructor(t){this._membership=t;_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","sampler")}get label(){return this._membership.key}"~resolve"(t){let r=t.names.makeUnique(this.label),n=t.allocateLayoutEntry(this._membership.layout);return t.addDeclaration(`@group(${n}) @binding(${this._membership.idx}) var ${r}: sampler;`),r}toString(){var t;return`${this.resourceType}:${(t=this.label)!=null?t:"<unnamed>"}`}},lt=class{constructor(t){this._membership=t;_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","sampler-comparison")}get label(){return this._membership.key}"~resolve"(t){let r=t.names.makeUnique(this.label),n=t.allocateLayoutEntry(this._membership.layout);return t.addDeclaration(`@group(${n}) @binding(${this._membership.idx}) var ${r}: sampler_comparison;`),r}toString(){var t;return`${this.resourceType}:${(t=this.label)!=null?t:"<unnamed>"}`}},Qt=class{constructor(t){this._props=t;_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","sampler");_chunkQRLTUOBJcjs.c.call(void 0, this,"_label");_chunkQRLTUOBJcjs.c.call(void 0, this,"_filtering");_chunkQRLTUOBJcjs.c.call(void 0, this,"_sampler",null);this._filtering=t.minFilter==="linear"||t.magFilter==="linear"||t.mipmapFilter==="linear"}unwrap(t){var r;return this._sampler||(this._sampler=t.device.createSampler(_chunkQRLTUOBJcjs.b.call(void 0, _chunkQRLTUOBJcjs.a.call(void 0, {},this._props),{label:(r=this._label)!=null?r:"<unnamed>"}))),this._sampler}get label(){return this._label}$name(t){return this._label=t,this}"~resolve"(t){let r=t.names.makeUnique(this._label),{group:n,binding:a}=t.allocateFixedEntry({sampler:this._filtering?"filtering":"non-filtering"},this);return t.addDeclaration(`@group(${n}) @binding(${a}) var ${r}: sampler;`),r}toString(){var t;return`${this.resourceType}:${(t=this.label)!=null?t:"<unnamed>"}`}},Xt=class{constructor(t){this._props=t;_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","sampler-comparison");_chunkQRLTUOBJcjs.c.call(void 0, this,"_label");_chunkQRLTUOBJcjs.c.call(void 0, this,"_sampler",null)}unwrap(t){var r;return this._sampler||(this._sampler=t.device.createSampler(_chunkQRLTUOBJcjs.b.call(void 0, _chunkQRLTUOBJcjs.a.call(void 0, {},this._props),{label:(r=this._label)!=null?r:"<unnamed>"}))),this._sampler}get label(){return this._label}$name(t){return this._label=t,this}"~resolve"(t){let r=t.names.makeUnique(this.label),{group:n,binding:a}=t.allocateFixedEntry({sampler:"comparison"},this);return t.addDeclaration(`@group(${n}) @binding(${a}) var ${r}: sampler_comparison;`),r}toString(){var t;return`${this.resourceType}:${(t=this.label)!=null?t:"<unnamed>"}`}};var dt=class{constructor(t){this._membership=t;_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","external-texture")}get label(){return this._membership.key}"~resolve"(t){let r=t.names.makeUnique(this.label),n=t.allocateLayoutEntry(this._membership.layout);return t.addDeclaration(`@group(${n}) @binding(${this._membership.idx}) var ${r}: texture_external;`),r}toString(){var t;return`${this.resourceType}:${(t=this.label)!=null?t:"<unnamed>"}`}};var hn={r8unorm:_chunkQRLTUOBJcjs.N,r8snorm:_chunkQRLTUOBJcjs.N,r8uint:_chunkQRLTUOBJcjs.L,r8sint:_chunkQRLTUOBJcjs.M,r16uint:_chunkQRLTUOBJcjs.L,r16sint:_chunkQRLTUOBJcjs.M,r16float:_chunkQRLTUOBJcjs.N,rg8unorm:_chunkQRLTUOBJcjs.N,rg8snorm:_chunkQRLTUOBJcjs.N,rg8uint:_chunkQRLTUOBJcjs.L,rg8sint:_chunkQRLTUOBJcjs.M,r32uint:_chunkQRLTUOBJcjs.L,r32sint:_chunkQRLTUOBJcjs.M,r32float:_chunkQRLTUOBJcjs.N,rg16uint:_chunkQRLTUOBJcjs.L,rg16sint:_chunkQRLTUOBJcjs.M,rg16float:_chunkQRLTUOBJcjs.N,rgba8unorm:_chunkQRLTUOBJcjs.N,"rgba8unorm-srgb":_chunkQRLTUOBJcjs.N,rgba8snorm:_chunkQRLTUOBJcjs.N,rgba8uint:_chunkQRLTUOBJcjs.L,rgba8sint:_chunkQRLTUOBJcjs.M,bgra8unorm:_chunkQRLTUOBJcjs.N,"bgra8unorm-srgb":_chunkQRLTUOBJcjs.N,rgb9e5ufloat:_chunkQRLTUOBJcjs.N,rgb10a2uint:_chunkQRLTUOBJcjs.L,rgb10a2unorm:_chunkQRLTUOBJcjs.N,rg11b10ufloat:_chunkQRLTUOBJcjs.N,rg32uint:_chunkQRLTUOBJcjs.L,rg32sint:_chunkQRLTUOBJcjs.M,rg32float:_chunkQRLTUOBJcjs.N,rgba16uint:_chunkQRLTUOBJcjs.L,rgba16sint:_chunkQRLTUOBJcjs.M,rgba16float:_chunkQRLTUOBJcjs.N,rgba32uint:_chunkQRLTUOBJcjs.L,rgba32sint:_chunkQRLTUOBJcjs.M,rgba32float:_chunkQRLTUOBJcjs.N,stencil8:_chunkQRLTUOBJcjs.N,depth16unorm:_chunkQRLTUOBJcjs.N,depth24plus:_chunkQRLTUOBJcjs.N,"depth24plus-stencil8":_chunkQRLTUOBJcjs.N,depth32float:_chunkQRLTUOBJcjs.N,"depth32float-stencil8":_chunkQRLTUOBJcjs.N,"bc1-rgba-unorm":_chunkQRLTUOBJcjs.N,"bc1-rgba-unorm-srgb":_chunkQRLTUOBJcjs.N,"bc2-rgba-unorm":_chunkQRLTUOBJcjs.N,"bc2-rgba-unorm-srgb":_chunkQRLTUOBJcjs.N,"bc3-rgba-unorm":_chunkQRLTUOBJcjs.N,"bc3-rgba-unorm-srgb":_chunkQRLTUOBJcjs.N,"bc4-r-unorm":_chunkQRLTUOBJcjs.N,"bc4-r-snorm":_chunkQRLTUOBJcjs.N,"bc5-rg-unorm":_chunkQRLTUOBJcjs.N,"bc5-rg-snorm":_chunkQRLTUOBJcjs.N,"bc6h-rgb-ufloat":_chunkQRLTUOBJcjs.N,"bc6h-rgb-float":_chunkQRLTUOBJcjs.N,"bc7-rgba-unorm":_chunkQRLTUOBJcjs.N,"bc7-rgba-unorm-srgb":_chunkQRLTUOBJcjs.N,"etc2-rgb8unorm":_chunkQRLTUOBJcjs.N,"etc2-rgb8unorm-srgb":_chunkQRLTUOBJcjs.N,"etc2-rgb8a1unorm":_chunkQRLTUOBJcjs.N,"etc2-rgb8a1unorm-srgb":_chunkQRLTUOBJcjs.N,"etc2-rgba8unorm":_chunkQRLTUOBJcjs.N,"etc2-rgba8unorm-srgb":_chunkQRLTUOBJcjs.N,"eac-r11unorm":_chunkQRLTUOBJcjs.N,"eac-r11snorm":_chunkQRLTUOBJcjs.N,"eac-rg11unorm":_chunkQRLTUOBJcjs.N,"eac-rg11snorm":_chunkQRLTUOBJcjs.N,"astc-4x4-unorm":_chunkQRLTUOBJcjs.N,"astc-4x4-unorm-srgb":_chunkQRLTUOBJcjs.N,"astc-5x4-unorm":_chunkQRLTUOBJcjs.N,"astc-5x4-unorm-srgb":_chunkQRLTUOBJcjs.N,"astc-5x5-unorm":_chunkQRLTUOBJcjs.N,"astc-5x5-unorm-srgb":_chunkQRLTUOBJcjs.N,"astc-6x5-unorm":_chunkQRLTUOBJcjs.N,"astc-6x5-unorm-srgb":_chunkQRLTUOBJcjs.N,"astc-6x6-unorm":_chunkQRLTUOBJcjs.N,"astc-6x6-unorm-srgb":_chunkQRLTUOBJcjs.N,"astc-8x5-unorm":_chunkQRLTUOBJcjs.N,"astc-8x5-unorm-srgb":_chunkQRLTUOBJcjs.N,"astc-8x6-unorm":_chunkQRLTUOBJcjs.N,"astc-8x6-unorm-srgb":_chunkQRLTUOBJcjs.N,"astc-8x8-unorm":_chunkQRLTUOBJcjs.N,"astc-8x8-unorm-srgb":_chunkQRLTUOBJcjs.N,"astc-10x5-unorm":_chunkQRLTUOBJcjs.N,"astc-10x5-unorm-srgb":_chunkQRLTUOBJcjs.N,"astc-10x6-unorm":_chunkQRLTUOBJcjs.N,"astc-10x6-unorm-srgb":_chunkQRLTUOBJcjs.N,"astc-10x8-unorm":_chunkQRLTUOBJcjs.N,"astc-10x8-unorm-srgb":_chunkQRLTUOBJcjs.N,"astc-10x10-unorm":_chunkQRLTUOBJcjs.N,"astc-10x10-unorm-srgb":_chunkQRLTUOBJcjs.N,"astc-12x10-unorm":_chunkQRLTUOBJcjs.N,"astc-12x10-unorm-srgb":_chunkQRLTUOBJcjs.N,"astc-12x12-unorm":_chunkQRLTUOBJcjs.N,"astc-12x12-unorm-srgb":_chunkQRLTUOBJcjs.N},Me={rgba8unorm:_chunkQRLTUOBJcjs.A,rgba8snorm:_chunkQRLTUOBJcjs.A,rgba8uint:_chunkQRLTUOBJcjs.D,rgba8sint:_chunkQRLTUOBJcjs.C,rgba16uint:_chunkQRLTUOBJcjs.D,rgba16sint:_chunkQRLTUOBJcjs.C,rgba16float:_chunkQRLTUOBJcjs.A,r32uint:_chunkQRLTUOBJcjs.D,r32sint:_chunkQRLTUOBJcjs.C,r32float:_chunkQRLTUOBJcjs.A,rg32uint:_chunkQRLTUOBJcjs.D,rg32sint:_chunkQRLTUOBJcjs.C,rg32float:_chunkQRLTUOBJcjs.A,rgba32uint:_chunkQRLTUOBJcjs.D,rgba32sint:_chunkQRLTUOBJcjs.C,rgba32float:_chunkQRLTUOBJcjs.A,bgra8unorm:_chunkQRLTUOBJcjs.A},bn={f32:"float",u32:"uint",i32:"sint"},wn={float:_chunkQRLTUOBJcjs.N,"unfilterable-float":_chunkQRLTUOBJcjs.N,uint:_chunkQRLTUOBJcjs.L,sint:_chunkQRLTUOBJcjs.M,depth:_chunkQRLTUOBJcjs.N};function Sn(e,t){return new Zt(e,t)}function J(e){return(e==null?void 0:e.resourceType)==="texture"}function Ne(e){return(e==null?void 0:e.resourceType)==="texture-storage-view"}function ze(e){return(e==null?void 0:e.resourceType)==="texture-sampled-view"}var Dn={mutable:"read_write",readonly:"read",writeonly:"write"},Zt=class{constructor(t,r){this.props=t;this._branch=r;_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","texture");_chunkQRLTUOBJcjs.c.call(void 0, this,"usableAsSampled",!1);_chunkQRLTUOBJcjs.c.call(void 0, this,"usableAsStorage",!1);_chunkQRLTUOBJcjs.c.call(void 0, this,"usableAsRender",!1);_chunkQRLTUOBJcjs.c.call(void 0, this,"_destroyed",!1);_chunkQRLTUOBJcjs.c.call(void 0, this,"_label");_chunkQRLTUOBJcjs.c.call(void 0, this,"_flags",GPUTextureUsage.COPY_DST|GPUTextureUsage.COPY_SRC);_chunkQRLTUOBJcjs.c.call(void 0, this,"_texture",null)}get label(){return this._label}$name(t){return this._label=t,this}unwrap(){var t,r,n,a,o;if(this._destroyed)throw new Error("This texture has been destroyed");return this._texture||(this._texture=this._branch.device.createTexture({label:(t=this._label)!=null?t:"<unnamed>",format:this.props.format,size:this.props.size,usage:this._flags,dimension:(r=this.props.dimension)!=null?r:"2d",viewFormats:(n=this.props.viewFormats)!=null?n:[],mipLevelCount:(a=this.props.mipLevelCount)!=null?a:1,sampleCount:(o=this.props.sampleCount)!=null?o:1})),this._texture}$usage(...t){let r=t.includes("storage"),n=t.includes("sampled"),a=t.includes("render");return this._flags|=n?GPUTextureUsage.TEXTURE_BINDING:0,this._flags|=r?GPUTextureUsage.STORAGE_BINDING:0,this._flags|=a?GPUTextureUsage.RENDER_ATTACHMENT:0,this.usableAsStorage||(this.usableAsStorage=r),this.usableAsSampled||(this.usableAsSampled=n),this.usableAsRender||(this.usableAsRender=a),this}createView(t,r){if(t==="sampled")return this._asSampled(r);let n=r;switch(t){case"mutable":return this._asMutable(n);case"readonly":return this._asReadonly(n);case"writeonly":return this._asWriteonly(n)}}_asStorage(t,r){var o;if(!this.usableAsStorage)throw new Error("Unusable as storage");let n=(o=t==null?void 0:t.format)!=null?o:this.props.format,a=Me[n];return _chunkQRLTUOBJcjs.d.call(void 0, !!a,`Unsupported storage texture format: ${n}`),new er(t!=null?t:{},r,this)}_asReadonly(t){return this._asStorage(t,"readonly")}_asWriteonly(t){return this._asStorage(t,"writeonly")}_asMutable(t){return this._asStorage(t,"mutable")}_asSampled(t){var a;if(!this.usableAsSampled)throw new Error("Unusable as sampled");let r=(a=t==null?void 0:t.format)!=null?a:this.props.format;if(!Me[r])throw new Error(`Unsupported storage texture format: ${r}`);return new tr(t,this)}destroy(){var t;this._destroyed||(this._destroyed=!0,(t=this._texture)==null||t.destroy())}},gt={"1d":"1d","2d":"2d","2d-array":"2d_array",cube:"cube","cube-array":"cube_array","3d":"3d"},er=class{constructor(t,r,n){this.access=r;this._texture=n;_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","texture-storage-view");_chunkQRLTUOBJcjs.c.call(void 0, this,"texelDataType");_chunkQRLTUOBJcjs.c.call(void 0, this,"dimension");_chunkQRLTUOBJcjs.c.call(void 0, this,"_view");_chunkQRLTUOBJcjs.c.call(void 0, this,"_format");var a,o,i;this.dimension=(o=(a=t==null?void 0:t.dimension)!=null?a:n.props.dimension)!=null?o:"2d",this._format=(i=t==null?void 0:t.format)!=null?i:n.props.format,this.texelDataType=Me[this._format]}get label(){return this._texture.label}$name(t){return this._texture.$name(t),this}unwrap(){var t;return this._view||(this._view=this._texture.unwrap().createView({label:`${(t=this.label)!=null?t:"<unnamed>"} - View`,format:this._format,dimension:this.dimension})),this._view}"~resolve"(t){let r=t.names.makeUnique(this.label),{group:n,binding:a}=t.allocateFixedEntry({storageTexture:this._format,access:this.access,viewDimension:this.dimension},this),o=`texture_storage_${gt[this.dimension]}`;return t.addDeclaration(`@group(${n}) @binding(${a}) var ${r}: ${o}<${this._format}, ${Dn[this.access]}>;`),r}toString(){var t;return`${this.resourceType}:${(t=this.label)!=null?t:"<unnamed>"}`}},mt=class{constructor(t,r,n,a){this._format=t;this.dimension=r;this.access=n;this._membership=a;_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","texture-storage-view");_chunkQRLTUOBJcjs.c.call(void 0, this,"texelDataType");this.texelDataType=Me[this._format]}get label(){return this._membership.key}"~resolve"(t){let r=t.names.makeUnique(this.label),n=t.allocateLayoutEntry(this._membership.layout),a=`texture_storage_${gt[this.dimension]}`;return t.addDeclaration(`@group(${n}) @binding(${this._membership.idx}) var ${r}: ${a}<${this._format}, ${Dn[this.access]}>;`),r}toString(){var t;return`${this.resourceType}:${(t=this.label)!=null?t:"<unnamed>"}`}},tr=class{constructor(t,r){this._props=t;this._texture=r;_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","texture-sampled-view");_chunkQRLTUOBJcjs.c.call(void 0, this,"channelDataType");_chunkQRLTUOBJcjs.c.call(void 0, this,"dimension");_chunkQRLTUOBJcjs.c.call(void 0, this,"_format");_chunkQRLTUOBJcjs.c.call(void 0, this,"_view");var n,a,o;this.dimension=(a=(n=t==null?void 0:t.dimension)!=null?n:r.props.dimension)!=null?a:"2d",this._format=(o=t==null?void 0:t.format)!=null?o:r.props.format,this.channelDataType=hn[this._format]}get label(){return this._texture.label}$name(t){return this._texture.$name(t),this}unwrap(){var t;return this._view||(this._view=this._texture.unwrap().createView(_chunkQRLTUOBJcjs.a.call(void 0, {label:`${(t=this.label)!=null?t:"<unnamed>"} - View`},this._props))),this._view}"~resolve"(t){var s;let r=t.names.makeUnique(this.label),n=((s=this._texture.props.sampleCount)!=null?s:1)>1,{group:a,binding:o}=t.allocateFixedEntry({texture:bn[this.channelDataType.type],viewDimension:this.dimension,multisampled:n},this),i=n?"texture_multisampled_2d":`texture_${gt[this.dimension]}`;return t.addDeclaration(`@group(${a}) @binding(${o}) var ${r}: ${i}<${t.resolve(this.channelDataType)}>;`),r}toString(){var t;return`${this.resourceType}:${(t=this.label)!=null?t:"<unnamed>"}`}},ft=class{constructor(t,r,n,a){this.dimension=r;this._multisampled=n;this._membership=a;_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","texture-sampled-view");_chunkQRLTUOBJcjs.c.call(void 0, this,"channelDataType");this.channelDataType=wn[t]}get label(){return this._membership.key}"~resolve"(t){let r=t.names.makeUnique(this.label),n=t.allocateLayoutEntry(this._membership.layout),a=this._multisampled?"texture_multisampled_2d":`texture_${gt[this.dimension]}`;return t.addDeclaration(`@group(${n}) @binding(${this._membership.idx}) var ${r}: ${a}<${t.resolve(this.channelDataType)}>;`),r}toString(){var t;return`${this.resourceType}:${(t=this.label)!=null?t:"<unnamed>"}`}};function rr(e){return!!(e!=null&&e.usableAsSampled)}function ma(e){return!!(e!=null&&e.usableAsRender)}var Tt=class e extends Error{constructor(t){var r;super(`Resource '${(r=t.label)!=null?r:"<unnamed>"}' cannot be bound as 'sampled'. Use .$usage('sampled') to allow it.`),Object.setPrototypeOf(this,e.prototype)}};function ct(e){return new ar(e)}function yt(e){return!!e&&e.resourceType==="bind-group-layout"}function or(e){return!!e&&e.resourceType==="bind-group"}var nr=class e extends Error{constructor(t,r){super(`Bind group '${t!=null?t:"<unnamed>"}' is missing a required binding '${r}'`),Object.setPrototypeOf(this,e.prototype)}},Fn=["compute"],Fe=["compute","vertex","fragment"],ar=class{constructor(t){this.entries=t;_chunkQRLTUOBJcjs.c.call(void 0, this,"_label");_chunkQRLTUOBJcjs.c.call(void 0, this,"_index");_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","bind-group-layout");_chunkQRLTUOBJcjs.c.call(void 0, this,"bound",{});var n,a,o,i,s;let r=0;for(let[l,u]of Object.entries(t)){if(u===null){r++;continue}let m={idx:r,key:l,layout:this};if("uniform"in u&&(this.bound[l]=new Oe("uniform",u.uniform,m)),"storage"in u){let f="type"in u.storage?u.storage:u.storage(0);this.bound[l]=new Oe((n=u.access)!=null?n:"readonly",f,m)}"texture"in u&&(this.bound[l]=new ft(u.texture,(a=u.viewDimension)!=null?a:"2d",(o=u.multisampled)!=null?o:!1,m)),"storageTexture"in u&&(this.bound[l]=new mt(u.storageTexture,(i=u.viewDimension)!=null?i:"2d",(s=u.access)!=null?s:"writeonly",m)),"externalTexture"in u&&(this.bound[l]=new dt(m)),"sampler"in u&&(u.sampler==="comparison"?this.bound[l]=new lt(m):this.bound[l]=new pt(m)),r++}}get label(){return this._label}get index(){return this._index}$name(t){return this._label=t,this}$idx(t){return this._index=t,this}unwrap(t){var n;return t.device.createBindGroupLayout({label:(n=this.label)!=null?n:"<unnamed>",entries:Object.values(this.entries).map((a,o)=>{var l,u,m,f;if(a===null)return null;let i=a.visibility,s={binding:o,visibility:0};if("uniform"in a)i=i!=null?i:Fe,s.buffer={type:"uniform"};else if("storage"in a)i=i!=null?i:a.access==="mutable"?Fn:Fe,s.buffer={type:a.access==="mutable"?"storage":"read-only-storage"};else if("sampler"in a)i=i!=null?i:Fe,s.sampler={type:a.sampler};else if("texture"in a)i=i!=null?i:Fe,s.texture={sampleType:a.texture,viewDimension:(l=a.viewDimension)!=null?l:"2d",multisampled:(u=a.multisampled)!=null?u:!1};else if("storageTexture"in a){let g=(m=a.access)!=null?m:"writeonly";i=i!=null?i:g==="readonly"?Fe:Fn,s.storageTexture={format:a.storageTexture,access:{mutable:"read-write",readonly:"read-only",writeonly:"write-only"}[g],viewDimension:(f=a.viewDimension)!=null?f:"2d"}}else"externalTexture"in a&&(i=i!=null?i:Fe,s.externalTexture={});return i!=null&&i.includes("compute")&&(s.visibility|=GPUShaderStage.COMPUTE),i!=null&&i.includes("vertex")&&(s.visibility|=GPUShaderStage.VERTEX),i!=null&&i.includes("fragment")&&(s.visibility|=GPUShaderStage.FRAGMENT),s}).filter(a=>a!==null)})}populate(t){return new ge(this,t)}},ge=class{constructor(t,r){this.layout=t;this.entries=r;_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","bind-group");for(let n of Object.keys(t.entries))if(t.entries[n]!==null&&!(n in r))throw new nr(t.label,n)}unwrap(t){var n;return t.device.createBindGroup({label:(n=this.layout.label)!=null?n:"<unnamed>",layout:t.unwrap(this.layout),entries:Object.entries(this.layout.entries).map(([a,o],i)=>{var l;if(o===null)return null;let s=this.entries[a];if(s===void 0)throw new Error(`'${a}' is a resource required to populate bind group layout '${(l=this.layout.label)!=null?l:"<unnamed>"}'.`);if("uniform"in o){let u;if(ae(s)){if(!st(s))throw new (0, _chunkQRLTUOBJcjs.g)(s);u={buffer:t.unwrap(s)}}else u={buffer:s};return{binding:i,resource:u}}if("storage"in o){let u;if(ae(s)){if(!fe(s))throw new Ge(s);u={buffer:t.unwrap(s)}}else u={buffer:s};return{binding:i,resource:u}}if("texture"in o){let u;if(J(s)){if(!rr(s))throw new Tt(s);u=t.unwrap(s.createView("sampled"))}else ze(s)?u=t.unwrap(s):u=s;return{binding:i,resource:u}}if("storageTexture"in o){let u;if(J(s)){if(!fe(s))throw new Ge(s);o.access==="readonly"?u=t.unwrap(s.createView("readonly")):o.access==="mutable"?u=t.unwrap(s.createView("mutable")):u=t.unwrap(s.createView("writeonly"))}else Ne(s)?u=t.unwrap(s):u=s;return{binding:i,resource:u}}if("sampler"in o)return ke(s)||We(s)?{binding:i,resource:t.unwrap(s)}:{binding:i,resource:s};if("externalTexture"in o)return{binding:i,resource:s};throw new Error(`Malformed bind group entry: ${s} (${JSON.stringify(s)})`)}).filter(a=>a!==null)})}};var Un="#CATCHALL#",sr=class{constructor(){_chunkQRLTUOBJcjs.c.call(void 0, this,"_stack",[]);_chunkQRLTUOBJcjs.c.call(void 0, this,"_itemDepth",0)}get itemDepth(){return this._itemDepth}get topItem(){let t=this._stack[this._stack.length-1];if(!t||t.type!=="item")throw new Error("Internal error, expected item layer to be on top.");return t}pushItem(){this._itemDepth++,this._stack.push({type:"item",usedSlots:new Set})}popItem(){this.pop("item")}pushSlotBindings(t){this._stack.push({type:"slotBinding",bindingMap:new WeakMap(t)})}popSlotBindings(){this.pop("slotBinding")}pushFunctionScope(t,r,n){this._stack.push({type:"functionScope",args:t,returnType:r,externalMap:n})}popFunctionScope(){this.pop("functionScope")}pushBlockScope(){this._stack.push({type:"blockScope",declarations:new Map})}popBlockScope(){this.pop("blockScope")}pop(t){let r=this._stack[this._stack.length-1];if(!r||t&&r.type!==t)throw new Error(`Internal error, expected a ${t} layer to be on top.`);this._stack.pop(),t==="item"&&this._itemDepth--}readSlot(t){for(let r=this._stack.length-1;r>=0;--r){let n=this._stack[r];if((n==null?void 0:n.type)==="item")n.usedSlots.add(t);else if((n==null?void 0:n.type)==="slotBinding"){let a=n.bindingMap.get(t);if(a!==void 0)return a}else if(!((n==null?void 0:n.type)==="functionScope"||(n==null?void 0:n.type)==="blockScope"))throw new Error("Unknown layer type.")}return t.defaultValue}getResourceById(t){for(let r=this._stack.length-1;r>=0;--r){let n=this._stack[r];if((n==null?void 0:n.type)==="functionScope"){let a=n.args.find(i=>i.value===t);if(a!==void 0)return a;let o=n.externalMap[t];return o!==void 0?{value:o,dataType:_chunk3JTP2ATRcjs.i.call(void 0, o)?we(o):_chunk3JTP2ATRcjs.f}:void 0}if((n==null?void 0:n.type)==="blockScope"){let a=n.declarations.get(t);if(a!==void 0)return{value:t,dataType:a}}}}defineBlockVariable(t,r){for(let n=this._stack.length-1;n>=0;--n){let a=this._stack[n];if((a==null?void 0:a.type)==="blockScope")return a.declarations.set(t,r),{value:t,dataType:r}}throw new Error("No block scope found to define a variable in.")}},xt=[""," "," "," "," "," "," "," "," "],ir=xt.length-1,ur=class{constructor(){_chunkQRLTUOBJcjs.c.call(void 0, this,"identLevel",0)}get pre(){var t;return(t=xt[this.identLevel])!=null?t:xt[ir].repeat(this.identLevel/ir)+xt[this.identLevel%ir]}indent(){let t=this.pre;return this.identLevel++,t}dedent(){return this.identLevel--,this.pre}},vn;vn=_chunk3JTP2ATRcjs.a;var pr=class{constructor(t){_chunkQRLTUOBJcjs.c.call(void 0, this,"_memoizedResolves",new WeakMap);_chunkQRLTUOBJcjs.c.call(void 0, this,"_memoizedDerived",new WeakMap);_chunkQRLTUOBJcjs.c.call(void 0, this,"_indentController",new ur);_chunkQRLTUOBJcjs.c.call(void 0, this,"_jitTranspiler");_chunkQRLTUOBJcjs.c.call(void 0, this,"_itemStateStack",new sr);_chunkQRLTUOBJcjs.c.call(void 0, this,"_declarations",[]);_chunkQRLTUOBJcjs.c.call(void 0, this,vn,{itemStateStack:this._itemStateStack});_chunkQRLTUOBJcjs.c.call(void 0, this,"bindGroupLayoutsToPlaceholderMap",new Map);_chunkQRLTUOBJcjs.c.call(void 0, this,"_nextFreeLayoutPlaceholderIdx",0);_chunkQRLTUOBJcjs.c.call(void 0, this,"fixedBindings",[]);_chunkQRLTUOBJcjs.c.call(void 0, this,"callStack",[]);_chunkQRLTUOBJcjs.c.call(void 0, this,"names");this.names=t.names,this._jitTranspiler=t.jitTranspiler}get pre(){return this._indentController.pre}indent(){return this._indentController.indent()}dedent(){return this._indentController.dedent()}getById(t){let r=this._itemStateStack.getResourceById(t);return r===void 0?null:r}defineVariable(t,r){return this._itemStateStack.defineBlockVariable(t,r)}pushBlockScope(){this._itemStateStack.pushBlockScope()}popBlockScope(){this._itemStateStack.popBlockScope()}transpileFn(t){if(!this._jitTranspiler)throw new Error("Tried to execute a tgpu.fn function without providing a JIT transpiler, or transpiling at build time.");return this._jitTranspiler.transpileFn(t)}fnToWgsl(t){this._itemStateStack.pushFunctionScope(t.args,t.returnType,t.externalMap);try{let r=kt(this,t.body),n=t.args.map(a=>`${a.value}: ${this.resolve(a.dataType)}`).join(", ");return{head:t.returnType!==void 0?`(${n}) -> ${_chunk3QXCKMEJcjs.ua.call(void 0, t.returnType)} ${this.resolve(t.returnType)}`:`(${n})`,body:r}}finally{this._itemStateStack.popFunctionScope()}}addDeclaration(t){this._declarations.push(t)}allocateLayoutEntry(t){let r=this.bindGroupLayoutsToPlaceholderMap,n=r.get(t);return n||(n=`#BIND_GROUP_LAYOUT_${this._nextFreeLayoutPlaceholderIdx++}#`,r.set(t,n)),n}allocateFixedEntry(t,r){let n=this.fixedBindings.length;return this.fixedBindings.push({layoutEntry:t,resource:r}),{group:Un,binding:n}}readSlot(t){let r=this._itemStateStack.readSlot(t);if(r===void 0)throw new (0, _chunkQRLTUOBJcjs.f)(t);return r}withSlots(t,r){this._itemStateStack.pushSlotBindings(t);try{return r()}finally{this._itemStateStack.popSlotBindings()}}unwrap(t){if(_chunk3JTP2ATRcjs.d.call(void 0, t))return this.withSlots(t["~providing"].pairs,()=>this.unwrap(t["~providing"].inner));let r=t;for(;;)if(_chunk3JTP2ATRcjs.b.call(void 0, r))r=this.readSlot(r);else if(_chunk3JTP2ATRcjs.c.call(void 0, r))r=this._getOrCompute(r);else break;return r}_getOrCompute(t){var n;let r=(n=this._memoizedDerived.get(t))!=null?n:[];this._itemStateStack.pushItem();try{for(let i of r)if([...i.slotToValueMap.entries()].every(([l,u])=>l.areEqual(this._itemStateStack.readSlot(l),u)))return i.result;_chunkQRLTUOBJcjs.n.call(void 0, _chunkQRLTUOBJcjs.k.CPU);let a;try{a=t["~compute"]()}finally{_chunkQRLTUOBJcjs.o.call(void 0, _chunkQRLTUOBJcjs.k.CPU)}let o=new Map;for(let i of this._itemStateStack.topItem.usedSlots)o.set(i,this._itemStateStack.readSlot(i));return r.push({slotToValueMap:o,result:a}),this._memoizedDerived.set(t,r),a}catch(a){throw a instanceof _chunkQRLTUOBJcjs.e?a.appendToTrace(t):new (0, _chunkQRLTUOBJcjs.e)(a,[t])}finally{this._itemStateStack.popItem()}}_getOrInstantiate(t){var n;let r=(n=this._memoizedResolves.get(t))!=null?n:[];this._itemStateStack.pushItem();try{for(let i of r)if([...i.slotToValueMap.entries()].every(([l,u])=>l.areEqual(this._itemStateStack.readSlot(l),u)))return i.result;let a;_chunk3QXCKMEJcjs.h.call(void 0, t)?a=$t(this,t):_chunk3JTP2ATRcjs.c.call(void 0, t)||_chunk3JTP2ATRcjs.b.call(void 0, t)?a=this.resolve(this.unwrap(t)):_chunk3JTP2ATRcjs.h.call(void 0, t)?a=t["~resolve"](this):a=this.resolveValue(t);let o=new Map;for(let i of this._itemStateStack.topItem.usedSlots)o.set(i,this._itemStateStack.readSlot(i));return r.push({slotToValueMap:o,result:a}),this._memoizedResolves.set(t,r),a}catch(a){throw a instanceof _chunkQRLTUOBJcjs.e?a.appendToTrace(t):new (0, _chunkQRLTUOBJcjs.e)(a,[t])}finally{this._itemStateStack.popItem()}}resolve(t){if(_chunk3JTP2ATRcjs.d.call(void 0, t))return this.withSlots(t["~providing"].pairs,()=>this.resolve(t["~providing"].inner));if(t&&typeof t=="object"||typeof t=="function"){if(this._itemStateStack.itemDepth===0)try{_chunkQRLTUOBJcjs.n.call(void 0, _chunkQRLTUOBJcjs.k.GPU);let r=_chunkQRLTUOBJcjs.l.call(void 0, this,()=>this._getOrInstantiate(t));return`${[...this._declarations].join(`
22
+ `}return u}let n=Mt[_chunkQRLTUOBJcjs.Z.call(void 0, e)?e.inner.type:e.type];return`output.${Nt[n]}(${t}, ${r}, littleEndian);
23
+ `}function it(e){if(Wt.has(e))return Wt.get(e);let t=zt(e,"offset","value"),r=new Function("output","offset","value","littleEndian=true",t);return Wt.set(e,r),r}var V={bool(e,t,r){e.writeBool(r)},f32(e,t,r){e.writeFloat32(r)},f16(e,t,r){e.writeFloat16(r)},i32(e,t,r){e.writeInt32(r)},u32(e,t,r){e.writeUint32(r)},vec2f(e,t,r){e.writeFloat32(r.x),e.writeFloat32(r.y)},vec2h(e,t,r){e.writeFloat16(r.x),e.writeFloat16(r.y)},vec2i(e,t,r){e.writeInt32(r.x),e.writeInt32(r.y)},vec2u(e,t,r){e.writeUint32(r.x),e.writeUint32(r.y)},vec3f(e,t,r){e.writeFloat32(r.x),e.writeFloat32(r.y),e.writeFloat32(r.z)},vec3h(e,t,r){e.writeFloat16(r.x),e.writeFloat16(r.y),e.writeFloat16(r.z)},vec3i(e,t,r){e.writeInt32(r.x),e.writeInt32(r.y),e.writeInt32(r.z)},vec3u(e,t,r){e.writeUint32(r.x),e.writeUint32(r.y),e.writeUint32(r.z)},vec4f(e,t,r){e.writeFloat32(r.x),e.writeFloat32(r.y),e.writeFloat32(r.z),e.writeFloat32(r.w)},vec4h(e,t,r){e.writeFloat16(r.x),e.writeFloat16(r.y),e.writeFloat16(r.z),e.writeFloat16(r.w)},vec4i(e,t,r){e.writeInt32(r.x),e.writeInt32(r.y),e.writeInt32(r.z),e.writeInt32(r.w)},vec4u(e,t,r){e.writeUint32(r.x),e.writeUint32(r.y),e.writeUint32(r.z),e.writeUint32(r.w)},mat2x2f(e,t,r){for(let n=0;n<r.length;++n)e.writeFloat32(r[n])},mat3x3f(e,t,r){for(let n=0;n<r.length;++n)e.writeFloat32(r[n])},mat4x4f(e,t,r){for(let n=0;n<r.length;++n)e.writeFloat32(r[n])},struct(e,t,r){let n=_chunk3QXCKMEJcjs.$.call(void 0, t);D(e,n);for(let[a,o]of Object.entries(t.propTypes))D(e,_chunk3QXCKMEJcjs.$.call(void 0, o)),ne(e,o,r[a]);D(e,n)},array(e,t,r){if(t.elementCount===0)throw new Error("Cannot write using a runtime-sized schema.");let n=_chunk3QXCKMEJcjs.$.call(void 0, t);D(e,n);let a=e.currentByteOffset;for(let o=0;o<Math.min(t.elementCount,r.length);o++)D(e,n),ne(e,t.elementType,r[o]);e.seekTo(a+_chunk3QXCKMEJcjs.ca.call(void 0, t))},ptr(){throw new Error("Pointers are not host-shareable")},atomic(e,t,r){var n;(n=V[t.inner.type])==null||n.call(V,e,t,r)},decorated(e,t,r){var o,i;let n=_chunk3QXCKMEJcjs.aa.call(void 0, t);D(e,n);let a=e.currentByteOffset;(i=V[(o=t.inner)==null?void 0:o.type])==null||i.call(V,e,t.inner,r),e.seekTo(a+_chunk3QXCKMEJcjs.ca.call(void 0, t))},uint8(e,t,r){e.writeUint8(r)},uint8x2(e,t,r){e.writeUint8(r.x),e.writeUint8(r.y)},uint8x4(e,t,r){e.writeUint8(r.x),e.writeUint8(r.y),e.writeUint8(r.z),e.writeUint8(r.w)},sint8(e,t,r){e.writeInt8(r)},sint8x2(e,t,r){e.writeInt8(r.x),e.writeInt8(r.y)},sint8x4(e,t,r){e.writeInt8(r.x),e.writeInt8(r.y),e.writeInt8(r.z),e.writeInt8(r.w)},unorm8(e,t,r){e.writeUint8(r*255)},unorm8x2(e,t,r){e.writeUint8(r.x*255),e.writeUint8(r.y*255)},unorm8x4(e,t,r){e.writeUint8(r.x*255),e.writeUint8(r.y*255),e.writeUint8(r.z*255),e.writeUint8(r.w*255)},snorm8(e,t,r){e.writeUint8(r*127+128)},snorm8x2(e,t,r){e.writeUint8(r.x*127+128),e.writeUint8(r.y*127+128)},snorm8x4(e,t,r){e.writeUint8(r.x*127+128),e.writeUint8(r.y*127+128),e.writeUint8(r.z*127+128),e.writeUint8(r.w*127+128)},uint16(e,t,r){e.writeUint16(r)},uint16x2(e,t,r){e.writeUint16(r.x),e.writeUint16(r.y)},uint16x4(e,t,r){e.writeUint16(r.x),e.writeUint16(r.y),e.writeUint16(r.z),e.writeUint16(r.w)},sint16(e,t,r){e.writeInt16(r)},sint16x2(e,t,r){e.writeInt16(r.x),e.writeInt16(r.y)},sint16x4(e,t,r){e.writeInt16(r.x),e.writeInt16(r.y),e.writeInt16(r.z),e.writeInt16(r.w)},unorm16(e,t,r){e.writeUint16(r*65535)},unorm16x2(e,t,r){e.writeUint16(r.x*65535),e.writeUint16(r.y*65535)},unorm16x4(e,t,r){e.writeUint16(r.x*65535),e.writeUint16(r.y*65535),e.writeUint16(r.z*65535),e.writeUint16(r.w*65535)},snorm16(e,t,r){e.writeUint16(r*32767+32768)},snorm16x2(e,t,r){e.writeUint16(r.x*32767+32768),e.writeUint16(r.y*32767+32768)},snorm16x4(e,t,r){e.writeUint16(r.x*32767+32768),e.writeUint16(r.y*32767+32768),e.writeUint16(r.z*32767+32768),e.writeUint16(r.w*32767+32768)},float16(e,t,r){e.writeFloat16(r)},float16x2(e,t,r){e.writeFloat16(r.x),e.writeFloat16(r.y)},float16x4(e,t,r){e.writeFloat16(r.x),e.writeFloat16(r.y),e.writeFloat16(r.z),e.writeFloat16(r.w)},float32(e,t,r){e.writeFloat32(r)},float32x2(e,t,r){e.writeFloat32(r.x),e.writeFloat32(r.y)},float32x3(e,t,r){e.writeFloat32(r.x),e.writeFloat32(r.y),e.writeFloat32(r.z)},float32x4(e,t,r){e.writeFloat32(r.x),e.writeFloat32(r.y),e.writeFloat32(r.z),e.writeFloat32(r.w)},uint32(e,t,r){e.writeUint32(r)},uint32x2(e,t,r){e.writeUint32(r.x),e.writeUint32(r.y)},uint32x3(e,t,r){e.writeUint32(r.x),e.writeUint32(r.y),e.writeUint32(r.z)},uint32x4(e,t,r){e.writeUint32(r.x),e.writeUint32(r.y),e.writeUint32(r.z),e.writeUint32(r.w)},sint32(e,t,r){e.writeInt32(r)},sint32x2(e,t,r){e.writeInt32(r.x),e.writeInt32(r.y)},sint32x3(e,t,r){e.writeInt32(r.x),e.writeInt32(r.y),e.writeInt32(r.z)},sint32x4(e,t,r){e.writeInt32(r.x),e.writeInt32(r.y),e.writeInt32(r.z),e.writeInt32(r.w)},"unorm10-10-10-2"(e,t,r){let n=0;n|=(r.x*1023&1023)<<22,n|=(r.x*1023&1023)<<12,n|=(r.y*1023&1023)<<2,n|=r.z*3&3,e.writeUint32(n)},"unorm8x4-bgra"(e,t,r){e.writeUint8(r.z*255),e.writeUint8(r.y*255),e.writeUint8(r.x*255),e.writeUint8(r.w*255)},disarray(e,t,r){var o,i;let n=_chunk3QXCKMEJcjs.$.call(void 0, t);D(e,n);let a=e.currentByteOffset;for(let s=0;s<Math.min(t.elementCount,r.length);s++)D(e,n),(i=V[(o=t.elementType)==null?void 0:o.type])==null||i.call(V,e,t.elementType,r[s]);e.seekTo(a+_chunk3QXCKMEJcjs.ca.call(void 0, t))},unstruct(e,t,r){var n;for(let[a,o]of Object.entries(t.propTypes))(n=V[o.type])==null||n.call(V,e,o,r[a])},"loose-decorated"(e,t,r){var i;let n=_chunk3QXCKMEJcjs.aa.call(void 0, t);D(e,n);let a=e.currentByteOffset,o=V[(i=t.inner)==null?void 0:i.type];return o==null||o(e,t.inner,r),e.seekTo(a+_chunk3QXCKMEJcjs.ca.call(void 0, t)),r}};function ne(e,t,r){let n=V[t.type];if(!n)throw new Error(`Cannot write data of type '${t.type}'.`);n(e,t,r)}var me={bool(e){return e.readBool()},f32(e){return e.readFloat32()},f16(e){return e.readFloat16()},i32(e){return e.readInt32()},u32(e){return e.readUint32()},vec2f(e){return _chunkQRLTUOBJcjs.s.call(void 0, e.readFloat32(),e.readFloat32())},vec3f(e){return _chunkQRLTUOBJcjs.w.call(void 0, e.readFloat32(),e.readFloat32(),e.readFloat32())},vec4f(e){return _chunkQRLTUOBJcjs.A.call(void 0, e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32())},vec2h(e){return _chunkQRLTUOBJcjs.t.call(void 0, e.readFloat16(),e.readFloat16())},vec3h(e){return _chunkQRLTUOBJcjs.x.call(void 0, e.readFloat16(),e.readFloat16(),e.readFloat16())},vec4h(e){return _chunkQRLTUOBJcjs.B.call(void 0, e.readFloat16(),e.readFloat16(),e.readFloat16(),e.readFloat16())},vec2i(e){return _chunkQRLTUOBJcjs.u.call(void 0, e.readInt32(),e.readInt32())},vec3i(e){return _chunkQRLTUOBJcjs.y.call(void 0, e.readInt32(),e.readInt32(),e.readInt32())},vec4i(e){return _chunkQRLTUOBJcjs.C.call(void 0, e.readInt32(),e.readInt32(),e.readInt32(),e.readInt32())},vec2u(e){return _chunkQRLTUOBJcjs.v.call(void 0, e.readUint32(),e.readUint32())},vec3u(e){return _chunkQRLTUOBJcjs.z.call(void 0, e.readUint32(),e.readUint32(),e.readUint32())},vec4u(e){return _chunkQRLTUOBJcjs.D.call(void 0, e.readUint32(),e.readUint32(),e.readUint32(),e.readUint32())},mat2x2f(e){return _chunkQRLTUOBJcjs.E.call(void 0, e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32())},mat3x3f(e){let t=()=>{let r=e.readFloat32();return e.readFloat32(),r};return _chunkQRLTUOBJcjs.F.call(void 0, e.readFloat32(),e.readFloat32(),t(),e.readFloat32(),e.readFloat32(),t(),e.readFloat32(),e.readFloat32(),t())},mat4x4f(e){return _chunkQRLTUOBJcjs.G.call(void 0, e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32())},struct(e,t){let r=_chunk3QXCKMEJcjs.$.call(void 0, t);D(e,r);let n={};for(let[a,o]of Object.entries(t.propTypes))D(e,_chunk3QXCKMEJcjs.$.call(void 0, o)),n[a]=O(e,o);return D(e,r),n},array(e,t){if(t.elementCount===0)throw new Error("Cannot read using a runtime-sized schema.");let r=_chunk3QXCKMEJcjs.$.call(void 0, t),n=[];for(let a=0;a<t.elementCount;a++){D(e,r);let o=t.elementType,i=O(e,o);n.push(i)}return D(e,r),n},ptr(){throw new Error("Pointers are not host-shareable")},atomic(e,t){return O(e,t.inner)},decorated(e,t){let r=_chunk3QXCKMEJcjs.aa.call(void 0, t);D(e,r);let n=e.currentByteOffset,a=O(e,t.inner);return e.seekTo(n+_chunk3QXCKMEJcjs.ca.call(void 0, t)),a},uint8:e=>e.readUint8(),uint8x2:e=>_chunkQRLTUOBJcjs.v.call(void 0, e.readUint8(),e.readUint8()),uint8x4:e=>_chunkQRLTUOBJcjs.D.call(void 0, e.readUint8(),e.readUint8(),e.readUint8(),e.readUint8()),sint8:e=>e.readInt8(),sint8x2:e=>_chunkQRLTUOBJcjs.u.call(void 0, e.readInt8(),e.readInt8()),sint8x4:e=>_chunkQRLTUOBJcjs.C.call(void 0, e.readInt8(),e.readInt8(),e.readInt8(),e.readInt8()),unorm8:e=>e.readUint8()/255,unorm8x2:e=>_chunkQRLTUOBJcjs.s.call(void 0, e.readUint8()/255,e.readUint8()/255),unorm8x4:e=>_chunkQRLTUOBJcjs.A.call(void 0, e.readUint8()/255,e.readUint8()/255,e.readUint8()/255,e.readUint8()/255),snorm8:e=>(e.readUint8()-128)/127,snorm8x2:e=>_chunkQRLTUOBJcjs.s.call(void 0, (e.readUint8()-128)/127,(e.readUint8()-128)/127),snorm8x4:e=>_chunkQRLTUOBJcjs.A.call(void 0, (e.readUint8()-128)/127,(e.readUint8()-128)/127,(e.readUint8()-128)/127,(e.readUint8()-128)/127),uint16:e=>e.readUint16(),uint16x2:e=>_chunkQRLTUOBJcjs.v.call(void 0, e.readUint16(),e.readUint16()),uint16x4:e=>_chunkQRLTUOBJcjs.D.call(void 0, e.readUint16(),e.readUint16(),e.readUint16(),e.readUint16()),sint16:e=>e.readInt16(),sint16x2:e=>_chunkQRLTUOBJcjs.u.call(void 0, e.readInt16(),e.readInt16()),sint16x4:e=>_chunkQRLTUOBJcjs.C.call(void 0, e.readInt16(),e.readInt16(),e.readInt16(),e.readInt16()),unorm16:e=>e.readUint16()/65535,unorm16x2:e=>_chunkQRLTUOBJcjs.s.call(void 0, e.readUint16()/65535,e.readUint16()/65535),unorm16x4:e=>_chunkQRLTUOBJcjs.A.call(void 0, e.readUint16()/65535,e.readUint16()/65535,e.readUint16()/65535,e.readUint16()/65535),snorm16:e=>(e.readUint16()-32768)/32767,snorm16x2:e=>_chunkQRLTUOBJcjs.s.call(void 0, me.snorm16(e),me.snorm16(e)),snorm16x4:e=>_chunkQRLTUOBJcjs.A.call(void 0, me.snorm16(e),me.snorm16(e),me.snorm16(e),me.snorm16(e)),float16(e){return e.readFloat16()},float16x2:e=>_chunkQRLTUOBJcjs.s.call(void 0, e.readFloat16(),e.readFloat16()),float16x4:e=>_chunkQRLTUOBJcjs.A.call(void 0, e.readFloat16(),e.readFloat16(),e.readFloat16(),e.readFloat16()),float32:e=>e.readFloat32(),float32x2:e=>_chunkQRLTUOBJcjs.s.call(void 0, e.readFloat32(),e.readFloat32()),float32x3:e=>_chunkQRLTUOBJcjs.w.call(void 0, e.readFloat32(),e.readFloat32(),e.readFloat32()),float32x4:e=>_chunkQRLTUOBJcjs.A.call(void 0, e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32()),uint32:e=>e.readUint32(),uint32x2:e=>_chunkQRLTUOBJcjs.v.call(void 0, e.readUint32(),e.readUint32()),uint32x3:e=>_chunkQRLTUOBJcjs.z.call(void 0, e.readUint32(),e.readUint32(),e.readUint32()),uint32x4:e=>_chunkQRLTUOBJcjs.D.call(void 0, e.readUint32(),e.readUint32(),e.readUint32(),e.readUint32()),sint32:e=>e.readInt32(),sint32x2:e=>_chunkQRLTUOBJcjs.u.call(void 0, e.readInt32(),e.readInt32()),sint32x3:e=>_chunkQRLTUOBJcjs.y.call(void 0, e.readInt32(),e.readInt32(),e.readInt32()),sint32x4:e=>_chunkQRLTUOBJcjs.C.call(void 0, e.readInt32(),e.readInt32(),e.readInt32(),e.readInt32()),"unorm10-10-10-2"(e){let t=e.readUint32(),r=(t>>22)/1023,n=(t>>12&1023)/1023,a=(t>>2&1023)/1023,o=(t&3)/3;return _chunkQRLTUOBJcjs.A.call(void 0, r,n,a,o)},"unorm8x4-bgra"(e){let t=e.readByte()/255,r=e.readByte()/255,n=e.readByte()/255,a=e.readByte()/255;return _chunkQRLTUOBJcjs.A.call(void 0, n,r,t,a)},unstruct(e,t){let r={};for(let[n,a]of Object.entries(t.propTypes))r[n]=O(e,a);return r},disarray(e,t){let r=_chunk3QXCKMEJcjs.$.call(void 0, t),n=[];for(let a=0;a<t.elementCount;a++)D(e,r),n.push(O(e,t.elementType));return D(e,r),n},"loose-decorated"(e,t){D(e,_chunk3QXCKMEJcjs.aa.call(void 0, t));let r=e.currentByteOffset,n=O(e,t.inner);return e.seekTo(r+_chunk3QXCKMEJcjs.ca.call(void 0, t)),n}};function O(e,t){let r=me[t.type];if(!r)throw new Error(`Cannot read data of type '${t.type}'.`);return r(e,t)}function pn(e,t){var u;let r=_chunk3QXCKMEJcjs.ca.call(void 0, e);if(r===0||t===void 0||t===null)return[];let n=new ArrayBuffer(r),a=new (0, _typedbinary.BufferWriter)(n),o=[];function i(m,f,g,w){var y;if(f!=null){if(_chunkQRLTUOBJcjs.X.call(void 0, m)||_chunk3QXCKMEJcjs.e.call(void 0, m)){let T=at(m);for(let[F,c]of Object.entries(T)){let x=m.propTypes[F];if(!x)continue;let Te=f[F];Te!==void 0&&i(x,Te,g+c.offset,(y=c.padding)!=null?y:w)}return}if(_chunkQRLTUOBJcjs.W.call(void 0, m)||_chunk3QXCKMEJcjs.d.call(void 0, m)){let T=m,F=_chunk3QXCKMEJcjs.j.call(void 0, _chunk3QXCKMEJcjs.ca.call(void 0, T.elementType),_chunk3QXCKMEJcjs.$.call(void 0, T.elementType));if(!Array.isArray(f))throw new Error("Partial value for array must be an array");let c=f;c.sort((x,Te)=>x.idx-Te.idx);for(let{idx:x,value:Te}of c)i(T.elementType,Te,g+x*F,F-_chunk3QXCKMEJcjs.ca.call(void 0, T.elementType))}else{let T=_chunk3QXCKMEJcjs.ca.call(void 0, m);a.seekTo(g),ne(a,m,f),o.push({start:g,end:g+T,padding:w})}}}if(i(e,t,0),o.length===0)return[];let s=[],l=o[0];for(let m=1;m<o.length;m++){let f=o[m];if(!f||!l)throw new Error("Internal error: missing segment");f.start===l.end+((u=l.padding)!=null?u:0)?(l.end=f.end,l.padding=f.padding):(s.push({data:new Uint8Array(n,l.start,l.end-l.start)}),l=f)}if(!l)throw new Error("Internal error: missing segment");return s.push({data:new Uint8Array(n,l.start,l.end-l.start)}),s}function fe(e){return!!(e!=null&&e.usableAsStorage)}var Ge=class e extends Error{constructor(t){var r;super(`Resource '${(r=t.label)!=null?r:"<unnamed>"}' cannot be bound as 'storage'. Use .$usage('storage') to allow it.`),Object.setPrototypeOf(this,e.prototype)}};function st(e){return!!e.usableAsUniform}var Tn={uniform:"uniform",mutable:"storage, read_write",readonly:"storage, read"},fn;fn=_chunk3JTP2ATRcjs.a;var $e=class{constructor(t,r){this.usage=t;this.buffer=r;_chunkQRLTUOBJcjs.c.call(void 0, this,"~repr");_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","buffer-usage");_chunkQRLTUOBJcjs.c.call(void 0, this,fn);this[_chunk3JTP2ATRcjs.a]={dataType:r.dataType}}get label(){return this.buffer.label}$name(t){return this.buffer.$name(t),this}"~resolve"(t){let r=t.names.makeUnique(this.label),{group:n,binding:a}=t.allocateFixedEntry(this.usage==="uniform"?{uniform:this.buffer.dataType}:{storage:this.buffer.dataType,access:this.usage},this.buffer),o=Tn[this.usage];return t.addDeclaration(`@group(${n}) @binding(${a}) var<${o}> ${r}: ${t.resolve(this.buffer.dataType)};`),r}write(t){this.buffer.write(t)}toString(){var t;return`${this.usage}:${(t=this.label)!=null?t:"<unnamed>"}`}get value(){if(!_chunkQRLTUOBJcjs.p.call(void 0, ))throw new Error("Cannot access buffer's value directly in JS.");return new Proxy({"~resolve":t=>t.resolve(this),toString:()=>{var t;return`.value:${(t=this.label)!=null?t:"<unnamed>"}`},[_chunk3JTP2ATRcjs.a]:{dataType:this.buffer.dataType}},M)}},gn;gn=_chunk3JTP2ATRcjs.a;var Oe=class{constructor(t,r,n){this.usage=t;this.dataType=r;this._membership=n;_chunkQRLTUOBJcjs.c.call(void 0, this,"~repr");_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","buffer-usage");_chunkQRLTUOBJcjs.c.call(void 0, this,gn);this[_chunk3JTP2ATRcjs.a]={dataType:r}}get label(){return this._membership.key}"~resolve"(t){let r=t.names.makeUnique(this.label),n=t.allocateLayoutEntry(this._membership.layout),a=Tn[this.usage];return t.addDeclaration(`@group(${n}) @binding(${this._membership.idx}) var<${a}> ${r}: ${t.resolve(this.dataType)};`),r}toString(){var t;return`${this.usage}:${(t=this.label)!=null?t:"<unnamed>"}`}get value(){if(!_chunkQRLTUOBJcjs.p.call(void 0, ))throw new Error("Cannot access buffer's value directly in JS.");return new Proxy({"~resolve":t=>t.resolve(this),toString:()=>{var t;return`.value:${(t=this.label)!=null?t:"<unnamed>"}`},[_chunk3JTP2ATRcjs.a]:{dataType:this.dataType}},M)}},ln=new WeakMap;function jt(e){if(!fe(e))throw new Error(`Cannot pass ${e} to asMutable, as it is not allowed to be used as storage. To allow it, call .$usage('storage') when creating the buffer.`);let t=ln.get(e);return t||(t=new $e("mutable",e),ln.set(e,t)),t}var dn=new WeakMap;function Kt(e){if(!fe(e))throw new Error(`Cannot pass ${e} to asReadonly, as it is not allowed to be used as storage. To allow it, call .$usage('storage') when creating the buffer.`);let t=dn.get(e);return t||(t=new $e("readonly",e),dn.set(e,t)),t}var mn=new WeakMap;function qt(e){if(!st(e))throw new Error(`Cannot pass ${e} to asUniform, as it is not allowed to be used as a uniform. To allow it, call .$usage('uniform') when creating the buffer.`);let t=mn.get(e);return t||(t=new $e("uniform",e),mn.set(e,t)),t}var Yt={uniform:qt,mutable:jt,readonly:Kt};function yn(e,t,r){return _chunkQRLTUOBJcjs.V.call(void 0, t)?new ut(e,t,r):new ut(e,t,r,["storage","uniform"])}function ae(e){return e.resourceType==="buffer"}function ma(e){return!!e.usableAsVertex}var cn=_typedbinary.getSystemEndianness.call(void 0, ),ut=class{constructor(t,r,n,a){this._group=t;this.dataType=r;this.initialOrBuffer=n;this._disallowedUsages=a;_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","buffer");_chunkQRLTUOBJcjs.c.call(void 0, this,"flags",GPUBufferUsage.COPY_DST|GPUBufferUsage.COPY_SRC);_chunkQRLTUOBJcjs.c.call(void 0, this,"_buffer",null);_chunkQRLTUOBJcjs.c.call(void 0, this,"_ownBuffer");_chunkQRLTUOBJcjs.c.call(void 0, this,"_destroyed",!1);_chunkQRLTUOBJcjs.c.call(void 0, this,"_hostBuffer");_chunkQRLTUOBJcjs.c.call(void 0, this,"_label");_chunkQRLTUOBJcjs.c.call(void 0, this,"initial");_chunkQRLTUOBJcjs.c.call(void 0, this,"usableAsUniform",!1);_chunkQRLTUOBJcjs.c.call(void 0, this,"usableAsStorage",!1);_chunkQRLTUOBJcjs.c.call(void 0, this,"usableAsVertex",!1);_chunk3JTP2ATRcjs.j.call(void 0, n)?(this._ownBuffer=!1,this._buffer=n):(this._ownBuffer=!0,this.initial=n)}get label(){return this._label}get buffer(){var r;let t=this._group.device;if(this._destroyed)throw new Error("This buffer has been destroyed");if(!this._buffer&&(this._buffer=t.createBuffer({size:_chunk3QXCKMEJcjs.ca.call(void 0, this.dataType),usage:this.flags,mappedAtCreation:!!this.initial,label:(r=this.label)!=null?r:"<unnamed>"}),this.initial)){let n=new (0, _typedbinary.BufferWriter)(this._buffer.getMappedRange());ne(n,this.dataType,this.initial),this._buffer.unmap()}return this._buffer}get destroyed(){return this._destroyed}$name(t){return this._label=t,this._buffer&&(this._buffer.label=t),this}$usage(...t){var r;for(let n of t){if((r=this._disallowedUsages)!=null&&r.includes(n))throw new Error(`Buffer of type ${this.dataType.type} cannot be used as ${n}`);this.flags|=n==="uniform"?GPUBufferUsage.UNIFORM:0,this.flags|=n==="storage"?GPUBufferUsage.STORAGE:0,this.flags|=n==="vertex"?GPUBufferUsage.VERTEX:0,this.usableAsUniform=this.usableAsUniform||n==="uniform",this.usableAsStorage=this.usableAsStorage||n==="storage",this.usableAsVertex=this.usableAsVertex||n==="vertex"}return this}$addFlags(t){if(!this._ownBuffer)throw new Error("Cannot add flags to a buffer that is not managed by TypeGPU.");return t&GPUBufferUsage.MAP_READ?(this.flags=GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ,this):t&GPUBufferUsage.MAP_WRITE?(this.flags=GPUBufferUsage.COPY_SRC|GPUBufferUsage.MAP_WRITE,this):(this.flags|=t,this)}compileWriter(){if(ot)it(this.dataType);else throw new Error("This environment does not allow eval")}write(t){let r=this.buffer,n=this._group.device;if(r.mapState==="mapped"){let o=r.getMappedRange();if(ot){it(this.dataType)(new DataView(o),0,t,cn==="little");return}ne(new (0, _typedbinary.BufferWriter)(o),this.dataType,t);return}let a=_chunk3QXCKMEJcjs.ca.call(void 0, this.dataType);this._hostBuffer||(this._hostBuffer=new ArrayBuffer(a)),this._group.flush(),ot?it(this.dataType)(new DataView(this._hostBuffer),0,t,cn==="little"):ne(new (0, _typedbinary.BufferWriter)(this._hostBuffer),this.dataType,t),n.queue.writeBuffer(r,0,this._hostBuffer,0,a)}writePartial(t){let r=this.buffer,n=this._group.device,a=pn(this.dataType,t);if(r.mapState==="mapped"){let o=r.getMappedRange(),i=new Uint8Array(o);for(let s of a)i.set(s.data,s.data.byteOffset)}else for(let o of a)n.queue.writeBuffer(r,o.data.byteOffset,o.data,0,o.data.byteLength)}copyFrom(t){if(this.buffer.mapState==="mapped")throw new Error("Cannot copy to a mapped buffer.");let r=_chunk3QXCKMEJcjs.ca.call(void 0, this.dataType);this._group.commandEncoder.copyBufferToBuffer(t.buffer,0,this.buffer,0,r)}async read(){this._group.flush();let t=this.buffer,r=this._group.device;if(t.mapState==="mapped"){let i=t.getMappedRange();return O(new (0, _typedbinary.BufferReader)(i),this.dataType)}if(t.usage&GPUBufferUsage.MAP_READ){await t.mapAsync(GPUMapMode.READ);let i=t.getMappedRange(),s=O(new (0, _typedbinary.BufferReader)(i),this.dataType);return t.unmap(),s}let n=r.createBuffer({size:_chunk3QXCKMEJcjs.ca.call(void 0, this.dataType),usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ}),a=r.createCommandEncoder();a.copyBufferToBuffer(t,0,n,0,_chunk3QXCKMEJcjs.ca.call(void 0, this.dataType)),r.queue.submit([a.finish()]),await r.queue.onSubmittedWorkDone(),await n.mapAsync(GPUMapMode.READ,0,_chunk3QXCKMEJcjs.ca.call(void 0, this.dataType));let o=O(new (0, _typedbinary.BufferReader)(n.getMappedRange()),this.dataType);return n.unmap(),n.destroy(),o}as(t){var r;return(r=Yt[t])==null?void 0:r.call(Yt,this)}destroy(){var t;this._destroyed||(this._destroyed=!0,this._ownBuffer&&((t=this._buffer)==null||t.destroy()))}toString(){var t;return`buffer:${(t=this._label)!=null?t:"<unnamed>"}`}};function xn(e){return new Qt(e)}function hn(e){return new Xt(e)}function ke(e){return(e==null?void 0:e.resourceType)==="sampler"}function We(e){return(e==null?void 0:e.resourceType)==="sampler-comparison"}var pt=class{constructor(t){this._membership=t;_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","sampler")}get label(){return this._membership.key}"~resolve"(t){let r=t.names.makeUnique(this.label),n=t.allocateLayoutEntry(this._membership.layout);return t.addDeclaration(`@group(${n}) @binding(${this._membership.idx}) var ${r}: sampler;`),r}toString(){var t;return`${this.resourceType}:${(t=this.label)!=null?t:"<unnamed>"}`}},lt=class{constructor(t){this._membership=t;_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","sampler-comparison")}get label(){return this._membership.key}"~resolve"(t){let r=t.names.makeUnique(this.label),n=t.allocateLayoutEntry(this._membership.layout);return t.addDeclaration(`@group(${n}) @binding(${this._membership.idx}) var ${r}: sampler_comparison;`),r}toString(){var t;return`${this.resourceType}:${(t=this.label)!=null?t:"<unnamed>"}`}},Qt=class{constructor(t){this._props=t;_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","sampler");_chunkQRLTUOBJcjs.c.call(void 0, this,"_label");_chunkQRLTUOBJcjs.c.call(void 0, this,"_filtering");_chunkQRLTUOBJcjs.c.call(void 0, this,"_sampler",null);this._filtering=t.minFilter==="linear"||t.magFilter==="linear"||t.mipmapFilter==="linear"}unwrap(t){var r;return this._sampler||(this._sampler=t.device.createSampler(_chunkQRLTUOBJcjs.b.call(void 0, _chunkQRLTUOBJcjs.a.call(void 0, {},this._props),{label:(r=this._label)!=null?r:"<unnamed>"}))),this._sampler}get label(){return this._label}$name(t){return this._label=t,this}"~resolve"(t){let r=t.names.makeUnique(this._label),{group:n,binding:a}=t.allocateFixedEntry({sampler:this._filtering?"filtering":"non-filtering"},this);return t.addDeclaration(`@group(${n}) @binding(${a}) var ${r}: sampler;`),r}toString(){var t;return`${this.resourceType}:${(t=this.label)!=null?t:"<unnamed>"}`}},Xt=class{constructor(t){this._props=t;_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","sampler-comparison");_chunkQRLTUOBJcjs.c.call(void 0, this,"_label");_chunkQRLTUOBJcjs.c.call(void 0, this,"_sampler",null)}unwrap(t){var r;return this._sampler||(this._sampler=t.device.createSampler(_chunkQRLTUOBJcjs.b.call(void 0, _chunkQRLTUOBJcjs.a.call(void 0, {},this._props),{label:(r=this._label)!=null?r:"<unnamed>"}))),this._sampler}get label(){return this._label}$name(t){return this._label=t,this}"~resolve"(t){let r=t.names.makeUnique(this.label),{group:n,binding:a}=t.allocateFixedEntry({sampler:"comparison"},this);return t.addDeclaration(`@group(${n}) @binding(${a}) var ${r}: sampler_comparison;`),r}toString(){var t;return`${this.resourceType}:${(t=this.label)!=null?t:"<unnamed>"}`}};var dt=class{constructor(t){this._membership=t;_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","external-texture")}get label(){return this._membership.key}"~resolve"(t){let r=t.names.makeUnique(this.label),n=t.allocateLayoutEntry(this._membership.layout);return t.addDeclaration(`@group(${n}) @binding(${this._membership.idx}) var ${r}: texture_external;`),r}toString(){var t;return`${this.resourceType}:${(t=this.label)!=null?t:"<unnamed>"}`}};var bn={r8unorm:_chunkQRLTUOBJcjs.N,r8snorm:_chunkQRLTUOBJcjs.N,r8uint:_chunkQRLTUOBJcjs.L,r8sint:_chunkQRLTUOBJcjs.M,r16uint:_chunkQRLTUOBJcjs.L,r16sint:_chunkQRLTUOBJcjs.M,r16float:_chunkQRLTUOBJcjs.N,rg8unorm:_chunkQRLTUOBJcjs.N,rg8snorm:_chunkQRLTUOBJcjs.N,rg8uint:_chunkQRLTUOBJcjs.L,rg8sint:_chunkQRLTUOBJcjs.M,r32uint:_chunkQRLTUOBJcjs.L,r32sint:_chunkQRLTUOBJcjs.M,r32float:_chunkQRLTUOBJcjs.N,rg16uint:_chunkQRLTUOBJcjs.L,rg16sint:_chunkQRLTUOBJcjs.M,rg16float:_chunkQRLTUOBJcjs.N,rgba8unorm:_chunkQRLTUOBJcjs.N,"rgba8unorm-srgb":_chunkQRLTUOBJcjs.N,rgba8snorm:_chunkQRLTUOBJcjs.N,rgba8uint:_chunkQRLTUOBJcjs.L,rgba8sint:_chunkQRLTUOBJcjs.M,bgra8unorm:_chunkQRLTUOBJcjs.N,"bgra8unorm-srgb":_chunkQRLTUOBJcjs.N,rgb9e5ufloat:_chunkQRLTUOBJcjs.N,rgb10a2uint:_chunkQRLTUOBJcjs.L,rgb10a2unorm:_chunkQRLTUOBJcjs.N,rg11b10ufloat:_chunkQRLTUOBJcjs.N,rg32uint:_chunkQRLTUOBJcjs.L,rg32sint:_chunkQRLTUOBJcjs.M,rg32float:_chunkQRLTUOBJcjs.N,rgba16uint:_chunkQRLTUOBJcjs.L,rgba16sint:_chunkQRLTUOBJcjs.M,rgba16float:_chunkQRLTUOBJcjs.N,rgba32uint:_chunkQRLTUOBJcjs.L,rgba32sint:_chunkQRLTUOBJcjs.M,rgba32float:_chunkQRLTUOBJcjs.N,stencil8:_chunkQRLTUOBJcjs.N,depth16unorm:_chunkQRLTUOBJcjs.N,depth24plus:_chunkQRLTUOBJcjs.N,"depth24plus-stencil8":_chunkQRLTUOBJcjs.N,depth32float:_chunkQRLTUOBJcjs.N,"depth32float-stencil8":_chunkQRLTUOBJcjs.N,"bc1-rgba-unorm":_chunkQRLTUOBJcjs.N,"bc1-rgba-unorm-srgb":_chunkQRLTUOBJcjs.N,"bc2-rgba-unorm":_chunkQRLTUOBJcjs.N,"bc2-rgba-unorm-srgb":_chunkQRLTUOBJcjs.N,"bc3-rgba-unorm":_chunkQRLTUOBJcjs.N,"bc3-rgba-unorm-srgb":_chunkQRLTUOBJcjs.N,"bc4-r-unorm":_chunkQRLTUOBJcjs.N,"bc4-r-snorm":_chunkQRLTUOBJcjs.N,"bc5-rg-unorm":_chunkQRLTUOBJcjs.N,"bc5-rg-snorm":_chunkQRLTUOBJcjs.N,"bc6h-rgb-ufloat":_chunkQRLTUOBJcjs.N,"bc6h-rgb-float":_chunkQRLTUOBJcjs.N,"bc7-rgba-unorm":_chunkQRLTUOBJcjs.N,"bc7-rgba-unorm-srgb":_chunkQRLTUOBJcjs.N,"etc2-rgb8unorm":_chunkQRLTUOBJcjs.N,"etc2-rgb8unorm-srgb":_chunkQRLTUOBJcjs.N,"etc2-rgb8a1unorm":_chunkQRLTUOBJcjs.N,"etc2-rgb8a1unorm-srgb":_chunkQRLTUOBJcjs.N,"etc2-rgba8unorm":_chunkQRLTUOBJcjs.N,"etc2-rgba8unorm-srgb":_chunkQRLTUOBJcjs.N,"eac-r11unorm":_chunkQRLTUOBJcjs.N,"eac-r11snorm":_chunkQRLTUOBJcjs.N,"eac-rg11unorm":_chunkQRLTUOBJcjs.N,"eac-rg11snorm":_chunkQRLTUOBJcjs.N,"astc-4x4-unorm":_chunkQRLTUOBJcjs.N,"astc-4x4-unorm-srgb":_chunkQRLTUOBJcjs.N,"astc-5x4-unorm":_chunkQRLTUOBJcjs.N,"astc-5x4-unorm-srgb":_chunkQRLTUOBJcjs.N,"astc-5x5-unorm":_chunkQRLTUOBJcjs.N,"astc-5x5-unorm-srgb":_chunkQRLTUOBJcjs.N,"astc-6x5-unorm":_chunkQRLTUOBJcjs.N,"astc-6x5-unorm-srgb":_chunkQRLTUOBJcjs.N,"astc-6x6-unorm":_chunkQRLTUOBJcjs.N,"astc-6x6-unorm-srgb":_chunkQRLTUOBJcjs.N,"astc-8x5-unorm":_chunkQRLTUOBJcjs.N,"astc-8x5-unorm-srgb":_chunkQRLTUOBJcjs.N,"astc-8x6-unorm":_chunkQRLTUOBJcjs.N,"astc-8x6-unorm-srgb":_chunkQRLTUOBJcjs.N,"astc-8x8-unorm":_chunkQRLTUOBJcjs.N,"astc-8x8-unorm-srgb":_chunkQRLTUOBJcjs.N,"astc-10x5-unorm":_chunkQRLTUOBJcjs.N,"astc-10x5-unorm-srgb":_chunkQRLTUOBJcjs.N,"astc-10x6-unorm":_chunkQRLTUOBJcjs.N,"astc-10x6-unorm-srgb":_chunkQRLTUOBJcjs.N,"astc-10x8-unorm":_chunkQRLTUOBJcjs.N,"astc-10x8-unorm-srgb":_chunkQRLTUOBJcjs.N,"astc-10x10-unorm":_chunkQRLTUOBJcjs.N,"astc-10x10-unorm-srgb":_chunkQRLTUOBJcjs.N,"astc-12x10-unorm":_chunkQRLTUOBJcjs.N,"astc-12x10-unorm-srgb":_chunkQRLTUOBJcjs.N,"astc-12x12-unorm":_chunkQRLTUOBJcjs.N,"astc-12x12-unorm-srgb":_chunkQRLTUOBJcjs.N},Me={rgba8unorm:_chunkQRLTUOBJcjs.A,rgba8snorm:_chunkQRLTUOBJcjs.A,rgba8uint:_chunkQRLTUOBJcjs.D,rgba8sint:_chunkQRLTUOBJcjs.C,rgba16uint:_chunkQRLTUOBJcjs.D,rgba16sint:_chunkQRLTUOBJcjs.C,rgba16float:_chunkQRLTUOBJcjs.A,r32uint:_chunkQRLTUOBJcjs.D,r32sint:_chunkQRLTUOBJcjs.C,r32float:_chunkQRLTUOBJcjs.A,rg32uint:_chunkQRLTUOBJcjs.D,rg32sint:_chunkQRLTUOBJcjs.C,rg32float:_chunkQRLTUOBJcjs.A,rgba32uint:_chunkQRLTUOBJcjs.D,rgba32sint:_chunkQRLTUOBJcjs.C,rgba32float:_chunkQRLTUOBJcjs.A,bgra8unorm:_chunkQRLTUOBJcjs.A},wn={f32:"float",u32:"uint",i32:"sint"},Sn={float:_chunkQRLTUOBJcjs.N,"unfilterable-float":_chunkQRLTUOBJcjs.N,uint:_chunkQRLTUOBJcjs.L,sint:_chunkQRLTUOBJcjs.M,depth:_chunkQRLTUOBJcjs.N};function Dn(e,t){return new Zt(e,t)}function J(e){return(e==null?void 0:e.resourceType)==="texture"}function Ne(e){return(e==null?void 0:e.resourceType)==="texture-storage-view"}function ze(e){return(e==null?void 0:e.resourceType)==="texture-sampled-view"}var Fn={mutable:"read_write",readonly:"read",writeonly:"write"},Zt=class{constructor(t,r){this.props=t;this._branch=r;_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","texture");_chunkQRLTUOBJcjs.c.call(void 0, this,"usableAsSampled",!1);_chunkQRLTUOBJcjs.c.call(void 0, this,"usableAsStorage",!1);_chunkQRLTUOBJcjs.c.call(void 0, this,"usableAsRender",!1);_chunkQRLTUOBJcjs.c.call(void 0, this,"_destroyed",!1);_chunkQRLTUOBJcjs.c.call(void 0, this,"_label");_chunkQRLTUOBJcjs.c.call(void 0, this,"_flags",GPUTextureUsage.COPY_DST|GPUTextureUsage.COPY_SRC);_chunkQRLTUOBJcjs.c.call(void 0, this,"_texture",null)}get label(){return this._label}$name(t){return this._label=t,this}unwrap(){var t,r,n,a,o;if(this._destroyed)throw new Error("This texture has been destroyed");return this._texture||(this._texture=this._branch.device.createTexture({label:(t=this._label)!=null?t:"<unnamed>",format:this.props.format,size:this.props.size,usage:this._flags,dimension:(r=this.props.dimension)!=null?r:"2d",viewFormats:(n=this.props.viewFormats)!=null?n:[],mipLevelCount:(a=this.props.mipLevelCount)!=null?a:1,sampleCount:(o=this.props.sampleCount)!=null?o:1})),this._texture}$usage(...t){let r=t.includes("storage"),n=t.includes("sampled"),a=t.includes("render");return this._flags|=n?GPUTextureUsage.TEXTURE_BINDING:0,this._flags|=r?GPUTextureUsage.STORAGE_BINDING:0,this._flags|=a?GPUTextureUsage.RENDER_ATTACHMENT:0,this.usableAsStorage||(this.usableAsStorage=r),this.usableAsSampled||(this.usableAsSampled=n),this.usableAsRender||(this.usableAsRender=a),this}createView(t,r){if(t==="sampled")return this._asSampled(r);let n=r;switch(t){case"mutable":return this._asMutable(n);case"readonly":return this._asReadonly(n);case"writeonly":return this._asWriteonly(n)}}_asStorage(t,r){var o;if(!this.usableAsStorage)throw new Error("Unusable as storage");let n=(o=t==null?void 0:t.format)!=null?o:this.props.format,a=Me[n];return _chunkQRLTUOBJcjs.d.call(void 0, !!a,`Unsupported storage texture format: ${n}`),new er(t!=null?t:{},r,this)}_asReadonly(t){return this._asStorage(t,"readonly")}_asWriteonly(t){return this._asStorage(t,"writeonly")}_asMutable(t){return this._asStorage(t,"mutable")}_asSampled(t){var a;if(!this.usableAsSampled)throw new Error("Unusable as sampled");let r=(a=t==null?void 0:t.format)!=null?a:this.props.format;if(!Me[r])throw new Error(`Unsupported storage texture format: ${r}`);return new tr(t,this)}destroy(){var t;this._destroyed||(this._destroyed=!0,(t=this._texture)==null||t.destroy())}},gt={"1d":"1d","2d":"2d","2d-array":"2d_array",cube:"cube","cube-array":"cube_array","3d":"3d"},er=class{constructor(t,r,n){this.access=r;this._texture=n;_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","texture-storage-view");_chunkQRLTUOBJcjs.c.call(void 0, this,"texelDataType");_chunkQRLTUOBJcjs.c.call(void 0, this,"dimension");_chunkQRLTUOBJcjs.c.call(void 0, this,"_view");_chunkQRLTUOBJcjs.c.call(void 0, this,"_format");var a,o,i;this.dimension=(o=(a=t==null?void 0:t.dimension)!=null?a:n.props.dimension)!=null?o:"2d",this._format=(i=t==null?void 0:t.format)!=null?i:n.props.format,this.texelDataType=Me[this._format]}get label(){return this._texture.label}$name(t){return this._texture.$name(t),this}unwrap(){var t;return this._view||(this._view=this._texture.unwrap().createView({label:`${(t=this.label)!=null?t:"<unnamed>"} - View`,format:this._format,dimension:this.dimension})),this._view}"~resolve"(t){let r=t.names.makeUnique(this.label),{group:n,binding:a}=t.allocateFixedEntry({storageTexture:this._format,access:this.access,viewDimension:this.dimension},this),o=`texture_storage_${gt[this.dimension]}`;return t.addDeclaration(`@group(${n}) @binding(${a}) var ${r}: ${o}<${this._format}, ${Fn[this.access]}>;`),r}toString(){var t;return`${this.resourceType}:${(t=this.label)!=null?t:"<unnamed>"}`}},mt=class{constructor(t,r,n,a){this._format=t;this.dimension=r;this.access=n;this._membership=a;_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","texture-storage-view");_chunkQRLTUOBJcjs.c.call(void 0, this,"texelDataType");this.texelDataType=Me[this._format]}get label(){return this._membership.key}"~resolve"(t){let r=t.names.makeUnique(this.label),n=t.allocateLayoutEntry(this._membership.layout),a=`texture_storage_${gt[this.dimension]}`;return t.addDeclaration(`@group(${n}) @binding(${this._membership.idx}) var ${r}: ${a}<${this._format}, ${Fn[this.access]}>;`),r}toString(){var t;return`${this.resourceType}:${(t=this.label)!=null?t:"<unnamed>"}`}},tr=class{constructor(t,r){this._props=t;this._texture=r;_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","texture-sampled-view");_chunkQRLTUOBJcjs.c.call(void 0, this,"channelDataType");_chunkQRLTUOBJcjs.c.call(void 0, this,"dimension");_chunkQRLTUOBJcjs.c.call(void 0, this,"_format");_chunkQRLTUOBJcjs.c.call(void 0, this,"_view");var n,a,o;this.dimension=(a=(n=t==null?void 0:t.dimension)!=null?n:r.props.dimension)!=null?a:"2d",this._format=(o=t==null?void 0:t.format)!=null?o:r.props.format,this.channelDataType=bn[this._format]}get label(){return this._texture.label}$name(t){return this._texture.$name(t),this}unwrap(){var t;return this._view||(this._view=this._texture.unwrap().createView(_chunkQRLTUOBJcjs.a.call(void 0, {label:`${(t=this.label)!=null?t:"<unnamed>"} - View`},this._props))),this._view}"~resolve"(t){var s;let r=t.names.makeUnique(this.label),n=((s=this._texture.props.sampleCount)!=null?s:1)>1,{group:a,binding:o}=t.allocateFixedEntry({texture:wn[this.channelDataType.type],viewDimension:this.dimension,multisampled:n},this),i=n?"texture_multisampled_2d":`texture_${gt[this.dimension]}`;return t.addDeclaration(`@group(${a}) @binding(${o}) var ${r}: ${i}<${t.resolve(this.channelDataType)}>;`),r}toString(){var t;return`${this.resourceType}:${(t=this.label)!=null?t:"<unnamed>"}`}},ft=class{constructor(t,r,n,a){this.dimension=r;this._multisampled=n;this._membership=a;_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","texture-sampled-view");_chunkQRLTUOBJcjs.c.call(void 0, this,"channelDataType");this.channelDataType=Sn[t]}get label(){return this._membership.key}"~resolve"(t){let r=t.names.makeUnique(this.label),n=t.allocateLayoutEntry(this._membership.layout),a=this._multisampled?"texture_multisampled_2d":`texture_${gt[this.dimension]}`;return t.addDeclaration(`@group(${n}) @binding(${this._membership.idx}) var ${r}: ${a}<${t.resolve(this.channelDataType)}>;`),r}toString(){var t;return`${this.resourceType}:${(t=this.label)!=null?t:"<unnamed>"}`}};function rr(e){return!!(e!=null&&e.usableAsSampled)}function fa(e){return!!(e!=null&&e.usableAsRender)}var Tt=class e extends Error{constructor(t){var r;super(`Resource '${(r=t.label)!=null?r:"<unnamed>"}' cannot be bound as 'sampled'. Use .$usage('sampled') to allow it.`),Object.setPrototypeOf(this,e.prototype)}};function ct(e){return new ar(e)}function yt(e){return!!e&&e.resourceType==="bind-group-layout"}function or(e){return!!e&&e.resourceType==="bind-group"}var nr=class e extends Error{constructor(t,r){super(`Bind group '${t!=null?t:"<unnamed>"}' is missing a required binding '${r}'`),Object.setPrototypeOf(this,e.prototype)}},vn=["compute"],Fe=["compute","vertex","fragment"],ar=class{constructor(t){this.entries=t;_chunkQRLTUOBJcjs.c.call(void 0, this,"_label");_chunkQRLTUOBJcjs.c.call(void 0, this,"_index");_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","bind-group-layout");_chunkQRLTUOBJcjs.c.call(void 0, this,"bound",{});var n,a,o,i,s;let r=0;for(let[l,u]of Object.entries(t)){if(u===null){r++;continue}let m={idx:r,key:l,layout:this};if("uniform"in u&&(this.bound[l]=new Oe("uniform",u.uniform,m)),"storage"in u){let f="type"in u.storage?u.storage:u.storage(0);this.bound[l]=new Oe((n=u.access)!=null?n:"readonly",f,m)}"texture"in u&&(this.bound[l]=new ft(u.texture,(a=u.viewDimension)!=null?a:"2d",(o=u.multisampled)!=null?o:!1,m)),"storageTexture"in u&&(this.bound[l]=new mt(u.storageTexture,(i=u.viewDimension)!=null?i:"2d",(s=u.access)!=null?s:"writeonly",m)),"externalTexture"in u&&(this.bound[l]=new dt(m)),"sampler"in u&&(u.sampler==="comparison"?this.bound[l]=new lt(m):this.bound[l]=new pt(m)),r++}}get label(){return this._label}get index(){return this._index}$name(t){return this._label=t,this}$idx(t){return this._index=t,this}unwrap(t){var n;return t.device.createBindGroupLayout({label:(n=this.label)!=null?n:"<unnamed>",entries:Object.values(this.entries).map((a,o)=>{var l,u,m,f;if(a===null)return null;let i=a.visibility,s={binding:o,visibility:0};if("uniform"in a)i=i!=null?i:Fe,s.buffer={type:"uniform"};else if("storage"in a)i=i!=null?i:a.access==="mutable"?vn:Fe,s.buffer={type:a.access==="mutable"?"storage":"read-only-storage"};else if("sampler"in a)i=i!=null?i:Fe,s.sampler={type:a.sampler};else if("texture"in a)i=i!=null?i:Fe,s.texture={sampleType:a.texture,viewDimension:(l=a.viewDimension)!=null?l:"2d",multisampled:(u=a.multisampled)!=null?u:!1};else if("storageTexture"in a){let g=(m=a.access)!=null?m:"writeonly";i=i!=null?i:g==="readonly"?Fe:vn,s.storageTexture={format:a.storageTexture,access:{mutable:"read-write",readonly:"read-only",writeonly:"write-only"}[g],viewDimension:(f=a.viewDimension)!=null?f:"2d"}}else"externalTexture"in a&&(i=i!=null?i:Fe,s.externalTexture={});return i!=null&&i.includes("compute")&&(s.visibility|=GPUShaderStage.COMPUTE),i!=null&&i.includes("vertex")&&(s.visibility|=GPUShaderStage.VERTEX),i!=null&&i.includes("fragment")&&(s.visibility|=GPUShaderStage.FRAGMENT),s}).filter(a=>a!==null)})}populate(t){return new ge(this,t)}},ge=class{constructor(t,r){this.layout=t;this.entries=r;_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","bind-group");for(let n of Object.keys(t.entries))if(t.entries[n]!==null&&!(n in r))throw new nr(t.label,n)}unwrap(t){var n;return t.device.createBindGroup({label:(n=this.layout.label)!=null?n:"<unnamed>",layout:t.unwrap(this.layout),entries:Object.entries(this.layout.entries).map(([a,o],i)=>{var l;if(o===null)return null;let s=this.entries[a];if(s===void 0)throw new Error(`'${a}' is a resource required to populate bind group layout '${(l=this.layout.label)!=null?l:"<unnamed>"}'.`);if("uniform"in o){let u;if(ae(s)){if(!st(s))throw new (0, _chunkQRLTUOBJcjs.g)(s);u={buffer:t.unwrap(s)}}else u={buffer:s};return{binding:i,resource:u}}if("storage"in o){let u;if(ae(s)){if(!fe(s))throw new Ge(s);u={buffer:t.unwrap(s)}}else u={buffer:s};return{binding:i,resource:u}}if("texture"in o){let u;if(J(s)){if(!rr(s))throw new Tt(s);u=t.unwrap(s.createView("sampled"))}else ze(s)?u=t.unwrap(s):u=s;return{binding:i,resource:u}}if("storageTexture"in o){let u;if(J(s)){if(!fe(s))throw new Ge(s);o.access==="readonly"?u=t.unwrap(s.createView("readonly")):o.access==="mutable"?u=t.unwrap(s.createView("mutable")):u=t.unwrap(s.createView("writeonly"))}else Ne(s)?u=t.unwrap(s):u=s;return{binding:i,resource:u}}if("sampler"in o)return ke(s)||We(s)?{binding:i,resource:t.unwrap(s)}:{binding:i,resource:s};if("externalTexture"in o)return{binding:i,resource:s};throw new Error(`Malformed bind group entry: ${s} (${JSON.stringify(s)})`)}).filter(a=>a!==null)})}};var An="#CATCHALL#",sr=class{constructor(){_chunkQRLTUOBJcjs.c.call(void 0, this,"_stack",[]);_chunkQRLTUOBJcjs.c.call(void 0, this,"_itemDepth",0)}get itemDepth(){return this._itemDepth}get topItem(){let t=this._stack[this._stack.length-1];if(!t||t.type!=="item")throw new Error("Internal error, expected item layer to be on top.");return t}pushItem(){this._itemDepth++,this._stack.push({type:"item",usedSlots:new Set})}popItem(){this.pop("item")}pushSlotBindings(t){this._stack.push({type:"slotBinding",bindingMap:new WeakMap(t)})}popSlotBindings(){this.pop("slotBinding")}pushFunctionScope(t,r,n){this._stack.push({type:"functionScope",args:t,returnType:r,externalMap:n})}popFunctionScope(){this.pop("functionScope")}pushBlockScope(){this._stack.push({type:"blockScope",declarations:new Map})}popBlockScope(){this.pop("blockScope")}pop(t){let r=this._stack[this._stack.length-1];if(!r||t&&r.type!==t)throw new Error(`Internal error, expected a ${t} layer to be on top.`);this._stack.pop(),t==="item"&&this._itemDepth--}readSlot(t){for(let r=this._stack.length-1;r>=0;--r){let n=this._stack[r];if((n==null?void 0:n.type)==="item")n.usedSlots.add(t);else if((n==null?void 0:n.type)==="slotBinding"){let a=n.bindingMap.get(t);if(a!==void 0)return a}else if(!((n==null?void 0:n.type)==="functionScope"||(n==null?void 0:n.type)==="blockScope"))throw new Error("Unknown layer type.")}return t.defaultValue}getResourceById(t){for(let r=this._stack.length-1;r>=0;--r){let n=this._stack[r];if((n==null?void 0:n.type)==="functionScope"){let a=n.args.find(i=>i.value===t);if(a!==void 0)return a;let o=n.externalMap[t];return o!==void 0?{value:o,dataType:_chunk3JTP2ATRcjs.i.call(void 0, o)?we(o):_chunk3JTP2ATRcjs.f}:void 0}if((n==null?void 0:n.type)==="blockScope"){let a=n.declarations.get(t);if(a!==void 0)return{value:t,dataType:a}}}}defineBlockVariable(t,r){for(let n=this._stack.length-1;n>=0;--n){let a=this._stack[n];if((a==null?void 0:a.type)==="blockScope")return a.declarations.set(t,r),{value:t,dataType:r}}throw new Error("No block scope found to define a variable in.")}},xt=[""," "," "," "," "," "," "," "," "],ir=xt.length-1,ur=class{constructor(){_chunkQRLTUOBJcjs.c.call(void 0, this,"identLevel",0)}get pre(){var t;return(t=xt[this.identLevel])!=null?t:xt[ir].repeat(this.identLevel/ir)+xt[this.identLevel%ir]}indent(){let t=this.pre;return this.identLevel++,t}dedent(){return this.identLevel--,this.pre}},Un;Un=_chunk3JTP2ATRcjs.a;var pr=class{constructor(t){_chunkQRLTUOBJcjs.c.call(void 0, this,"_memoizedResolves",new WeakMap);_chunkQRLTUOBJcjs.c.call(void 0, this,"_memoizedDerived",new WeakMap);_chunkQRLTUOBJcjs.c.call(void 0, this,"_indentController",new ur);_chunkQRLTUOBJcjs.c.call(void 0, this,"_jitTranspiler");_chunkQRLTUOBJcjs.c.call(void 0, this,"_itemStateStack",new sr);_chunkQRLTUOBJcjs.c.call(void 0, this,"_declarations",[]);_chunkQRLTUOBJcjs.c.call(void 0, this,Un,{itemStateStack:this._itemStateStack});_chunkQRLTUOBJcjs.c.call(void 0, this,"bindGroupLayoutsToPlaceholderMap",new Map);_chunkQRLTUOBJcjs.c.call(void 0, this,"_nextFreeLayoutPlaceholderIdx",0);_chunkQRLTUOBJcjs.c.call(void 0, this,"fixedBindings",[]);_chunkQRLTUOBJcjs.c.call(void 0, this,"callStack",[]);_chunkQRLTUOBJcjs.c.call(void 0, this,"names");this.names=t.names,this._jitTranspiler=t.jitTranspiler}get pre(){return this._indentController.pre}indent(){return this._indentController.indent()}dedent(){return this._indentController.dedent()}getById(t){let r=this._itemStateStack.getResourceById(t);return r===void 0?null:r}defineVariable(t,r){return this._itemStateStack.defineBlockVariable(t,r)}pushBlockScope(){this._itemStateStack.pushBlockScope()}popBlockScope(){this._itemStateStack.popBlockScope()}transpileFn(t){if(!this._jitTranspiler)throw new Error("Tried to execute a tgpu.fn function without providing a JIT transpiler, or transpiling at build time.");return this._jitTranspiler.transpileFn(t)}fnToWgsl(t){this._itemStateStack.pushFunctionScope(t.args,t.returnType,t.externalMap);try{let r=kt(this,t.body),n=t.args.map(a=>`${a.value}: ${this.resolve(a.dataType)}`).join(", ");return{head:t.returnType!==void 0?`(${n}) -> ${_chunk3QXCKMEJcjs.ua.call(void 0, t.returnType)} ${this.resolve(t.returnType)}`:`(${n})`,body:r}}finally{this._itemStateStack.popFunctionScope()}}addDeclaration(t){this._declarations.push(t)}allocateLayoutEntry(t){let r=this.bindGroupLayoutsToPlaceholderMap,n=r.get(t);return n||(n=`#BIND_GROUP_LAYOUT_${this._nextFreeLayoutPlaceholderIdx++}#`,r.set(t,n)),n}allocateFixedEntry(t,r){let n=this.fixedBindings.length;return this.fixedBindings.push({layoutEntry:t,resource:r}),{group:An,binding:n}}readSlot(t){let r=this._itemStateStack.readSlot(t);if(r===void 0)throw new (0, _chunkQRLTUOBJcjs.f)(t);return r}withSlots(t,r){this._itemStateStack.pushSlotBindings(t);try{return r()}finally{this._itemStateStack.popSlotBindings()}}unwrap(t){if(_chunk3JTP2ATRcjs.d.call(void 0, t))return this.withSlots(t["~providing"].pairs,()=>this.unwrap(t["~providing"].inner));let r=t;for(;;)if(_chunk3JTP2ATRcjs.b.call(void 0, r))r=this.readSlot(r);else if(_chunk3JTP2ATRcjs.c.call(void 0, r))r=this._getOrCompute(r);else break;return r}_getOrCompute(t){var n;let r=(n=this._memoizedDerived.get(t))!=null?n:[];this._itemStateStack.pushItem();try{for(let i of r)if([...i.slotToValueMap.entries()].every(([l,u])=>l.areEqual(this._itemStateStack.readSlot(l),u)))return i.result;_chunkQRLTUOBJcjs.n.call(void 0, _chunkQRLTUOBJcjs.k.CPU);let a;try{a=t["~compute"]()}finally{_chunkQRLTUOBJcjs.o.call(void 0, _chunkQRLTUOBJcjs.k.CPU)}let o=new Map;for(let i of this._itemStateStack.topItem.usedSlots)o.set(i,this._itemStateStack.readSlot(i));return r.push({slotToValueMap:o,result:a}),this._memoizedDerived.set(t,r),a}catch(a){throw a instanceof _chunkQRLTUOBJcjs.e?a.appendToTrace(t):new (0, _chunkQRLTUOBJcjs.e)(a,[t])}finally{this._itemStateStack.popItem()}}_getOrInstantiate(t){var n;let r=(n=this._memoizedResolves.get(t))!=null?n:[];this._itemStateStack.pushItem();try{for(let i of r)if([...i.slotToValueMap.entries()].every(([l,u])=>l.areEqual(this._itemStateStack.readSlot(l),u)))return i.result;let a;_chunk3QXCKMEJcjs.h.call(void 0, t)?a=$t(this,t):_chunk3JTP2ATRcjs.c.call(void 0, t)||_chunk3JTP2ATRcjs.b.call(void 0, t)?a=this.resolve(this.unwrap(t)):_chunk3JTP2ATRcjs.h.call(void 0, t)?a=t["~resolve"](this):a=this.resolveValue(t);let o=new Map;for(let i of this._itemStateStack.topItem.usedSlots)o.set(i,this._itemStateStack.readSlot(i));return r.push({slotToValueMap:o,result:a}),this._memoizedResolves.set(t,r),a}catch(a){throw a instanceof _chunkQRLTUOBJcjs.e?a.appendToTrace(t):new (0, _chunkQRLTUOBJcjs.e)(a,[t])}finally{this._itemStateStack.popItem()}}resolve(t){if(_chunk3JTP2ATRcjs.d.call(void 0, t))return this.withSlots(t["~providing"].pairs,()=>this.resolve(t["~providing"].inner));if(t&&typeof t=="object"||typeof t=="function"){if(this._itemStateStack.itemDepth===0)try{_chunkQRLTUOBJcjs.n.call(void 0, _chunkQRLTUOBJcjs.k.GPU);let r=_chunkQRLTUOBJcjs.l.call(void 0, this,()=>this._getOrInstantiate(t));return`${[...this._declarations].join(`
24
24
 
25
- `)}${r}`}finally{_chunkQRLTUOBJcjs.o.call(void 0, _chunkQRLTUOBJcjs.k.GPU)}return this._getOrInstantiate(t)}return String(t)}resolveValue(t,r){if(_chunk3JTP2ATRcjs.i.call(void 0, t))return this.resolve(t);if(r&&_chunkQRLTUOBJcjs.W.call(void 0, r))return`array(${t.map(n=>this.resolveValue(n,r.elementType))})`;if(Array.isArray(t))return`array(${t.map(n=>this.resolveValue(n))})`;if(r&&_chunkQRLTUOBJcjs.X.call(void 0, r))return`${this.resolve(r)}(${Object.entries(r.propTypes).map(([n,a])=>this.resolveValue(t[n],a))})`;throw new Error(`Value ${t} (as json: ${JSON.stringify(t)}) of schema ${r} is not resolvable to WGSL`)}};function ve(e,t){var f;let r=new pr(t),n=r.resolve(e),a=r.bindGroupLayoutsToPlaceholderMap,o=[],i=new Set([...a.keys()].map(g=>g.index).filter(g=>g!==void 0)),s=_chunkQRLTUOBJcjs.q.call(void 0, i),l=r.fixedBindings.map((g,w)=>[String(w),g.layoutEntry]),u=()=>{let g=s.next().value,w=ct(Object.fromEntries(l));return o[g]=w,n=n.replaceAll(Un,String(g)),[g,new ge(w,Object.fromEntries(r.fixedBindings.map((y,T)=>[String(T),y.resource])))]},m=l.length>0?u():null;for(let[g,w]of a.entries()){let y=(f=g.index)!=null?f:s.next().value;o[y]=g,n=n.replaceAll(w,String(y))}return{code:n,bindGroupLayouts:o,catchall:m}}function An(e){let{externals:t,template:r,names:n,unstable_jitTranspiler:a}=e,o={};pe(o,t!=null?t:{});let i={"~resolve"(l){return le(l,o,r!=null?r:"")},toString:()=>"<root>"},{code:s}=ve(i,{names:n==="strict"?new re:new te,jitTranspiler:a});return s}var je=class{constructor(t){this._make=t;_chunkQRLTUOBJcjs.c.call(void 0, this,"_map",new WeakMap)}getOrMake(t,...r){if(this._map.has(t))return this._map.get(t);let n=this._make(t,...r);return this._map.set(t,n),n}};function In(e,t,r){return new lr(new dr(e,t,r),{})}function Rn(e){return(e==null?void 0:e.resourceType)==="compute-pipeline"}var lr=class e{constructor(t,r){this._core=t;this._priors=r;_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","compute-pipeline")}get label(){return this._core.label}get rawPipeline(){return this._core.unwrap().pipeline}with(t,r){var n;return new e(this._core,{bindGroupLayoutMap:new Map([...(n=this._priors.bindGroupLayoutMap)!=null?n:[],[t,r]])})}dispatchWorkgroups(t,r,n){let a=this._core.unwrap(),{branch:o,label:i}=this._core,s=o.commandEncoder.beginComputePass({label:i!=null?i:"<unnamed>"});s.setPipeline(a.pipeline);let l=new Set(a.bindGroupLayouts);if(a.bindGroupLayouts.forEach((u,m)=>{var f;if(a.catchall&&m===a.catchall[0])s.setBindGroup(m,o.unwrap(a.catchall[1])),l.delete(u);else{let g=(f=this._priors.bindGroupLayoutMap)==null?void 0:f.get(u);g!==void 0&&(l.delete(u),s.setBindGroup(m,o.unwrap(g)))}}),l.size>0)throw new (0, _chunkQRLTUOBJcjs.i)(l);s.dispatchWorkgroups(t,r,n),s.end()}$name(t){return this._core.label=t,this}},dr=class{constructor(t,r,n){this.branch=t;this._slotBindings=r;this._entryFn=n;_chunkQRLTUOBJcjs.c.call(void 0, this,"label");_chunkQRLTUOBJcjs.c.call(void 0, this,"_memo")}unwrap(){var t,r,n,a,o;if(this._memo===void 0){let i=this.branch.device,{code:s,bindGroupLayouts:l,catchall:u}=ve({"~resolve":m=>(m.withSlots(this._slotBindings,()=>{m.resolve(this._entryFn)}),""),toString:()=>{var m;return`computePipeline:${(m=this.label)!=null?m:"<unnamed>"}`}},{names:this.branch.nameRegistry,jitTranspiler:this.branch.jitTranspiler});u!==null&&((r=l[u[0]])==null||r.$name(`${(t=this.label)!=null?t:"<unnamed>"} - Automatic Bind Group & Layout`)),this._memo={pipeline:i.createComputePipeline({label:(n=this.label)!=null?n:"<unnamed>",layout:i.createPipelineLayout({label:`${(a=this.label)!=null?a:"<unnamed>"} - Pipeline Layout`,bindGroupLayouts:l.map(m=>this.branch.unwrap(m))}),compute:{module:i.createShaderModule({label:`${(o=this.label)!=null?o:"<unnamed>"} - Shader`,code:s})}}),bindGroupLayouts:l,catchall:u}}return this._memo}};function gr(e,t="vertex"){return new fr(e,t)}function bt(e){return(e==null?void 0:e.resourceType)==="vertex-layout"}var mr=Symbol("defaultAttribEntry");function ht(e,t,r,n,a){if(_chunkQRLTUOBJcjs.da.call(void 0, t)||_chunk3QXCKMEJcjs.f.call(void 0, t)){let o=_chunk3QXCKMEJcjs.g.call(void 0, t);return o!==void 0&&(n[a!=null?a:mr]=o),ht(e,t.inner,_chunk3QXCKMEJcjs.j.call(void 0, r,_chunk3QXCKMEJcjs.aa.call(void 0, t)),n)}if(_chunkQRLTUOBJcjs.X.call(void 0, t)){let o=r;return Object.fromEntries(Object.entries(t.propTypes).map(([i,s])=>{o=_chunk3QXCKMEJcjs.j.call(void 0, o,_chunk3QXCKMEJcjs.$.call(void 0, s));let l=[i,ht(e,s,o,n,i)];return o+=_chunk3QXCKMEJcjs.ca.call(void 0, s),l}))}if(_chunk3QXCKMEJcjs.e.call(void 0, t)){let o=r;return Object.fromEntries(Object.entries(t.propTypes).map(([i,s])=>{o=_chunk3QXCKMEJcjs.j.call(void 0, o,_chunk3QXCKMEJcjs.aa.call(void 0, s));let l=[i,ht(e,s,o,n,i)];return o+=_chunk3QXCKMEJcjs.ca.call(void 0, s),l}))}if("type"in t&&typeof t.type=="string"){if(_chunk3QXCKMEJcjs.a.includes(t.type))return{_layout:e,format:t.type,offset:r};let o=_chunk3QXCKMEJcjs.b[t.type];if(o)return{_layout:e,format:o,offset:r}}throw new Error(`Unsupported data used in vertex layout: ${String(t)}`)}var fr=class{constructor(t,r){this.schemaForCount=t;this.stepMode=r;_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","vertex-layout");_chunkQRLTUOBJcjs.c.call(void 0, this,"stride");_chunkQRLTUOBJcjs.c.call(void 0, this,"attrib");_chunkQRLTUOBJcjs.c.call(void 0, this,"_customLocationMap",{});_chunkQRLTUOBJcjs.c.call(void 0, this,"_label");let n=t(0);this.stride=_chunk3QXCKMEJcjs.j.call(void 0, _chunk3QXCKMEJcjs.ca.call(void 0, n.elementType),_chunk3QXCKMEJcjs.$.call(void 0, n)),this.attrib=ht(this,n.elementType,0,this._customLocationMap)}get label(){return this._label}get vertexLayout(){if(this._customLocationMap[mr]!==void 0){if(typeof this.attrib.format!="string"||typeof this.attrib.offset!="number")throw new Error("Single attribute vertex layouts must have a format and offset.");return{arrayStride:this.stride,stepMode:this.stepMode,attributes:[{format:this.attrib.format,offset:this.attrib.offset,shaderLocation:this._customLocationMap[mr]}]}}if(!Object.keys(this.attrib).every(r=>this._customLocationMap[r]!==void 0))throw new Error("All attributes must have custom locations in order to unwrap a vertex layout.");return{arrayStride:this.stride,stepMode:this.stepMode,attributes:[...Object.entries(this.attrib).map(([r,n])=>({format:n.format,offset:n.offset,shaderLocation:this._customLocationMap[r]}))]}}$name(t){return this._label=t,this}};function fa(e){return typeof(e==null?void 0:e.loadOp)=="string"}function Bn(e,t){if(_chunk3QXCKMEJcjs.h.call(void 0, e)){if(!fa(t))throw new Error("Expected a single color attachment, not a record.");return[t]}let r=[];for(let n of Object.keys(e)){let a=t[n];if(!a)throw new Error(`A color attachment by the name of '${n}' was not provided to the shader.`);r.push(a)}return r}function ga(e){return typeof(e==null?void 0:e.format)=="string"}function _n(e,t){if(_chunk3QXCKMEJcjs.h.call(void 0, e)){if(!ga(t))throw new Error("Expected a single color target configuration, not a record.");return[t]}let r=[];for(let n of Object.keys(e)){let a=t[n];if(!a)throw new Error(`A color target by the name of '${n}' was not provided to the shader.`);r.push(a)}return r}function Pn(e){return new Tr(new cr(e),{})}function Ln(e){return(e==null?void 0:e.resourceType)==="render-pipeline"}var Tr=class e{constructor(t,r){this.core=t;this.priors=r;_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","render-pipeline")}get label(){return this.core.label}$name(t){return this.core.label=t,this}with(t,r){var n,a;if(yt(t))return new e(this.core,_chunkQRLTUOBJcjs.b.call(void 0, _chunkQRLTUOBJcjs.a.call(void 0, {},this.priors),{bindGroupLayoutMap:new Map([...(n=this.priors.bindGroupLayoutMap)!=null?n:[],[t,r]])}));if(bt(t))return new e(this.core,_chunkQRLTUOBJcjs.b.call(void 0, _chunkQRLTUOBJcjs.a.call(void 0, {},this.priors),{vertexLayoutMap:new Map([...(a=this.priors.vertexLayoutMap)!=null?a:[],[t,r]])}));throw new Error("Unsupported value passed into .with()")}withColorAttachment(t){return new e(this.core,_chunkQRLTUOBJcjs.b.call(void 0, _chunkQRLTUOBJcjs.a.call(void 0, {},this.priors),{colorAttachment:t}))}withDepthStencilAttachment(t){return new e(this.core,_chunkQRLTUOBJcjs.b.call(void 0, _chunkQRLTUOBJcjs.a.call(void 0, {},this.priors),{depthStencilAttachment:t}))}draw(t,r,n,a){var y;let o=this.core.unwrap(),{branch:i,fragmentFn:s}=this.core.options,u={colorAttachments:Bn(s.shell.targets,(y=this.priors.colorAttachment)!=null?y:{}).map(T=>J(T.view)?_chunkQRLTUOBJcjs.b.call(void 0, _chunkQRLTUOBJcjs.a.call(void 0, {},T),{view:i.unwrap(T.view).createView()}):T)};if(this.core.label!==void 0&&(u.label=this.core.label),this.priors.depthStencilAttachment!==void 0){let T=this.priors.depthStencilAttachment;J(T.view)?u.depthStencilAttachment=_chunkQRLTUOBJcjs.b.call(void 0, _chunkQRLTUOBJcjs.a.call(void 0, {},T),{view:i.unwrap(T.view).createView()}):u.depthStencilAttachment=T}let m=i.commandEncoder.beginRenderPass(u);m.setPipeline(o.pipeline);let f=new Set(o.bindGroupLayouts);o.bindGroupLayouts.forEach((T,F)=>{var c;if(o.catchall&&F===o.catchall[0])m.setBindGroup(F,i.unwrap(o.catchall[1])),f.delete(T);else{let x=(c=this.priors.bindGroupLayoutMap)==null?void 0:c.get(T);x!==void 0&&(f.delete(T),m.setBindGroup(F,i.unwrap(x)))}});let g=new Set(this.core.usedVertexLayouts);if(this.core.usedVertexLayouts.forEach((T,F)=>{var x;let c=(x=this.priors.vertexLayoutMap)==null?void 0:x.get(T);c&&(g.delete(T),m.setVertexBuffer(F,i.unwrap(c)))}),f.size>0)throw new (0, _chunkQRLTUOBJcjs.i)(f);if(g.size>0)throw new (0, _chunkQRLTUOBJcjs.j)(g);m.draw(t,r,n,a),m.end(),i.flush()}},cr=class{constructor(t){this.options=t;_chunkQRLTUOBJcjs.c.call(void 0, this,"label");_chunkQRLTUOBJcjs.c.call(void 0, this,"usedVertexLayouts");_chunkQRLTUOBJcjs.c.call(void 0, this,"_memo");_chunkQRLTUOBJcjs.c.call(void 0, this,"_vertexBufferLayouts");_chunkQRLTUOBJcjs.c.call(void 0, this,"_targets");let r=rn(t.vertexFn.shell.attributes[0],t.vertexAttribs);this._vertexBufferLayouts=r.bufferDefinitions,this.usedVertexLayouts=r.usedVertexLayouts,this._targets=_n(t.fragmentFn.shell.targets,t.targets)}unwrap(){var t,r,n,a;if(this._memo===void 0){let{branch:o,vertexFn:i,fragmentFn:s,slotBindings:l,primitiveState:u,depthStencilState:m,multisampleState:f}=this.options,{code:g,bindGroupLayouts:w,catchall:y}=ve({"~resolve":x=>(x.withSlots(l,()=>{x.resolve(i),x.resolve(s)}),""),toString:()=>{var x;return`renderPipeline:${(x=this.label)!=null?x:"<unnamed>"}`}},{names:o.nameRegistry,jitTranspiler:o.jitTranspiler});y!==null&&((r=w[y[0]])==null||r.$name(`${(t=this.label)!=null?t:"<unnamed>"} - Automatic Bind Group & Layout`));let T=o.device,F=T.createShaderModule({label:`${(n=this.label)!=null?n:"<unnamed>"} - Shader`,code:g}),c={layout:T.createPipelineLayout({label:`${(a=this.label)!=null?a:"<unnamed>"} - Pipeline Layout`,bindGroupLayouts:w.map(x=>o.unwrap(x))}),vertex:{module:F,buffers:this._vertexBufferLayouts},fragment:{module:F,targets:this._targets}};this.label!==void 0&&(c.label=this.label),u&&(c.primitive=u),m&&(c.depthStencil=m),f&&(c.multisample=f),this._memo={pipeline:T.createRenderPipeline(c),bindGroupLayouts:w,catchall:y}}return this._memo}};var yr=class e{constructor(t,r){this._getRoot=t;this._slotBindings=r}with(t,r){return new e(this._getRoot,[...this._slotBindings,[_chunk3JTP2ATRcjs.e.call(void 0, t)?t.slot:t,r]])}withCompute(t){return new xr(this._getRoot(),this._slotBindings,t)}withVertex(t,r){return new hr({branch:this._getRoot(),primitiveState:void 0,depthStencilState:void 0,slotBindings:this._slotBindings,vertexFn:t,vertexAttribs:r,multisampleState:void 0})}},xr=class{constructor(t,r,n){this._root=t;this._slotBindings=r;this._entryFn=n}createPipeline(){return In(this._root,this._slotBindings,this._entryFn)}},hr=class{constructor(t){this._options=t}withFragment(t,r,n){return _chunkQRLTUOBJcjs.d.call(void 0, typeof t!="string","Just type mismatch validation"),_chunkQRLTUOBJcjs.d.call(void 0, typeof r!="string","Just type mismatch validation"),new br(_chunkQRLTUOBJcjs.b.call(void 0, _chunkQRLTUOBJcjs.a.call(void 0, {},this._options),{fragmentFn:t,targets:r}))}},br=class e{constructor(t){this._options=t}withPrimitive(t){return new e(_chunkQRLTUOBJcjs.b.call(void 0, _chunkQRLTUOBJcjs.a.call(void 0, {},this._options),{primitiveState:t}))}withDepthStencil(t){return new e(_chunkQRLTUOBJcjs.b.call(void 0, _chunkQRLTUOBJcjs.a.call(void 0, {},this._options),{depthStencilState:t}))}withMultisample(t){return new e(_chunkQRLTUOBJcjs.b.call(void 0, _chunkQRLTUOBJcjs.a.call(void 0, {},this._options),{multisampleState:t}))}createPipeline(){return Pn(this._options)}},wt=class extends yr{constructor(r,n,a,o){super(()=>this,[]);this.device=r;this.nameRegistry=n;this.jitTranspiler=a;this._ownDevice=o;_chunkQRLTUOBJcjs.c.call(void 0, this,"~unstable");_chunkQRLTUOBJcjs.c.call(void 0, this,"_disposables",[]);_chunkQRLTUOBJcjs.c.call(void 0, this,"_unwrappedBindGroupLayouts",new je(r=>r.unwrap(this)));_chunkQRLTUOBJcjs.c.call(void 0, this,"_unwrappedBindGroups",new je(r=>r.unwrap(this)));_chunkQRLTUOBJcjs.c.call(void 0, this,"_commandEncoder",null);this["~unstable"]=this}get commandEncoder(){return this._commandEncoder||(this._commandEncoder=this.device.createCommandEncoder()),this._commandEncoder}createBuffer(r,n){let a=cn(this,r,n);return this._disposables.push(a),a}createUniform(r,n){return this.createBuffer(r,n).$usage("uniform").as("uniform")}createMutable(r,n){return this.createBuffer(r,n).$usage("storage").as("mutable")}createReadonly(r,n){return this.createBuffer(r,n).$usage("storage").as("readonly")}createBindGroup(r,n){return new ge(r,n)}destroy(){for(let r of this._disposables)r.destroy();this._ownDevice&&this.device.destroy()}createTexture(r){let n=Sn(r,this);return this._disposables.push(n),n}unwrap(r){if(Rn(r))return r.rawPipeline;if(Ln(r))return r.core.unwrap().pipeline;if(yt(r))return this._unwrappedBindGroupLayouts.getOrMake(r);if(or(r))return this._unwrappedBindGroups.getOrMake(r);if(ae(r))return r.buffer;if(J(r)||Ne(r)||ze(r))return r.unwrap();if(bt(r))return r.vertexLayout;if(ke(r)){if("unwrap"in r)return r.unwrap(this);throw new Error("Cannot unwrap laid-out sampler.")}if(We(r)){if("unwrap"in r)return r.unwrap(this);throw new Error("Cannot unwrap laid-out comparison sampler.")}throw new Error(`Unknown resource type: ${r}`)}beginRenderPass(r,n){let a=this.commandEncoder.beginRenderPass(r),o=new Map,i=new Map,s,l=()=>{if(!s)throw new Error("Cannot draw without a call to pass.setPipeline");let{core:u,priors:m}=s,f=u.unwrap();a.setPipeline(f.pipeline);let g=new Set(f.bindGroupLayouts);f.bindGroupLayouts.forEach((y,T)=>{var F,c;if(f.catchall&&T===f.catchall[0])a.setBindGroup(T,this.unwrap(f.catchall[1])),g.delete(y);else{let x=(c=(F=m.bindGroupLayoutMap)==null?void 0:F.get(y))!=null?c:o.get(y);x!==void 0&&(g.delete(y),or(x)?a.setBindGroup(T,this.unwrap(x)):a.setBindGroup(T,x))}});let w=new Set;if(u.usedVertexLayouts.forEach((y,T)=>{var x;let F=(x=m.vertexLayoutMap)==null?void 0:x.get(y),c=F?{buffer:F,offset:void 0,size:void 0}:i.get(y);!c||!c.buffer?w.add(y):ae(c.buffer)?a.setVertexBuffer(T,this.unwrap(c.buffer),c.offset,c.size):a.setVertexBuffer(T,c.buffer,c.offset,c.size)}),g.size>0)throw new (0, _chunkQRLTUOBJcjs.i)(g);if(w.size>0)throw new (0, _chunkQRLTUOBJcjs.j)(w)};n({setViewport(...u){a.setViewport(...u)},setScissorRect(...u){a.setScissorRect(...u)},setBlendConstant(...u){a.setBlendConstant(...u)},setStencilReference(...u){a.setStencilReference(...u)},beginOcclusionQuery(...u){a.beginOcclusionQuery(...u)},endOcclusionQuery(...u){a.endOcclusionQuery(...u)},executeBundles(...u){a.executeBundles(...u)},setPipeline(u){s=u},setIndexBuffer:(u,m,f,g)=>{ae(u)?a.setIndexBuffer(this.unwrap(u),m,f,g):a.setIndexBuffer(u,m,f,g)},setVertexBuffer(u,m,f,g){i.set(u,{buffer:m,offset:f,size:g})},setBindGroup(u,m){o.set(u,m)},draw(u,m,f,g){l(),a.draw(u,m,f,g)},drawIndexed(...u){l(),a.drawIndexed(...u)},drawIndirect(...u){l(),a.drawIndirect(...u)},drawIndexedIndirect(...u){l(),a.drawIndexedIndirect(...u)}}),a.end()}flush(){this._commandEncoder&&(this.device.queue.submit([this._commandEncoder.finish()]),this._commandEncoder=null)}};async function Cn(e){let{adapter:t,device:r,unstable_names:n="random",unstable_jitTranspiler:a}=e!=null?e:{};if(!navigator.gpu)throw new Error("WebGPU is not supported by this browser.");let o=await navigator.gpu.requestAdapter(t);if(!o)throw new Error("Could not find a compatible GPU");return new wt(await o.requestDevice(r),n==="random"?new te:new re,a,!0)}function En(e){let{device:t,unstable_names:r="random",unstable_jitTranspiler:n}=e!=null?e:{};return new wt(t,r==="random"?new te:new re,n,!1)}function St(e){return new wr(e)}var wr=class{constructor(t=void 0){this.defaultValue=t;_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","slot");_chunkQRLTUOBJcjs.c.call(void 0, this,"label");_chunkQRLTUOBJcjs.c.call(void 0, this,"~repr")}$name(t){return this.label=t,this}areEqual(t,r){return Object.is(t,r)}toString(){var t;return`slot:${(t=this.label)!=null?t:"<unnamed>"}`}get value(){let t=_chunkQRLTUOBJcjs.m.call(void 0, );if(!t)throw new Error("Cannot access tgpu.slot's value outside of resolution.");return Ee(t.unwrap(this))}};function Vn(e,t){return new Sr(e,t)}var Sr=class{constructor(t,r=void 0){this.schema=t;this.defaultValue=r;_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","accessor");_chunkQRLTUOBJcjs.c.call(void 0, this,"~repr");_chunkQRLTUOBJcjs.c.call(void 0, this,"label");_chunkQRLTUOBJcjs.c.call(void 0, this,"slot");this.slot=St(r)}$name(t){return this.label=t,this.slot.$name(t),this}toString(){var t;return`accessor:${(t=this.label)!=null?t:"<unnamed>"}`}get value(){if(!_chunkQRLTUOBJcjs.m.call(void 0, ))throw new Error("Cannot access tgpu.accessor's value outside of resolution.");return new Proxy({"~resolve":r=>r.resolve(this),toString:()=>{var r;return`.value:${(r=this.label)!=null?r:"<unnamed>"}`},[_chunk3JTP2ATRcjs.a]:{dataType:this.schema}},M)}"~resolve"(t){let r=t.unwrap(this.slot);return _chunk3JTP2ATRcjs.k.call(void 0, r)?t.resolve(r):Vt(r)?`${t.resolve(r)}()`:t.resolveValue(r,this.schema)}};function Gn(e){return ca(e)}function Ta([e,t]){var r;return`${(r=e.label)!=null?r:"<unnamed>"}=${t}`}function ca(e){return{resourceType:"derived","~compute":e,"~repr":void 0,get value(){let r=_chunkQRLTUOBJcjs.m.call(void 0, );if(!r)throw new Error("Cannot access tgpu.derived's value outside of resolution.");return Ee(r.unwrap(this))},with(r,n){return $n(this,[[r,n]])},toString(){return"derived"}}}function $n(e,t){return{resourceType:"derived","~repr":void 0,"~compute"(){throw new Error("'~compute' should never be read on bound derived items.")},"~providing":{inner:e,pairs:t},get value(){let n=_chunkQRLTUOBJcjs.m.call(void 0, );if(!n)throw new Error("Cannot access tgpu.derived's value outside of resolution.");return Ee(n.unwrap(this))},with(n,a){return $n(e,[...t,[n,a]])},toString(){return`derived[${t.map(Ta).join(", ")}]`}}}function On(e,t){return new Dt("private",e,t)}function kn(e){return new Dt("workgroup",e)}var Dt=class{constructor(t,r,n){this.scope=t;this._dataType=r;this._initialValue=n;_chunkQRLTUOBJcjs.c.call(void 0, this,"_label")}$name(t){return this._label=t,this}"~resolve"(t){let r=t.names.makeUnique(this._label);return this._initialValue?t.addDeclaration(`var<${this.scope}> ${r}: ${t.resolve(this._dataType)} = ${t.resolveValue(this._initialValue,this._dataType)};`):t.addDeclaration(`var<${this.scope}> ${r}: ${t.resolve(this._dataType)};`),r}get label(){return this._label}toString(){var t;return`var:${(t=this.label)!=null?t:"<unnamed>"}`}get value(){if(!_chunkQRLTUOBJcjs.p.call(void 0, ))throw new Error("Cannot access tgpu.var's value directly in JS.");return new Proxy({"~resolve":t=>t.resolve(this),toString:()=>{var t;return`.value:${(t=this.label)!=null?t:"<unnamed>"}`},[_chunk3JTP2ATRcjs.a]:{dataType:this._dataType}},M)}};var Wn={bindGroupLayout:ct,vertexLayout:gr,init:Cn,initFromDevice:En,resolve:An,"~unstable":{fn:Qr,fragmentFn:Zr,vertexFn:en,computeFn:Yr,vertexLayout:gr,derived:Gn,slot:St,accessor:Vn,privateVar:On,workgroupVar:kn,const:Nr,declare:jr,sampler:yn,comparisonSampler:xn}},Nu= exports.default =Wn;Object.assign(Wn,{__assignAst:Jr});exports.MissingBindGroupsError = _chunkQRLTUOBJcjs.i; exports.MissingLinksError = _chunkQRLTUOBJcjs.h; exports.MissingSlotValueError = _chunkQRLTUOBJcjs.f; exports.MissingVertexBuffersError = _chunkQRLTUOBJcjs.j; exports.NotUniformError = _chunkQRLTUOBJcjs.g; exports.RandomNameRegistry = te; exports.ResolutionError = _chunkQRLTUOBJcjs.e; exports.StrictNameRegistry = re; exports.default = Nu; exports.isBuffer = ae; exports.isComparisonSampler = We; exports.isDerived = _chunk3JTP2ATRcjs.c; exports.isSampledTextureView = ze; exports.isSampler = ke; exports.isSlot = _chunk3JTP2ATRcjs.b; exports.isStorageTextureView = Ne; exports.isTexture = J; exports.isTgpuFn = Vt; exports.isUsableAsRender = ma; exports.isUsableAsSampled = rr; exports.isUsableAsStorage = fe; exports.isUsableAsUniform = st; exports.isUsableAsVertex = da; exports.tgpu = Wn; exports.unstable_asMutable = jt; exports.unstable_asReadonly = Kt; exports.unstable_asUniform = qt;
25
+ `)}${r}`}finally{_chunkQRLTUOBJcjs.o.call(void 0, _chunkQRLTUOBJcjs.k.GPU)}return this._getOrInstantiate(t)}return String(t)}resolveValue(t,r){if(_chunk3JTP2ATRcjs.i.call(void 0, t))return this.resolve(t);if(r&&_chunkQRLTUOBJcjs.W.call(void 0, r))return`array(${t.map(n=>this.resolveValue(n,r.elementType))})`;if(Array.isArray(t))return`array(${t.map(n=>this.resolveValue(n))})`;if(r&&_chunkQRLTUOBJcjs.X.call(void 0, r))return`${this.resolve(r)}(${Object.entries(r.propTypes).map(([n,a])=>this.resolveValue(t[n],a))})`;throw new Error(`Value ${t} (as json: ${JSON.stringify(t)}) of schema ${r} is not resolvable to WGSL`)}};function ve(e,t){var f;let r=new pr(t),n=r.resolve(e),a=r.bindGroupLayoutsToPlaceholderMap,o=[],i=new Set([...a.keys()].map(g=>g.index).filter(g=>g!==void 0)),s=_chunkQRLTUOBJcjs.q.call(void 0, i),l=r.fixedBindings.map((g,w)=>[String(w),g.layoutEntry]),u=()=>{let g=s.next().value,w=ct(Object.fromEntries(l));return o[g]=w,n=n.replaceAll(An,String(g)),[g,new ge(w,Object.fromEntries(r.fixedBindings.map((y,T)=>[String(T),y.resource])))]},m=l.length>0?u():null;for(let[g,w]of a.entries()){let y=(f=g.index)!=null?f:s.next().value;o[y]=g,n=n.replaceAll(w,String(y))}return{code:n,bindGroupLayouts:o,catchall:m}}function In(e){let{externals:t,template:r,names:n,unstable_jitTranspiler:a}=e,o={};pe(o,t!=null?t:{});let i={"~resolve"(l){return le(l,o,r!=null?r:"")},toString:()=>"<root>"},{code:s}=ve(i,{names:n==="strict"?new re:new te,jitTranspiler:a});return s}var je=class{constructor(t){this._make=t;_chunkQRLTUOBJcjs.c.call(void 0, this,"_map",new WeakMap)}getOrMake(t,...r){if(this._map.has(t))return this._map.get(t);let n=this._make(t,...r);return this._map.set(t,n),n}};function Rn(e,t,r){return new lr(new dr(e,t,r),{})}function Bn(e){return(e==null?void 0:e.resourceType)==="compute-pipeline"}var lr=class e{constructor(t,r){this._core=t;this._priors=r;_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","compute-pipeline")}get label(){return this._core.label}get rawPipeline(){return this._core.unwrap().pipeline}with(t,r){var n;return new e(this._core,{bindGroupLayoutMap:new Map([...(n=this._priors.bindGroupLayoutMap)!=null?n:[],[t,r]])})}dispatchWorkgroups(t,r,n){let a=this._core.unwrap(),{branch:o,label:i}=this._core,s=o.commandEncoder.beginComputePass({label:i!=null?i:"<unnamed>"});s.setPipeline(a.pipeline);let l=new Set(a.bindGroupLayouts);if(a.bindGroupLayouts.forEach((u,m)=>{var f;if(a.catchall&&m===a.catchall[0])s.setBindGroup(m,o.unwrap(a.catchall[1])),l.delete(u);else{let g=(f=this._priors.bindGroupLayoutMap)==null?void 0:f.get(u);g!==void 0&&(l.delete(u),s.setBindGroup(m,o.unwrap(g)))}}),l.size>0)throw new (0, _chunkQRLTUOBJcjs.i)(l);s.dispatchWorkgroups(t,r,n),s.end()}$name(t){return this._core.label=t,this}},dr=class{constructor(t,r,n){this.branch=t;this._slotBindings=r;this._entryFn=n;_chunkQRLTUOBJcjs.c.call(void 0, this,"label");_chunkQRLTUOBJcjs.c.call(void 0, this,"_memo")}unwrap(){var t,r,n,a,o;if(this._memo===void 0){let i=this.branch.device,{code:s,bindGroupLayouts:l,catchall:u}=ve({"~resolve":m=>(m.withSlots(this._slotBindings,()=>{m.resolve(this._entryFn)}),""),toString:()=>{var m;return`computePipeline:${(m=this.label)!=null?m:"<unnamed>"}`}},{names:this.branch.nameRegistry,jitTranspiler:this.branch.jitTranspiler});u!==null&&((r=l[u[0]])==null||r.$name(`${(t=this.label)!=null?t:"<unnamed>"} - Automatic Bind Group & Layout`)),this._memo={pipeline:i.createComputePipeline({label:(n=this.label)!=null?n:"<unnamed>",layout:i.createPipelineLayout({label:`${(a=this.label)!=null?a:"<unnamed>"} - Pipeline Layout`,bindGroupLayouts:l.map(m=>this.branch.unwrap(m))}),compute:{module:i.createShaderModule({label:`${(o=this.label)!=null?o:"<unnamed>"} - Shader`,code:s})}}),bindGroupLayouts:l,catchall:u}}return this._memo}};function gr(e,t="vertex"){return new fr(e,t)}function bt(e){return(e==null?void 0:e.resourceType)==="vertex-layout"}var mr=Symbol("defaultAttribEntry");function ht(e,t,r,n,a){if(_chunkQRLTUOBJcjs.da.call(void 0, t)||_chunk3QXCKMEJcjs.f.call(void 0, t)){let o=_chunk3QXCKMEJcjs.g.call(void 0, t);return o!==void 0&&(n[a!=null?a:mr]=o),ht(e,t.inner,_chunk3QXCKMEJcjs.j.call(void 0, r,_chunk3QXCKMEJcjs.aa.call(void 0, t)),n)}if(_chunkQRLTUOBJcjs.X.call(void 0, t)){let o=r;return Object.fromEntries(Object.entries(t.propTypes).map(([i,s])=>{o=_chunk3QXCKMEJcjs.j.call(void 0, o,_chunk3QXCKMEJcjs.$.call(void 0, s));let l=[i,ht(e,s,o,n,i)];return o+=_chunk3QXCKMEJcjs.ca.call(void 0, s),l}))}if(_chunk3QXCKMEJcjs.e.call(void 0, t)){let o=r;return Object.fromEntries(Object.entries(t.propTypes).map(([i,s])=>{o=_chunk3QXCKMEJcjs.j.call(void 0, o,_chunk3QXCKMEJcjs.aa.call(void 0, s));let l=[i,ht(e,s,o,n,i)];return o+=_chunk3QXCKMEJcjs.ca.call(void 0, s),l}))}if("type"in t&&typeof t.type=="string"){if(_chunk3QXCKMEJcjs.a.includes(t.type))return{_layout:e,format:t.type,offset:r};let o=_chunk3QXCKMEJcjs.b[t.type];if(o)return{_layout:e,format:o,offset:r}}throw new Error(`Unsupported data used in vertex layout: ${String(t)}`)}var fr=class{constructor(t,r){this.schemaForCount=t;this.stepMode=r;_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","vertex-layout");_chunkQRLTUOBJcjs.c.call(void 0, this,"stride");_chunkQRLTUOBJcjs.c.call(void 0, this,"attrib");_chunkQRLTUOBJcjs.c.call(void 0, this,"_customLocationMap",{});_chunkQRLTUOBJcjs.c.call(void 0, this,"_label");let n=t(0);this.stride=_chunk3QXCKMEJcjs.j.call(void 0, _chunk3QXCKMEJcjs.ca.call(void 0, n.elementType),_chunk3QXCKMEJcjs.$.call(void 0, n)),this.attrib=ht(this,n.elementType,0,this._customLocationMap)}get label(){return this._label}get vertexLayout(){if(this._customLocationMap[mr]!==void 0){if(typeof this.attrib.format!="string"||typeof this.attrib.offset!="number")throw new Error("Single attribute vertex layouts must have a format and offset.");return{arrayStride:this.stride,stepMode:this.stepMode,attributes:[{format:this.attrib.format,offset:this.attrib.offset,shaderLocation:this._customLocationMap[mr]}]}}if(!Object.keys(this.attrib).every(r=>this._customLocationMap[r]!==void 0))throw new Error("All attributes must have custom locations in order to unwrap a vertex layout.");return{arrayStride:this.stride,stepMode:this.stepMode,attributes:[...Object.entries(this.attrib).map(([r,n])=>({format:n.format,offset:n.offset,shaderLocation:this._customLocationMap[r]}))]}}$name(t){return this._label=t,this}};function ga(e){return typeof(e==null?void 0:e.loadOp)=="string"}function _n(e,t){if(_chunk3QXCKMEJcjs.h.call(void 0, e)){if(!ga(t))throw new Error("Expected a single color attachment, not a record.");return[t]}let r=[];for(let n of Object.keys(e)){let a=t[n];if(!a)throw new Error(`A color attachment by the name of '${n}' was not provided to the shader.`);r.push(a)}return r}function Ta(e){return typeof(e==null?void 0:e.format)=="string"}function Pn(e,t){if(_chunk3QXCKMEJcjs.h.call(void 0, e)){if(!Ta(t))throw new Error("Expected a single color target configuration, not a record.");return[t]}let r=[];for(let n of Object.keys(e)){let a=t[n];if(!a)throw new Error(`A color target by the name of '${n}' was not provided to the shader.`);r.push(a)}return r}function Ln(e){return new Tr(new cr(e),{})}function Cn(e){return(e==null?void 0:e.resourceType)==="render-pipeline"}var Tr=class e{constructor(t,r){this.core=t;this.priors=r;_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","render-pipeline")}get label(){return this.core.label}$name(t){return this.core.label=t,this}with(t,r){var n,a;if(yt(t))return new e(this.core,_chunkQRLTUOBJcjs.b.call(void 0, _chunkQRLTUOBJcjs.a.call(void 0, {},this.priors),{bindGroupLayoutMap:new Map([...(n=this.priors.bindGroupLayoutMap)!=null?n:[],[t,r]])}));if(bt(t))return new e(this.core,_chunkQRLTUOBJcjs.b.call(void 0, _chunkQRLTUOBJcjs.a.call(void 0, {},this.priors),{vertexLayoutMap:new Map([...(a=this.priors.vertexLayoutMap)!=null?a:[],[t,r]])}));throw new Error("Unsupported value passed into .with()")}withColorAttachment(t){return new e(this.core,_chunkQRLTUOBJcjs.b.call(void 0, _chunkQRLTUOBJcjs.a.call(void 0, {},this.priors),{colorAttachment:t}))}withDepthStencilAttachment(t){return new e(this.core,_chunkQRLTUOBJcjs.b.call(void 0, _chunkQRLTUOBJcjs.a.call(void 0, {},this.priors),{depthStencilAttachment:t}))}draw(t,r,n,a){var y;let o=this.core.unwrap(),{branch:i,fragmentFn:s}=this.core.options,u={colorAttachments:_n(s.shell.targets,(y=this.priors.colorAttachment)!=null?y:{}).map(T=>J(T.view)?_chunkQRLTUOBJcjs.b.call(void 0, _chunkQRLTUOBJcjs.a.call(void 0, {},T),{view:i.unwrap(T.view).createView()}):T)};if(this.core.label!==void 0&&(u.label=this.core.label),this.priors.depthStencilAttachment!==void 0){let T=this.priors.depthStencilAttachment;J(T.view)?u.depthStencilAttachment=_chunkQRLTUOBJcjs.b.call(void 0, _chunkQRLTUOBJcjs.a.call(void 0, {},T),{view:i.unwrap(T.view).createView()}):u.depthStencilAttachment=T}let m=i.commandEncoder.beginRenderPass(u);m.setPipeline(o.pipeline);let f=new Set(o.bindGroupLayouts);o.bindGroupLayouts.forEach((T,F)=>{var c;if(o.catchall&&F===o.catchall[0])m.setBindGroup(F,i.unwrap(o.catchall[1])),f.delete(T);else{let x=(c=this.priors.bindGroupLayoutMap)==null?void 0:c.get(T);x!==void 0&&(f.delete(T),m.setBindGroup(F,i.unwrap(x)))}});let g=new Set(this.core.usedVertexLayouts);if(this.core.usedVertexLayouts.forEach((T,F)=>{var x;let c=(x=this.priors.vertexLayoutMap)==null?void 0:x.get(T);c&&(g.delete(T),m.setVertexBuffer(F,i.unwrap(c)))}),f.size>0)throw new (0, _chunkQRLTUOBJcjs.i)(f);if(g.size>0)throw new (0, _chunkQRLTUOBJcjs.j)(g);m.draw(t,r,n,a),m.end(),i.flush()}},cr=class{constructor(t){this.options=t;_chunkQRLTUOBJcjs.c.call(void 0, this,"label");_chunkQRLTUOBJcjs.c.call(void 0, this,"usedVertexLayouts");_chunkQRLTUOBJcjs.c.call(void 0, this,"_memo");_chunkQRLTUOBJcjs.c.call(void 0, this,"_vertexBufferLayouts");_chunkQRLTUOBJcjs.c.call(void 0, this,"_targets");let r=nn(t.vertexFn.shell.attributes[0],t.vertexAttribs);this._vertexBufferLayouts=r.bufferDefinitions,this.usedVertexLayouts=r.usedVertexLayouts,this._targets=Pn(t.fragmentFn.shell.targets,t.targets)}unwrap(){var t,r,n,a;if(this._memo===void 0){let{branch:o,vertexFn:i,fragmentFn:s,slotBindings:l,primitiveState:u,depthStencilState:m,multisampleState:f}=this.options,{code:g,bindGroupLayouts:w,catchall:y}=ve({"~resolve":x=>(x.withSlots(l,()=>{x.resolve(i),x.resolve(s)}),""),toString:()=>{var x;return`renderPipeline:${(x=this.label)!=null?x:"<unnamed>"}`}},{names:o.nameRegistry,jitTranspiler:o.jitTranspiler});y!==null&&((r=w[y[0]])==null||r.$name(`${(t=this.label)!=null?t:"<unnamed>"} - Automatic Bind Group & Layout`));let T=o.device,F=T.createShaderModule({label:`${(n=this.label)!=null?n:"<unnamed>"} - Shader`,code:g}),c={layout:T.createPipelineLayout({label:`${(a=this.label)!=null?a:"<unnamed>"} - Pipeline Layout`,bindGroupLayouts:w.map(x=>o.unwrap(x))}),vertex:{module:F,buffers:this._vertexBufferLayouts},fragment:{module:F,targets:this._targets}};this.label!==void 0&&(c.label=this.label),u&&(c.primitive=u),m&&(c.depthStencil=m),f&&(c.multisample=f),this._memo={pipeline:T.createRenderPipeline(c),bindGroupLayouts:w,catchall:y}}return this._memo}};var yr=class e{constructor(t,r){this._getRoot=t;this._slotBindings=r}with(t,r){return new e(this._getRoot,[...this._slotBindings,[_chunk3JTP2ATRcjs.e.call(void 0, t)?t.slot:t,r]])}withCompute(t){return new xr(this._getRoot(),this._slotBindings,t)}withVertex(t,r){return new hr({branch:this._getRoot(),primitiveState:void 0,depthStencilState:void 0,slotBindings:this._slotBindings,vertexFn:t,vertexAttribs:r,multisampleState:void 0})}},xr=class{constructor(t,r,n){this._root=t;this._slotBindings=r;this._entryFn=n}createPipeline(){return Rn(this._root,this._slotBindings,this._entryFn)}},hr=class{constructor(t){this._options=t}withFragment(t,r,n){return _chunkQRLTUOBJcjs.d.call(void 0, typeof t!="string","Just type mismatch validation"),_chunkQRLTUOBJcjs.d.call(void 0, typeof r!="string","Just type mismatch validation"),new br(_chunkQRLTUOBJcjs.b.call(void 0, _chunkQRLTUOBJcjs.a.call(void 0, {},this._options),{fragmentFn:t,targets:r}))}},br=class e{constructor(t){this._options=t}withPrimitive(t){return new e(_chunkQRLTUOBJcjs.b.call(void 0, _chunkQRLTUOBJcjs.a.call(void 0, {},this._options),{primitiveState:t}))}withDepthStencil(t){return new e(_chunkQRLTUOBJcjs.b.call(void 0, _chunkQRLTUOBJcjs.a.call(void 0, {},this._options),{depthStencilState:t}))}withMultisample(t){return new e(_chunkQRLTUOBJcjs.b.call(void 0, _chunkQRLTUOBJcjs.a.call(void 0, {},this._options),{multisampleState:t}))}createPipeline(){return Ln(this._options)}},wt=class extends yr{constructor(r,n,a,o){super(()=>this,[]);this.device=r;this.nameRegistry=n;this.jitTranspiler=a;this._ownDevice=o;_chunkQRLTUOBJcjs.c.call(void 0, this,"~unstable");_chunkQRLTUOBJcjs.c.call(void 0, this,"_disposables",[]);_chunkQRLTUOBJcjs.c.call(void 0, this,"_unwrappedBindGroupLayouts",new je(r=>r.unwrap(this)));_chunkQRLTUOBJcjs.c.call(void 0, this,"_unwrappedBindGroups",new je(r=>r.unwrap(this)));_chunkQRLTUOBJcjs.c.call(void 0, this,"_commandEncoder",null);this["~unstable"]=this}get commandEncoder(){return this._commandEncoder||(this._commandEncoder=this.device.createCommandEncoder()),this._commandEncoder}createBuffer(r,n){let a=yn(this,r,n);return this._disposables.push(a),a}createUniform(r,n){return this.createBuffer(r,n).$usage("uniform").as("uniform")}createMutable(r,n){return this.createBuffer(r,n).$usage("storage").as("mutable")}createReadonly(r,n){return this.createBuffer(r,n).$usage("storage").as("readonly")}createBindGroup(r,n){return new ge(r,n)}destroy(){for(let r of this._disposables)r.destroy();this._ownDevice&&this.device.destroy()}createTexture(r){let n=Dn(r,this);return this._disposables.push(n),n}unwrap(r){if(Bn(r))return r.rawPipeline;if(Cn(r))return r.core.unwrap().pipeline;if(yt(r))return this._unwrappedBindGroupLayouts.getOrMake(r);if(or(r))return this._unwrappedBindGroups.getOrMake(r);if(ae(r))return r.buffer;if(J(r)||Ne(r)||ze(r))return r.unwrap();if(bt(r))return r.vertexLayout;if(ke(r)){if("unwrap"in r)return r.unwrap(this);throw new Error("Cannot unwrap laid-out sampler.")}if(We(r)){if("unwrap"in r)return r.unwrap(this);throw new Error("Cannot unwrap laid-out comparison sampler.")}throw new Error(`Unknown resource type: ${r}`)}beginRenderPass(r,n){let a=this.commandEncoder.beginRenderPass(r),o=new Map,i=new Map,s,l=()=>{if(!s)throw new Error("Cannot draw without a call to pass.setPipeline");let{core:u,priors:m}=s,f=u.unwrap();a.setPipeline(f.pipeline);let g=new Set(f.bindGroupLayouts);f.bindGroupLayouts.forEach((y,T)=>{var F,c;if(f.catchall&&T===f.catchall[0])a.setBindGroup(T,this.unwrap(f.catchall[1])),g.delete(y);else{let x=(c=(F=m.bindGroupLayoutMap)==null?void 0:F.get(y))!=null?c:o.get(y);x!==void 0&&(g.delete(y),or(x)?a.setBindGroup(T,this.unwrap(x)):a.setBindGroup(T,x))}});let w=new Set;if(u.usedVertexLayouts.forEach((y,T)=>{var x;let F=(x=m.vertexLayoutMap)==null?void 0:x.get(y),c=F?{buffer:F,offset:void 0,size:void 0}:i.get(y);!c||!c.buffer?w.add(y):ae(c.buffer)?a.setVertexBuffer(T,this.unwrap(c.buffer),c.offset,c.size):a.setVertexBuffer(T,c.buffer,c.offset,c.size)}),g.size>0)throw new (0, _chunkQRLTUOBJcjs.i)(g);if(w.size>0)throw new (0, _chunkQRLTUOBJcjs.j)(w)};n({setViewport(...u){a.setViewport(...u)},setScissorRect(...u){a.setScissorRect(...u)},setBlendConstant(...u){a.setBlendConstant(...u)},setStencilReference(...u){a.setStencilReference(...u)},beginOcclusionQuery(...u){a.beginOcclusionQuery(...u)},endOcclusionQuery(...u){a.endOcclusionQuery(...u)},executeBundles(...u){a.executeBundles(...u)},setPipeline(u){s=u},setIndexBuffer:(u,m,f,g)=>{ae(u)?a.setIndexBuffer(this.unwrap(u),m,f,g):a.setIndexBuffer(u,m,f,g)},setVertexBuffer(u,m,f,g){i.set(u,{buffer:m,offset:f,size:g})},setBindGroup(u,m){o.set(u,m)},draw(u,m,f,g){l(),a.draw(u,m,f,g)},drawIndexed(...u){l(),a.drawIndexed(...u)},drawIndirect(...u){l(),a.drawIndirect(...u)},drawIndexedIndirect(...u){l(),a.drawIndexedIndirect(...u)}}),a.end()}flush(){this._commandEncoder&&(this.device.queue.submit([this._commandEncoder.finish()]),this._commandEncoder=null)}};async function En(e){let{adapter:t,device:r,unstable_names:n="random",unstable_jitTranspiler:a}=e!=null?e:{};if(!navigator.gpu)throw new Error("WebGPU is not supported by this browser.");let o=await navigator.gpu.requestAdapter(t);if(!o)throw new Error("Could not find a compatible GPU");return new wt(await o.requestDevice(r),n==="random"?new te:new re,a,!0)}function Vn(e){let{device:t,unstable_names:r="random",unstable_jitTranspiler:n}=e!=null?e:{};return new wt(t,r==="random"?new te:new re,n,!1)}function St(e){return new wr(e)}var wr=class{constructor(t=void 0){this.defaultValue=t;_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","slot");_chunkQRLTUOBJcjs.c.call(void 0, this,"label");_chunkQRLTUOBJcjs.c.call(void 0, this,"~repr")}$name(t){return this.label=t,this}areEqual(t,r){return Object.is(t,r)}toString(){var t;return`slot:${(t=this.label)!=null?t:"<unnamed>"}`}get value(){let t=_chunkQRLTUOBJcjs.m.call(void 0, );if(!t)throw new Error("Cannot access tgpu.slot's value outside of resolution.");return Ee(t.unwrap(this))}};function Gn(e,t){return new Sr(e,t)}var Sr=class{constructor(t,r=void 0){this.schema=t;this.defaultValue=r;_chunkQRLTUOBJcjs.c.call(void 0, this,"resourceType","accessor");_chunkQRLTUOBJcjs.c.call(void 0, this,"~repr");_chunkQRLTUOBJcjs.c.call(void 0, this,"label");_chunkQRLTUOBJcjs.c.call(void 0, this,"slot");this.slot=St(r)}$name(t){return this.label=t,this.slot.$name(t),this}toString(){var t;return`accessor:${(t=this.label)!=null?t:"<unnamed>"}`}get value(){if(!_chunkQRLTUOBJcjs.m.call(void 0, ))throw new Error("Cannot access tgpu.accessor's value outside of resolution.");return new Proxy({"~resolve":r=>r.resolve(this),toString:()=>{var r;return`.value:${(r=this.label)!=null?r:"<unnamed>"}`},[_chunk3JTP2ATRcjs.a]:{dataType:this.schema}},M)}"~resolve"(t){let r=t.unwrap(this.slot);return _chunk3JTP2ATRcjs.k.call(void 0, r)?t.resolve(r):Vt(r)?`${t.resolve(r)}()`:t.resolveValue(r,this.schema)}};function $n(e){return ya(e)}function ca([e,t]){var r;return`${(r=e.label)!=null?r:"<unnamed>"}=${t}`}function ya(e){return{resourceType:"derived","~compute":e,"~repr":void 0,get value(){let r=_chunkQRLTUOBJcjs.m.call(void 0, );if(!r)throw new Error("Cannot access tgpu.derived's value outside of resolution.");return Ee(r.unwrap(this))},with(r,n){return On(this,[[r,n]])},toString(){return"derived"}}}function On(e,t){return{resourceType:"derived","~repr":void 0,"~compute"(){throw new Error("'~compute' should never be read on bound derived items.")},"~providing":{inner:e,pairs:t},get value(){let n=_chunkQRLTUOBJcjs.m.call(void 0, );if(!n)throw new Error("Cannot access tgpu.derived's value outside of resolution.");return Ee(n.unwrap(this))},with(n,a){return On(e,[...t,[n,a]])},toString(){return`derived[${t.map(ca).join(", ")}]`}}}function kn(e,t){return new Dt("private",e,t)}function Wn(e){return new Dt("workgroup",e)}var Dt=class{constructor(t,r,n){this.scope=t;this._dataType=r;this._initialValue=n;_chunkQRLTUOBJcjs.c.call(void 0, this,"_label")}$name(t){return this._label=t,this}"~resolve"(t){let r=t.names.makeUnique(this._label);return this._initialValue?t.addDeclaration(`var<${this.scope}> ${r}: ${t.resolve(this._dataType)} = ${t.resolveValue(this._initialValue,this._dataType)};`):t.addDeclaration(`var<${this.scope}> ${r}: ${t.resolve(this._dataType)};`),r}get label(){return this._label}toString(){var t;return`var:${(t=this.label)!=null?t:"<unnamed>"}`}get value(){if(!_chunkQRLTUOBJcjs.p.call(void 0, ))throw new Error("Cannot access tgpu.var's value directly in JS.");return new Proxy({"~resolve":t=>t.resolve(this),toString:()=>{var t;return`.value:${(t=this.label)!=null?t:"<unnamed>"}`},[_chunk3JTP2ATRcjs.a]:{dataType:this._dataType}},M)}};var Mn={bindGroupLayout:ct,vertexLayout:gr,init:En,initFromDevice:Vn,resolve:In,"~unstable":{fn:Xr,fragmentFn:en,vertexFn:tn,computeFn:Qr,vertexLayout:gr,derived:$n,slot:St,accessor:Gn,privateVar:kn,workgroupVar:Wn,const:zr,declare:Kr,sampler:xn,comparisonSampler:hn}},zu= exports.default =Mn;Object.assign(Mn,{__assignAst:Hr});exports.MissingBindGroupsError = _chunkQRLTUOBJcjs.i; exports.MissingLinksError = _chunkQRLTUOBJcjs.h; exports.MissingSlotValueError = _chunkQRLTUOBJcjs.f; exports.MissingVertexBuffersError = _chunkQRLTUOBJcjs.j; exports.NotUniformError = _chunkQRLTUOBJcjs.g; exports.RandomNameRegistry = te; exports.ResolutionError = _chunkQRLTUOBJcjs.e; exports.StrictNameRegistry = re; exports.default = zu; exports.isBuffer = ae; exports.isComparisonSampler = We; exports.isDerived = _chunk3JTP2ATRcjs.c; exports.isSampledTextureView = ze; exports.isSampler = ke; exports.isSlot = _chunk3JTP2ATRcjs.b; exports.isStorageTextureView = Ne; exports.isTexture = J; exports.isTgpuFn = Vt; exports.isUsableAsRender = fa; exports.isUsableAsSampled = rr; exports.isUsableAsStorage = fe; exports.isUsableAsUniform = st; exports.isUsableAsVertex = ma; exports.tgpu = Mn; exports.unstable_asMutable = jt; exports.unstable_asReadonly = Kt; exports.unstable_asUniform = qt;
26
26
  //# sourceMappingURL=index.cjs.map