typegpu
Version:
A thin layer between JS and WebGPU/WGSL that improves development experience and allows for faster iteration.
19 lines • 126 kB
JavaScript
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class; var _class2; var _class3; var _class4; var _class5; var _class6; var _class7; var _class8; var _class9; var _class10; var _class11; var _class12; var _class13; var _class14; var _class15; var _class16; var _class17; var _class18; var _class19; var _class20; var _class21; var _class22; var _class23; var _class24; var _class25; var _class26; var _class27; var _class28; var _class29; var _class30;var _chunkRC26P3MPcjs = require('./chunk-RC26P3MP.cjs');var _chunkTG4A6AM3cjs = require('./chunk-TG4A6AM3.cjs');var _chunkUMHCZDPAcjs = require('./chunk-UMHCZDPA.cjs');function Un(e){if(typeof _optionalChain([e, 'optionalAccess', _2 => _2[_chunkUMHCZDPAcjs.c]])=="function")return e[_chunkUMHCZDPAcjs.c].bind(e)}function ht(e,t){throw new Error(`Failed to handle ${e} at ${t}`)}var Fa={f:{1:_chunkUMHCZDPAcjs.pa,2:_chunkUMHCZDPAcjs.ra,3:_chunkUMHCZDPAcjs.wa,4:_chunkUMHCZDPAcjs.Ba},h:{1:_chunkUMHCZDPAcjs.qa,2:_chunkUMHCZDPAcjs.sa,3:_chunkUMHCZDPAcjs.xa,4:_chunkUMHCZDPAcjs.Ca},i:{1:_chunkUMHCZDPAcjs.oa,2:_chunkUMHCZDPAcjs.ta,3:_chunkUMHCZDPAcjs.ya,4:_chunkUMHCZDPAcjs.Da},u:{1:_chunkUMHCZDPAcjs.ma,2:_chunkUMHCZDPAcjs.ua,3:_chunkUMHCZDPAcjs.za,4:_chunkUMHCZDPAcjs.Ea},b:{1:_chunkUMHCZDPAcjs.la,2:_chunkUMHCZDPAcjs.va,3:_chunkUMHCZDPAcjs.Aa,4:_chunkUMHCZDPAcjs.Fa}},Pa={vec2f:_chunkUMHCZDPAcjs.ra,vec2h:_chunkUMHCZDPAcjs.sa,vec2i:_chunkUMHCZDPAcjs.ta,vec2u:_chunkUMHCZDPAcjs.ua,"vec2<bool>":_chunkUMHCZDPAcjs.va,vec3f:_chunkUMHCZDPAcjs.wa,vec3h:_chunkUMHCZDPAcjs.xa,vec3i:_chunkUMHCZDPAcjs.ya,vec3u:_chunkUMHCZDPAcjs.za,"vec3<bool>":_chunkUMHCZDPAcjs.Aa,vec4f:_chunkUMHCZDPAcjs.Ba,vec4h:_chunkUMHCZDPAcjs.Ca,vec4i:_chunkUMHCZDPAcjs.Da,vec4u:_chunkUMHCZDPAcjs.Ea,"vec4<bool>":_chunkUMHCZDPAcjs.Fa,mat2x2f:_chunkUMHCZDPAcjs.Pa,mat3x3f:_chunkUMHCZDPAcjs.Qa,mat4x4f:_chunkUMHCZDPAcjs.Ra},Fn={vec2f:_chunkUMHCZDPAcjs.pa,vec2h:_chunkUMHCZDPAcjs.qa,vec2i:_chunkUMHCZDPAcjs.oa,vec2u:_chunkUMHCZDPAcjs.ma,"vec2<bool>":_chunkUMHCZDPAcjs.la,vec3f:_chunkUMHCZDPAcjs.pa,vec3h:_chunkUMHCZDPAcjs.qa,vec3i:_chunkUMHCZDPAcjs.oa,vec3u:_chunkUMHCZDPAcjs.ma,"vec3<bool>":_chunkUMHCZDPAcjs.la,vec4f:_chunkUMHCZDPAcjs.pa,vec4h:_chunkUMHCZDPAcjs.qa,vec4i:_chunkUMHCZDPAcjs.oa,vec4u:_chunkUMHCZDPAcjs.ma,"vec4<bool>":_chunkUMHCZDPAcjs.la,mat2x2f:_chunkUMHCZDPAcjs.ra,mat3x3f:_chunkUMHCZDPAcjs.wa,mat4x4f:_chunkUMHCZDPAcjs.Ba};function Qe(e,t){if(_chunkUMHCZDPAcjs.O.call(void 0, e)||_chunkUMHCZDPAcjs._.call(void 0, e))return _nullishCoalesce(e.propTypes[t], () => (_chunkUMHCZDPAcjs.ea));if(e===_chunkUMHCZDPAcjs.la||_chunkTG4A6AM3cjs.c.call(void 0, e))return _chunkUMHCZDPAcjs.ea;let r=t.length;if(_chunkUMHCZDPAcjs.G.call(void 0, e)&&r>=1&&r<=4){let n=e.type.includes("bool")?"b":e.type[4],a=Fa[n][r];if(a)return a}return _chunkUMHCZDPAcjs.ea}function pr(e){return _chunkUMHCZDPAcjs.N.call(void 0, e)||_chunkUMHCZDPAcjs.Z.call(void 0, e)?e.elementType:e.type in Fn?Fn[e.type]:_chunkUMHCZDPAcjs.ea}function lr(e){if(/^0x[0-9a-f]+$/i.test(e))return _chunkUMHCZDPAcjs.fa.call(void 0, e,_chunkUMHCZDPAcjs.ja);if(/^0b[01]+$/i.test(e))return _chunkUMHCZDPAcjs.fa.call(void 0, `${Number.parseInt(e.slice(2),2)}`,_chunkUMHCZDPAcjs.ja);if(/^-?(?:\d+\.\d*|\d*\.\d+)$/i.test(e))return _chunkUMHCZDPAcjs.fa.call(void 0, e,_chunkUMHCZDPAcjs.ka);if(/^-?\d+(?:\.\d+)?e-?\d+$/i.test(e))return _chunkUMHCZDPAcjs.fa.call(void 0, e,_chunkUMHCZDPAcjs.ka);if(/^-?\d+$/i.test(e))return _chunkUMHCZDPAcjs.fa.call(void 0, e,_chunkUMHCZDPAcjs.ja)}var mr={rank:Number.POSITIVE_INFINITY,action:"none"};function $e(e){return e.type==="decorated"?e.inner:e}function Pn(e){return _chunkUMHCZDPAcjs.G.call(void 0, e)?_chunkUMHCZDPAcjs.Ga[e.type]:void 0}function bt(e,t){let r=$e(e),n=$e(t);if(r.type===n.type)return{rank:0,action:"none"};if(r.type==="abstractFloat"){if(n.type==="f32")return{rank:1,action:"none"};if(n.type==="f16")return{rank:2,action:"none"}}if(r.type==="abstractInt"){if(n.type==="i32")return{rank:3,action:"none"};if(n.type==="u32")return{rank:4,action:"none"};if(n.type==="abstractFloat")return{rank:5,action:"none"};if(n.type==="f32")return{rank:6,action:"none"};if(n.type==="f16")return{rank:7,action:"none"}}if(_chunkUMHCZDPAcjs.G.call(void 0, r)&&_chunkUMHCZDPAcjs.G.call(void 0, n)){let a=Pn(r),o=Pn(n);if(a&&o)return bt(a,o)}return _chunkUMHCZDPAcjs.K.call(void 0, r)&&_chunkUMHCZDPAcjs.K.call(void 0, n)?{rank:0,action:"none"}:mr}function Ba(e,t){let r=$e(e),n=$e(t);if(r.type==="ptr"&&bt(r.inner,n).rank<Number.POSITIVE_INFINITY)return{rank:0,action:"deref"};if(n.type==="ptr"&&bt(r,n.inner).rank<Number.POSITIVE_INFINITY)return{rank:1,action:"ref"};let a={f32:0,f16:1,i32:2,u32:3,bool:4};if(r.type in a&&n.type in a){let o=r.type,i=n.type;if(o!==i){let s=a[o];return{rank:a[i]<s?10:20,action:"cast",targetType:n}}}return mr}function Aa(e,t,r){let n=bt(e,t);return n.rank<Number.POSITIVE_INFINITY?n:r?Ba(e,t):mr}function Bn(e,t,r){let n,a=Number.POSITIVE_INFINITY,o=new Map;for(let u of t){let f=0,m=[],g=!0;for(let y of e){let x=Aa(y,u,r);if(x.rank===Number.POSITIVE_INFINITY){g=!1;break}f+=x.rank,m.push(x)}g&&f<a&&(a=f,n=u,o.set(n,m))}if(!n)return;let s=o.get(n).map((u,f)=>({sourceIndex:f,action:u.action,...u.action==="cast"&&{targetType:u.targetType}})),p=s.some(u=>u.action==="cast");return{targetType:n,actions:s,hasImplicitConversions:p}}function dr(e){return e.type==="abstractFloat"?_chunkUMHCZDPAcjs.pa:e.type==="abstractInt"?_chunkUMHCZDPAcjs.oa:e}function An(e,t){if(e.length===0)return;let r=[...new Set(e.map($e))],n=t?[...new Set(t.map($e))]:r,a=Bn(e,n,!1);if(a)return a;let o=Bn(e,n,!0);if(o)return o.hasImplicitConversions=o.actions.some(i=>i.action==="cast"),o}function Ca(e,t,r,n){if(r.action==="none")return _chunkUMHCZDPAcjs.fa.call(void 0, t.value,n);let a=e.resolve(t.value);switch(r.action){case"ref":return _chunkUMHCZDPAcjs.fa.call(void 0, `&${a}`,n);case"deref":return _chunkUMHCZDPAcjs.fa.call(void 0, `*${a}`,n);case"cast":return _chunkUMHCZDPAcjs.fa.call(void 0, `${e.resolve(n)}(${a})`,n);default:ht(r.action,"applyActionToSnippet")}}function z(e,t,r){let n=t.map(o=>o.dataType);if(n.some(o=>o===_chunkUMHCZDPAcjs.ea))return;let a=An(n,r);if(a)return a.hasImplicitConversions&&console.warn(`Implicit conversions from [
${t.map(o=>` ${o.value}: ${o.dataType.type}`).join(`,
`)}
] to ${a.targetType.type} are supported, but not recommended.
Consider using explicit conversions instead.`),t.map((o,i)=>{let s=a.actions[i];return _chunkUMHCZDPAcjs.m.call(void 0, s,"Action should not be undefined"),Ca(e,o,s,a.targetType)})}function fr(e,t,r){return Object.keys(t.propTypes).map(a=>{let o=r[a];if(!o)throw new Error(`Missing property ${a}`);let i=t.propTypes[a];return _nullishCoalesce(_optionalChain([z, 'call', _3 => _3(e,[o],[i]), 'optionalAccess', _4 => _4[0]]), () => (o))})}function he(e){if(_chunkUMHCZDPAcjs.ga.call(void 0, e))return e;if(_chunkUMHCZDPAcjs.B.call(void 0, e))return _chunkUMHCZDPAcjs.fa.call(void 0, e,e[_chunkUMHCZDPAcjs.b]);if(_chunkUMHCZDPAcjs.D.call(void 0, e)||_chunkUMHCZDPAcjs.H.call(void 0, e))return _chunkUMHCZDPAcjs.fa.call(void 0, e,Pa[e.kind]);if(Array.isArray(e)){let t=e.map(he).filter(Boolean),r=_chunkUMHCZDPAcjs.v.call(void 0, );if(!r)throw new Error("Tried to coerce array without a context");let n=z(r,t),a=_optionalChain([An, 'call', _5 => _5(t.map(o=>o.dataType)), 'optionalAccess', _6 => _6.targetType]);return!n||!a?_chunkUMHCZDPAcjs.fa.call(void 0, e,_chunkUMHCZDPAcjs.ea):_chunkUMHCZDPAcjs.fa.call(void 0, n.map(o=>o.value).join(", "),_chunkRC26P3MPcjs.X.call(void 0, dr(a),e.length))}return typeof e=="string"||typeof e=="function"||typeof e=="object"||typeof e=="symbol"||typeof e>"u"||e===null?_chunkUMHCZDPAcjs.fa.call(void 0, e,_chunkUMHCZDPAcjs.ea):typeof e=="number"||typeof e=="bigint"?_chunkUMHCZDPAcjs.fa.call(void 0, e,_nullishCoalesce(_optionalChain([lr, 'call', _7 => _7(String(e)), 'optionalAccess', _8 => _8.dataType]), () => (_chunkUMHCZDPAcjs.ea))):typeof e=="boolean"?_chunkUMHCZDPAcjs.fa.call(void 0, e,_chunkUMHCZDPAcjs.la):_chunkUMHCZDPAcjs.fa.call(void 0, e,_chunkUMHCZDPAcjs.ea)}var H={get(e,t){if(t in e)return Reflect.get(e,t);if(t!==_chunkUMHCZDPAcjs.e)return t==="toString"||t===Symbol.toStringTag||t===Symbol.toPrimitive?()=>e.toString():new Proxy({"~resolve":r=>`${r.resolve(e)}.${String(t)}`,toString:()=>`.value(...).${String(t)}:${_nullishCoalesce(_chunkUMHCZDPAcjs.i.call(void 0, e), () => ("<unnamed>"))}`,[_chunkUMHCZDPAcjs.b]:Qe(e[_chunkUMHCZDPAcjs.b],String(t))},H)}};function Ke(e,t){let r=t,n;for(;n=Un(r);)r=n(e);return r}function Cn(e,t){return new cr(e,t)}var cr=class{constructor(t,r){this.dataType=t;this._value=r;this[_chunkUMHCZDPAcjs.a]={dataType:t}}$name(t){return _chunkUMHCZDPAcjs.j.call(void 0, this,t),this}"~resolve"(t){let r=t.names.makeUnique(_chunkUMHCZDPAcjs.i.call(void 0, this)),n=t.resolveValue(this._value,this.dataType),a=t.resolve(this.dataType);return t.addDeclaration(`const ${r}: ${a} = ${n};`),r}toString(){return`const:${_nullishCoalesce(_chunkUMHCZDPAcjs.i.call(void 0, this), () => ("<unnamed>"))}`}[_chunkUMHCZDPAcjs.c](){return new Proxy({"~resolve":t=>t.resolve(this),toString:()=>`.value:${_nullishCoalesce(_chunkUMHCZDPAcjs.i.call(void 0, this), () => ("<unnamed>"))}`,[_chunkUMHCZDPAcjs.b]:this.dataType},H)}get value(){return _chunkUMHCZDPAcjs.y.call(void 0, )?this[_chunkUMHCZDPAcjs.c]():this._value}get $(){return this.value}};function Ge(e){return _optionalChain([e, 'optionalAccess', _9 => _9.resourceType])==="slot"}function Ve(e){return _optionalChain([e, 'optionalAccess', _10 => _10.resourceType])==="derived"}function He(e){return _optionalChain([e, 'optionalAccess', _11 => _11[_chunkUMHCZDPAcjs.e]])!==void 0}function Ee(e){return _optionalChain([e, 'optionalAccess', _12 => _12.resourceType])==="accessor"}function gr(e){return typeof _optionalChain([e, 'optionalAccess', _13 => _13["~resolve"]])=="function"}function wt(e){return typeof e=="number"||typeof e=="boolean"||typeof e=="string"||gr(e)||_chunkUMHCZDPAcjs.M.call(void 0, e)||Ge(e)||Ve(e)||He(e)}function Ye(e){return!!e&&typeof e=="object"&&"getMappedRange"in e&&"mapAsync"in e}function Rn(e){return _optionalChain([e, 'optionalAccess', _14 => _14.resourceType])==="buffer-usage"}function yr(e){return!!_optionalChain([e, 'optionalAccess', _15 => _15[_chunkUMHCZDPAcjs.a]])}function be(e,t){for(let[r,n]of Object.entries(t))e[r]=n,_chunkUMHCZDPAcjs.k.call(void 0, n)&&_chunkUMHCZDPAcjs.i.call(void 0, n)===void 0&&n.$name(r)}function $n(e,t,r){let n=[...e.matchAll(/:\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 _chunkUMHCZDPAcjs.O.call(void 0, a)&&i!==void 0?[[i,a]]:[]})))}function St(e,t,r){let n=e.match(/->\s(?<output>[\w\d_]+)\s{/),a=n?_optionalChain([n, 'access', _16 => _16[1], 'optionalAccess', _17 => _17.trim, 'call', _18 => _18()]):void 0;_chunkUMHCZDPAcjs.O.call(void 0, t)&&a&&!/\s/g.test(a)&&r({[a]:t})}function Ra(e){return new RegExp(`(?<![\\w\\$_.])${e.replaceAll(".","\\.").replaceAll("$","\\$")}(?![\\w\\$_])`,"g")}function we(e,t,r){return Object.entries(t).reduce((n,[a,o])=>wt(o)||_chunkUMHCZDPAcjs.Y.call(void 0, o)?n.replaceAll(Ra(a),e.resolve(o)):o!==null&&typeof o=="object"?(_nullishCoalesce([...r.matchAll(new RegExp(`${a.replaceAll(".","\\.").replaceAll("$","\\$")}\\.(?<prop>.*?)(?![\\w\\$_])`,"g"))].map(s=>s[1]), () => ([]))).reduce((s,p)=>p&&p in o?we(e,{[`${a}.${p}`]:o[p]},s):s,n):n,r)}function Gn(e){return new Tr(e)}var Tr= (_class =class{constructor(t){;_class.prototype.__init.call(this);this.declaration=t}__init() {this.externalsToApply=[]}$uses(t){return this.externalsToApply.push(t),this}"~resolve"(t){let r={};for(let a of this.externalsToApply)be(r,a);let n=we(t,r,this.declaration);return t.addDeclaration(n),""}toString(){return`declare: ${this.declaration}`}}, _class);var _tinyest = require('tinyest'); var uo = _interopRequireWildcard(_tinyest);function _n(e){let{strippedCode:t,argRange:r}=$a(e),n=new vt(t);n.consume("(");let a=[];for(;!n.isAt(")");){let i=[];for(;n.isAt("@");)n.parseUntil(Vn,En),n.consume(")"),i.push(n.lastParsed);n.parseUntil(Va);let s=n.lastParsed,p;n.isAt(":")&&(n.consume(":"),n.parseUntil(Ea,ka),p=n.lastParsed),a.push({identifier:s,attributes:i,type:p}),n.isAt(",")&&n.consume(",")}n.consume(")");let o;if(n.isAt("->")){n.consume("->");let i=[];for(;n.isAt("@");)n.parseUntil(Vn,En),n.consume(")"),i.push(n.lastParsed);o={type:n.str.slice(n.pos),attributes:i}}return{args:a,ret:o,range:{begin:r[0],end:r[1]}}}function $a(e){let t=new vt(e),r="",n;for(;!t.isFinished();){if(t.isAt(Ga)){t.advanceBy(1);continue}if(t.isAt("//")){t.consume("//"),t.parseUntil(kn),t.advanceBy(1);continue}if(t.isAt("/*")){t.parseUntil(_a,La),t.consume("*/");continue}if(t.isAt("{"))return{strippedCode:r,argRange:[n,t.pos]};t.isAt("(")&&n===void 0&&(n=t.pos),n!==void 0&&(r+=t.str[t.pos]),t.advanceBy(1)}throw new Error("Invalid wgsl code!")}var vt=class{constructor(t){this.str=t;this.#e=0}#t;#e;get pos(){return this.#e}get lastParsed(){if(this.#t===void 0)throw new Error("Parse was not called yet!");return this.str.slice(this.#t,this.pos)}isFinished(){return this.#e>=this.str.length}isAt(t){if(typeof t=="string"){for(let r=0;r<t.length;r++)if(this.str[this.#e+r]!==t[r])return!1;return!0}for(let r of t)if(this.isAt(r))return!0;return!1}parseUntil(t,r){this.#t=this.#e;let n=0;for(;this.#e<this.str.length;){if(r&&this.isAt(r[0])&&(n+=1),r&&this.isAt(r[1])&&(n-=1),n===0&&this.isAt(t))return this.#e;this.#e+=1}throw new Error("Reached the end of the string without finding a match!")}advanceBy(t){this.#e+=t}consume(t){if(!this.isAt(t))throw new Error(`Expected '${t}' at position ${this.#e}, but found '${this.str.slice(this.#e,this.#e+t.length)}'`);this.advanceBy(t.length)}},kn=new Set([`
`,"\v","\f","\r","\x85","\u2028","\u2029"]),Ga=new Set([...kn," "," ","\u200E","\u200F"]),Vn=new Set([")"]),Va=new Set([":",",",")"]),Ea=new Set([",",")"]),_a=new Set(["*/"]),En=["(",")"],ka=["<",">"],La=["/*","*/"];function ie(e,t=""){let r=[],n={applyExternals(o){r.push(o)},resolve(o,i,s){let p={};for(let f of r)be(p,f);let u=o.names.makeUnique(_chunkUMHCZDPAcjs.i.call(void 0, this));if(typeof e=="string"){let f=we(o,p,e),m="",g="";if(t!==""){let y=_chunkUMHCZDPAcjs.O.call(void 0, i[0])?`(in: ${o.resolve(i[0])})`:"()",x=_chunkUMHCZDPAcjs.M.call(void 0, s)?_chunkRC26P3MPcjs.ba.call(void 0, s):"",b=s!==_chunkUMHCZDPAcjs.C?_chunkUMHCZDPAcjs.O.call(void 0, s)?`-> ${o.resolve(s)}`:`-> ${x!==""?x:"@location(0)"} ${o.resolve(s)}`:"";m=`${y} ${b} `,g=f}else{let y=_n(f);if(y.args.length!==i.length)throw new Error(`WGSL implementation has ${y.args.length} arguments, while the shell has ${i.length} arguments.`);let x=y.args.map((I,P)=>`${I.identifier}: ${On(o,`parameter ${I.identifier}`,I.type,i[P])}`).join(", "),b=s===_chunkUMHCZDPAcjs.C?"":`-> ${On(o,"return type",_optionalChain([y, 'access', _19 => _19.ret, 'optionalAccess', _20 => _20.type]),s)}`;m=`(${x}) ${b}`,g=f.slice(y.range.end)}o.addDeclaration(`${t}fn ${u}${m}${g}`)}else{let f=_chunkUMHCZDPAcjs.l.call(void 0, e);if(_optionalChain([f, 'optionalAccess', _21 => _21.externals])){let b=Object.fromEntries(Object.entries(f.externals).filter(([I])=>!(I in p)));be(p,b)}let m=_optionalChain([f, 'optionalAccess', _22 => _22.ast]);if(!m)throw new Error("Missing metadata for tgpu.fn function body (either missing 'kernel' directive, or misconfigured `unplugin-typegpu`)");let g=m.externalNames.filter(b=>!(b in p));if(g.length>0)throw new (0, _chunkUMHCZDPAcjs.q)(_chunkUMHCZDPAcjs.i.call(void 0, this),g);let{head:y,body:x}=o.fnToWgsl({args:i.map((b,I)=>_chunkUMHCZDPAcjs.fa.call(void 0, _optionalChain([m, 'access', _23 => _23.params, 'access', _24 => _24[I], 'optionalAccess', _25 => _25.type])===_tinyest.FuncParameterType.identifier?m.params[I].name:`_arg_${I}`,b)),argAliases:Object.fromEntries(m.params.flatMap((b,I)=>b.type===_tinyest.FuncParameterType.destructuredObject?b.props.map(({name:P,alias:Ua})=>[Ua,_chunkUMHCZDPAcjs.fa.call(void 0, `_arg_${I}.${P}`,i[I].propTypes[P])]):[])),returnType:s,body:m.body,externalMap:p});o.addDeclaration(`${t}fn ${u}${o.resolve(y)}${o.resolve(x)}`)}return u}},a=_chunkUMHCZDPAcjs.i.call(void 0, e);return a!==void 0&&_chunkUMHCZDPAcjs.j.call(void 0, n,a),n}function On(e,t,r,n){let a=e.resolve(n).replace(/\s/g,"");if(!r)return a;let o=r.replace(/\s/g,"");if(o!==a)throw new Error(`Type mismatch between TGPU shell and WGSL code string: ${t}, JS type "${a}", WGSL type "${o}".`);return r}function Oa(e,t={}){let r=0,n=new Set;return Object.fromEntries(Object.entries(_nullishCoalesce(e, () => ({}))).map(([a,o])=>{let i=_chunkUMHCZDPAcjs.ca.call(void 0, o);if(i!==void 0){if(n.has(i))throw new Error("Duplicate custom location attributes found");n.add(i)}return[a,o]}).map(([a,o])=>{if(_chunkRC26P3MPcjs.aa.call(void 0, o))return[a,o];if(_chunkUMHCZDPAcjs.ca.call(void 0, o)!==void 0)return[a,o];if(t[a])return[a,_chunkRC26P3MPcjs._.call(void 0, t[a],o)];for(;n.has(r);)r++;return[a,_chunkRC26P3MPcjs._.call(void 0, r++,o)]}))}function se(e,t={}){return _chunkUMHCZDPAcjs.da.call(void 0, e)?_chunkUMHCZDPAcjs.X.call(void 0, e)||_chunkUMHCZDPAcjs.ca.call(void 0, e)!==void 0?e:_chunkRC26P3MPcjs._.call(void 0, 0,e):_chunkRC26P3MPcjs.da.call(void 0, Oa(e,t))}function ue(e,...t){return Wa(e)?Ma(e,...t):e}function Wa(e){return Array.isArray(e)&&"raw"in e&&Array.isArray(e.raw)&&e.raw.every(t=>typeof t=="string")}function Ma(e,...t){return e.slice(1).reduce((r,n,a)=>`${r}${t[a]}${n}`,e[0])}function Wn(e){let t={argTypes:e.in&&Object.keys(e.in).length!==0?[se(e.in)]:[],returnType:_chunkUMHCZDPAcjs.C,workgroupSize:[_nullishCoalesce(e.workgroupSize[0], () => (1)),_nullishCoalesce(e.workgroupSize[1], () => (1)),_nullishCoalesce(e.workgroupSize[2], () => (1))],isEntry:!0},r=(n,...a)=>Na(t,e.workgroupSize,ue(n,...a));return Object.assign(Object.assign(r,t),{does:r})}function Na(e,t,r){let n=ie(r,`@compute @workgroup_size(${t.join(", ")}) `),a=e.argTypes[0];return{shell:e,$uses(i){return n.applyExternals(i),this},[_chunkUMHCZDPAcjs.a]:!0,[_chunkUMHCZDPAcjs.d]:n,$name(i){return _chunkUMHCZDPAcjs.j.call(void 0, n,i),_chunkUMHCZDPAcjs.k.call(void 0, a)&&a.$name(`${i}_Input`),this},"~resolve"(i){return n.resolve(i,e.argTypes,e.returnType)},toString(){return`computeFn:${_nullishCoalesce(_chunkUMHCZDPAcjs.i.call(void 0, n), () => ("<unnamed>"))}`}}}function xr(e,t){let r={[_chunkUMHCZDPAcjs.a]:!0,argTypes:e,returnType:_nullishCoalesce(t, () => (_chunkUMHCZDPAcjs.C)),isEntry:!1};return Object.assign((a,...o)=>ja(r,ue(a,...o)),r)}function hr(e){return!!_optionalChain([e, 'optionalAccess', _26 => _26[_chunkUMHCZDPAcjs.a]])&&_optionalChain([e, 'optionalAccess', _27 => _27.resourceType])==="function"}function za([e,t]){return`${_nullishCoalesce(_chunkUMHCZDPAcjs.i.call(void 0, e), () => ("<unnamed>"))}=${t}`}function ja(e,t){let r=ie(t,""),n={[_chunkUMHCZDPAcjs.a]:{implementation:t,argTypes:e.argTypes},shell:e,resourceType:"function",$uses(i){return r.applyExternals(i),this},[_chunkUMHCZDPAcjs.d]:r,$name(i){return _chunkUMHCZDPAcjs.j.call(void 0, r,i),this},with(i,s){return Mn(o,[[Ee(i)?i.slot:i,s]])},"~resolve"(i){if(typeof t=="string")return $n(t,e.argTypes,r.applyExternals),St(t,e.returnType,r.applyExternals),r.resolve(i,e.argTypes,e.returnType);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(e.returnType),r.resolve(i,e.argTypes,e.returnType)}finally{s.callStack.pop()}}},a=_chunkUMHCZDPAcjs.ia.call(void 0, (...i)=>{if(typeof t=="string")throw new Error("Cannot execute on the CPU functions constructed with raw WGSL");let s=i.map((p,u)=>_chunkRC26P3MPcjs.ca.call(void 0, e.argTypes[u],p));return t(...s)},(...i)=>_chunkUMHCZDPAcjs.fa.call(void 0, new Dt(o,i.map(s=>s.value)),_nullishCoalesce(e.returnType, () => (_chunkUMHCZDPAcjs.ea))),"tgpuFnCall",e.argTypes);a[_chunkUMHCZDPAcjs.a].implementation=t;let o=Object.assign(a,n);return Object.defineProperty(o,"toString",{value(){return`fn:${_nullishCoalesce(_chunkUMHCZDPAcjs.i.call(void 0, r), () => ("<unnamed>"))}`}}),o}function Mn(e,t){let r={[_chunkUMHCZDPAcjs.a]:{implementation:e[_chunkUMHCZDPAcjs.a].implementation,argTypes:e[_chunkUMHCZDPAcjs.a].argTypes},resourceType:"function",shell:e.shell,[_chunkUMHCZDPAcjs.e]:{inner:e,pairs:t},$uses(o){return e.$uses(o),this},[_chunkUMHCZDPAcjs.d]:e,$name(o){return e.$name(o),this},with(o,i){return Mn(a,[...t,[Ee(o)?o.slot:o,i]])}},n=_chunkUMHCZDPAcjs.ia.call(void 0, (...o)=>e(...o),(...o)=>_chunkUMHCZDPAcjs.fa.call(void 0, new Dt(a,o.map(i=>i.value)),_nullishCoalesce(e.shell.returnType, () => (_chunkUMHCZDPAcjs.ea))),"tgpuFnCall",e.shell.argTypes),a=Object.assign(n,r);return Object.defineProperty(a,"toString",{value(){return`fn:${_nullishCoalesce(_chunkUMHCZDPAcjs.i.call(void 0, e), () => ("<unnamed>"))}[${t.map(za).join(", ")}]`}}),a[_chunkUMHCZDPAcjs.a].implementation=e[_chunkUMHCZDPAcjs.a].implementation,a}var Dt=class{constructor(t,r){this._fn=t;this._params=r;this[_chunkUMHCZDPAcjs.d]=t}"~resolve"(t){return t.resolve(`${t.resolve(this._fn)}(${this._params.map(r=>t.resolve(r)).join(", ")})`)}toString(){return`call:${_nullishCoalesce(_chunkUMHCZDPAcjs.i.call(void 0, this), () => ("<unnamed>"))}`}};function Nn(e){let t={in:e.in,out:e.out,returnType:se(e.out),isEntry:!0},r=(n,...a)=>qa(t,ue(n,...a));return Object.assign(Object.assign(r,t),{does:r})}function qa(e,t){let r=ie(t,"@fragment "),n=e.returnType;return typeof t=="string"&&St(t,n,o=>r.applyExternals(o)),{shell:e,outputType:n,$uses(o){return r.applyExternals(o),this},[_chunkUMHCZDPAcjs.a]:!0,[_chunkUMHCZDPAcjs.d]:r,$name(o){return _chunkUMHCZDPAcjs.j.call(void 0, r,o),_chunkUMHCZDPAcjs.k.call(void 0, n)&&n.$name(`${o}_Output`),this},"~resolve"(o){let i=e.in?se(e.in,o.varyingLocations).$name(`${_nullishCoalesce(_chunkUMHCZDPAcjs.i.call(void 0, this), () => (""))}_Input`):void 0;if(i&&r.applyExternals({In:i}),r.applyExternals({Out:n}),typeof t=="string")return r.resolve(o,i?[i]:[],e.returnType);let s=o;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(o,i?[i]:[],e.returnType)}finally{s.callStack.pop()}},toString(){return`fragmentFn:${_nullishCoalesce(_chunkUMHCZDPAcjs.i.call(void 0, r), () => ("<unnamed>"))}`}}}function zn(e){if(Object.keys(e.out).length===0)throw new Error("A vertexFn output cannot be empty since it must include the 'position' builtin.");let t={in:e.in,out:e.out,argTypes:e.in&&Object.keys(e.in).length!==0?[se(e.in)]:[],isEntry:!0},r=(n,...a)=>Qa(t,ue(n,...a));return Object.assign(Object.assign(r,t),{does:r})}function Qa(e,t){let r=ie(t,"@vertex "),n=e.argTypes[0];return{shell:e,$uses(o){return r.applyExternals(o),this},[_chunkUMHCZDPAcjs.a]:!0,[_chunkUMHCZDPAcjs.d]:r,$name(o){return _chunkUMHCZDPAcjs.j.call(void 0, r,o),_chunkUMHCZDPAcjs.k.call(void 0, n)&&n.$name(`${o}_Input`),this},"~resolve"(o){let i=se(e.out,o.varyingLocations).$name(`${_nullishCoalesce(_chunkUMHCZDPAcjs.i.call(void 0, this), () => (""))}_Output`);if(typeof t=="string")return n&&r.applyExternals({In:n}),r.applyExternals({Out:i}),r.resolve(o,e.argTypes,i);let s=o;if(s.callStack===void 0)throw new Error("Cannot resolve a TGSL function outside of a generation context");try{return s.callStack.push(i),r.resolve(o,e.argTypes,i)}finally{s.callStack.pop()}},toString(){return`vertexFn:${_nullishCoalesce(_chunkUMHCZDPAcjs.i.call(void 0, r), () => ("<unnamed>"))}`}}}var pe= (_class2 =class{constructor() { _class2.prototype.__init2.call(this); }__init2() {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++}`}}, _class2),le= exports.StrictNameRegistry = (_class3 =class{constructor() { _class3.prototype.__init3.call(this); }__init3() {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}}, _class3);function Je(e){return typeof _optionalChain([e, 'optionalAccess', _28 => _28.format])=="string"}function jn(e,t){let r=[];if(_chunkUMHCZDPAcjs.da.call(void 0, e)){if(!Je(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:_nullishCoalesce(_chunkUMHCZDPAcjs.ca.call(void 0, e), () => (0))}]}]}}let n=[],a=new WeakMap,o=0;for(let[i,s]of Object.entries(e)){if(_chunkRC26P3MPcjs.aa.call(void 0, s))continue;let p=t[i];if(!p)throw new Error(`An attribute by the name of '${i}' was not provided to the shader.`);let u=p._layout,f=a.get(u);f||(r.push(u),f=[],n.push({arrayStride:u.stride,stepMode:u.stepMode,attributes:f}),a.set(u,f)),o=_nullishCoalesce(_chunkUMHCZDPAcjs.ca.call(void 0, s), () => (o)),f.push({format:p.format,offset:p.offset,shaderLocation:o++})}return{usedVertexLayouts:r,bufferDefinitions:n}}var Ka=["bool","f32","f16","i32","u32","vec2f","vec3f","vec4f","vec2h","vec3h","vec4h","vec2i","vec3i","vec4i","vec2u","vec3u","vec4u","vec2<bool>","vec3<bool>","vec4<bool>","mat2x2f","mat3x3f","mat4x4f"];function Ha(e){return Ka.includes(e.type)}function br(e,[t,r]){return` ${_chunkRC26P3MPcjs.ba.call(void 0, r)}${t}: ${e.resolve(r)},
`}function Ya(e,t){let r=e.names.makeUnique(_chunkUMHCZDPAcjs.i.call(void 0, t));return e.addDeclaration(`
struct ${r} {
${Object.entries(t.propTypes).map(n=>br(e,n)).join("")}}
`),r}function Ja(e,t){let r=e.names.makeUnique(_chunkUMHCZDPAcjs.i.call(void 0, t));return e.addDeclaration(`
struct ${r} {
${Object.entries(t.propTypes).map(n=>Je(n[1])?br(e,[n[0],_chunkRC26P3MPcjs.b[n[1].format]]):br(e,n)).join("")}
}
`),r}function Xa(e,t){let r=e.resolve(t.elementType);return t.elementCount===0?`array<${r}>`:`array<${r}, ${t.elementCount}>`}function Za(e,t){let r=e.resolve(Je(t.elementType)?_chunkRC26P3MPcjs.b[t.elementType.format]:t.elementType);return t.elementCount===0?`array<${r}>`:`array<${r}, ${t.elementCount}>`}function wr(e,t){if(_chunkUMHCZDPAcjs.Y.call(void 0, t))return t.type==="unstruct"?Ja(e,t):t.type==="disarray"?Za(e,t):t.type==="loose-decorated"?e.resolve(Je(t.inner)?_chunkRC26P3MPcjs.b[t.inner.format]:t.inner):e.resolve(_chunkRC26P3MPcjs.b[t.type]);if(Ha(t))return t.type;if(t.type==="struct")return Ya(e,t);if(t.type==="array")return Xa(e,t);if(t.type==="atomic")return`atomic<${wr(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"||t.type==="void"||t.type==="u16")throw new Error(`${t.type} has no representation in WGSL`);ht(t,"resolveData")}var _typedbinary = require('typed-binary');function eo(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 A=eo;var qn=new WeakMap;function It(e){let t=qn.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;A(r,_chunkUMHCZDPAcjs._.call(void 0, e)?_chunkRC26P3MPcjs.T.call(void 0, i):_chunkRC26P3MPcjs.S.call(void 0, i)),a&&(a.padding=r.size-s);let p=_chunkRC26P3MPcjs.V.call(void 0, i);n[o]={offset:r.size,size:p},a=n[o],r.add(p)}return a&&(a.padding=_chunkRC26P3MPcjs.a.call(void 0, _chunkRC26P3MPcjs.V.call(void 0, e),_chunkRC26P3MPcjs.S.call(void 0, e))-r.size),qn.set(e,n),n}var Ft=(()=>{try{return new Function("return true"),!0}catch (e2){return!1}})(),Sr=new WeakMap,vr={u32:"u32",vec2u:"u32",vec3u:"u32",vec4u:"u32",u16:"u16",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"},Dr={u32:"setUint32",i32:"setInt32",f32:"setFloat32",u16:"setUint16"};function Ut(e,t,r){if(_chunkUMHCZDPAcjs.Q.call(void 0, e)||_chunkUMHCZDPAcjs.W.call(void 0, e))return Ut(e.inner,t,r);if(_chunkUMHCZDPAcjs.O.call(void 0, e)||_chunkUMHCZDPAcjs._.call(void 0, e)){let a=It(e),o=Object.entries(a).sort((s,p)=>s[1].offset-p[1].offset),i="";for(let[s,p]of o){let u=e.propTypes[s];u&&(i+=Ut(u,`(${t} + ${p.offset})`,`${r}.${s}`))}return i}if(_chunkUMHCZDPAcjs.N.call(void 0, e)||_chunkUMHCZDPAcjs.Z.call(void 0, e)){let a=e,o=_chunkRC26P3MPcjs.a.call(void 0, _chunkRC26P3MPcjs.V.call(void 0, a.elementType),_chunkRC26P3MPcjs.S.call(void 0, a.elementType)),i="";return i+=`for (let i = 0; i < ${a.elementCount}; i++) {
`,i+=Ut(a.elementType,`(${t} + i * ${o})`,`${r}[i]`),i+=`}
`,i}if(_chunkUMHCZDPAcjs.G.call(void 0, e)){let a=vr[e.type],o="",i=Dr[a],s=["x","y","z","w"],p=_chunkUMHCZDPAcjs.E.call(void 0, e)?2:_chunkUMHCZDPAcjs.F.call(void 0, e)?3:4;for(let u=0;u<p;u++)o+=`output.${i}((${t} + ${u*4}), ${r}.${s[u]}, littleEndian);
`;return o}if(_chunkUMHCZDPAcjs.K.call(void 0, e)){let a=vr[e.type],o=Dr[a],i=_chunkUMHCZDPAcjs.I.call(void 0, e)?2:_chunkUMHCZDPAcjs.J.call(void 0, e)?3:4,s=i*i,p=_chunkRC26P3MPcjs.a.call(void 0, i*4,8),u="";for(let f=0;f<s;f++){let m=Math.floor(f/i),g=f%i,y=m*p+g*4;u+=`output.${o}((${t} + ${y}), ${r}.columns[${m}].${["x","y","z","w"][g]}, littleEndian);
`}return u}let n=vr[e.type];return`output.${Dr[n]}(${t}, ${r}, littleEndian);
`}function Pt(e){if(Sr.has(e))return Sr.get(e);let t=Ut(e,"offset","value"),r=new Function("output","offset","value","littleEndian=true",t);return Sr.set(e,r),r}var _e={bool(){throw new Error("Booleans are not host-shareable")},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)},u16(e,t,r){e.writeUint16(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)},"vec2<bool>"(){throw new Error("Booleans are not host-shareable")},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)},"vec3<bool>"(){throw new Error("Booleans are not host-shareable")},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)},"vec4<bool>"(){throw new Error("Booleans are not host-shareable")},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=_chunkRC26P3MPcjs.S.call(void 0, t);A(e,n);for(let[a,o]of Object.entries(t.propTypes))A(e,_chunkRC26P3MPcjs.S.call(void 0, o)),me(e,o,r[a]);A(e,n)},array(e,t,r){if(t.elementCount===0)throw new Error("Cannot write using a runtime-sized schema.");let n=_chunkRC26P3MPcjs.S.call(void 0, t);A(e,n);let a=e.currentByteOffset;for(let o=0;o<Math.min(t.elementCount,r.length);o++)A(e,n),me(e,t.elementType,r[o]);e.seekTo(a+_chunkRC26P3MPcjs.V.call(void 0, t))},ptr(){throw new Error("Pointers are not host-shareable")},atomic(e,t,r){_optionalChain([_e, 'access', _29 => _29[t.inner.type], 'optionalCall', _30 => _30(e,t,r)])},decorated(e,t,r){let n=_chunkRC26P3MPcjs.T.call(void 0, t);A(e,n);let a=e.currentByteOffset;_optionalChain([_e, 'access', _31 => _31[_optionalChain([t, 'access', _32 => _32.inner, 'optionalAccess', _33 => _33.type])], 'optionalCall', _34 => _34(e,t.inner,r)]),e.seekTo(a+_chunkRC26P3MPcjs.V.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){let n=_chunkRC26P3MPcjs.S.call(void 0, t);A(e,n);let a=e.currentByteOffset;for(let o=0;o<Math.min(t.elementCount,r.length);o++)A(e,n),_optionalChain([_e, 'access', _35 => _35[_optionalChain([t, 'access', _36 => _36.elementType, 'optionalAccess', _37 => _37.type])], 'optionalCall', _38 => _38(e,t.elementType,r[o])]);e.seekTo(a+_chunkRC26P3MPcjs.V.call(void 0, t))},unstruct(e,t,r){for(let[n,a]of Object.entries(t.propTypes))_optionalChain([_e, 'access', _39 => _39[a.type], 'optionalCall', _40 => _40(e,a,r[n])])},"loose-decorated"(e,t,r){let n=_chunkRC26P3MPcjs.T.call(void 0, t);A(e,n);let a=e.currentByteOffset,o=_e[_optionalChain([t, 'access', _41 => _41.inner, 'optionalAccess', _42 => _42.type])];return _optionalChain([o, 'optionalCall', _43 => _43(e,t.inner,r)]),e.seekTo(a+_chunkRC26P3MPcjs.V.call(void 0, t)),r}};function me(e,t,r){let n=_e[t.type];if(!n)throw new Error(`Cannot write data of type '${t.type}'.`);n(e,t,r)}var Se={bool(){throw new Error("Booleans are not host-shareable")},f32(e){return e.readFloat32()},f16(e){return e.readFloat16()},i32(e){return e.readInt32()},u32(e){return e.readUint32()},u16(e){return e.readUint16()},vec2f(e){return _chunkUMHCZDPAcjs.ra.call(void 0, e.readFloat32(),e.readFloat32())},vec3f(e){return _chunkUMHCZDPAcjs.wa.call(void 0, e.readFloat32(),e.readFloat32(),e.readFloat32())},vec4f(e){return _chunkUMHCZDPAcjs.Ba.call(void 0, e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32())},vec2h(e){return _chunkUMHCZDPAcjs.sa.call(void 0, e.readFloat16(),e.readFloat16())},vec3h(e){return _chunkUMHCZDPAcjs.xa.call(void 0, e.readFloat16(),e.readFloat16(),e.readFloat16())},vec4h(e){return _chunkUMHCZDPAcjs.Ca.call(void 0, e.readFloat16(),e.readFloat16(),e.readFloat16(),e.readFloat16())},vec2i(e){return _chunkUMHCZDPAcjs.ta.call(void 0, e.readInt32(),e.readInt32())},vec3i(e){return _chunkUMHCZDPAcjs.ya.call(void 0, e.readInt32(),e.readInt32(),e.readInt32())},vec4i(e){return _chunkUMHCZDPAcjs.Da.call(void 0, e.readInt32(),e.readInt32(),e.readInt32(),e.readInt32())},vec2u(e){return _chunkUMHCZDPAcjs.ua.call(void 0, e.readUint32(),e.readUint32())},vec3u(e){return _chunkUMHCZDPAcjs.za.call(void 0, e.readUint32(),e.readUint32(),e.readUint32())},vec4u(e){return _chunkUMHCZDPAcjs.Ea.call(void 0, e.readUint32(),e.readUint32(),e.readUint32(),e.readUint32())},"vec2<bool>"(){throw new Error("Booleans are not host-shareable")},"vec3<bool>"(){throw new Error("Booleans are not host-shareable")},"vec4<bool>"(){throw new Error("Booleans are not host-shareable")},mat2x2f(e){return _chunkUMHCZDPAcjs.Pa.call(void 0, e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32())},mat3x3f(e){let t=()=>{let r=e.readFloat32();return e.readFloat32(),r};return _chunkUMHCZDPAcjs.Qa.call(void 0, e.readFloat32(),e.readFloat32(),t(),e.readFloat32(),e.readFloat32(),t(),e.readFloat32(),e.readFloat32(),t())},mat4x4f(e){return _chunkUMHCZDPAcjs.Ra.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=_chunkRC26P3MPcjs.S.call(void 0, t);A(e,r);let n={};for(let[a,o]of Object.entries(t.propTypes))A(e,_chunkRC26P3MPcjs.S.call(void 0, o)),n[a]=j(e,o);return A(e,r),n},array(e,t){if(t.elementCount===0)throw new Error("Cannot read using a runtime-sized schema.");let r=_chunkRC26P3MPcjs.S.call(void 0, t),n=[];for(let a=0;a<t.elementCount;a++){A(e,r);let o=t.elementType,i=j(e,o);n.push(i)}return A(e,r),n},ptr(){throw new Error("Pointers are not host-shareable")},atomic(e,t){return j(e,t.inner)},decorated(e,t){let r=_chunkRC26P3MPcjs.T.call(void 0, t);A(e,r);let n=e.currentByteOffset,a=j(e,t.inner);return e.seekTo(n+_chunkRC26P3MPcjs.V.call(void 0, t)),a},uint8:e=>e.readUint8(),uint8x2:e=>_chunkUMHCZDPAcjs.ua.call(void 0, e.readUint8(),e.readUint8()),uint8x4:e=>_chunkUMHCZDPAcjs.Ea.call(void 0, e.readUint8(),e.readUint8(),e.readUint8(),e.readUint8()),sint8:e=>e.readInt8(),sint8x2:e=>_chunkUMHCZDPAcjs.ta.call(void 0, e.readInt8(),e.readInt8()),sint8x4:e=>_chunkUMHCZDPAcjs.Da.call(void 0, e.readInt8(),e.readInt8(),e.readInt8(),e.readInt8()),unorm8:e=>e.readUint8()/255,unorm8x2:e=>_chunkUMHCZDPAcjs.ra.call(void 0, e.readUint8()/255,e.readUint8()/255),unorm8x4:e=>_chunkUMHCZDPAcjs.Ba.call(void 0, e.readUint8()/255,e.readUint8()/255,e.readUint8()/255,e.readUint8()/255),snorm8:e=>(e.readUint8()-128)/127,snorm8x2:e=>_chunkUMHCZDPAcjs.ra.call(void 0, (e.readUint8()-128)/127,(e.readUint8()-128)/127),snorm8x4:e=>_chunkUMHCZDPAcjs.Ba.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=>_chunkUMHCZDPAcjs.ua.call(void 0, e.readUint16(),e.readUint16()),uint16x4:e=>_chunkUMHCZDPAcjs.Ea.call(void 0, e.readUint16(),e.readUint16(),e.readUint16(),e.readUint16()),sint16:e=>e.readInt16(),sint16x2:e=>_chunkUMHCZDPAcjs.ta.call(void 0, e.readInt16(),e.readInt16()),sint16x4:e=>_chunkUMHCZDPAcjs.Da.call(void 0, e.readInt16(),e.readInt16(),e.readInt16(),e.readInt16()),unorm16:e=>e.readUint16()/65535,unorm16x2:e=>_chunkUMHCZDPAcjs.ra.call(void 0, e.readUint16()/65535,e.readUint16()/65535),unorm16x4:e=>_chunkUMHCZDPAcjs.Ba.call(void 0, e.readUint16()/65535,e.readUint16()/65535,e.readUint16()/65535,e.readUint16()/65535),snorm16:e=>(e.readUint16()-32768)/32767,snorm16x2:e=>_chunkUMHCZDPAcjs.ra.call(void 0, Se.snorm16(e),Se.snorm16(e)),snorm16x4:e=>_chunkUMHCZDPAcjs.Ba.call(void 0, Se.snorm16(e),Se.snorm16(e),Se.snorm16(e),Se.snorm16(e)),float16(e){return e.readFloat16()},float16x2:e=>_chunkUMHCZDPAcjs.ra.call(void 0, e.readFloat16(),e.readFloat16()),float16x4:e=>_chunkUMHCZDPAcjs.Ba.call(void 0, e.readFloat16(),e.readFloat16(),e.readFloat16(),e.readFloat16()),float32:e=>e.readFloat32(),float32x2:e=>_chunkUMHCZDPAcjs.ra.call(void 0, e.readFloat32(),e.readFloat32()),float32x3:e=>_chunkUMHCZDPAcjs.wa.call(void 0, e.readFloat32(),e.readFloat32(),e.readFloat32()),float32x4:e=>_chunkUMHCZDPAcjs.Ba.call(void 0, e.readFloat32(),e.readFloat32(),e.readFloat32(),e.readFloat32()),uint32:e=>e.readUint32(),uint32x2:e=>_chunkUMHCZDPAcjs.ua.call(void 0, e.readUint32(),e.readUint32()),uint32x3:e=>_chunkUMHCZDPAcjs.za.call(void 0, e.readUint32(),e.readUint32(),e.readUint32()),uint32x4:e=>_chunkUMHCZDPAcjs.Ea.call(void 0, e.readUint32(),e.readUint32(),e.readUint32(),e.readUint32()),sint32:e=>e.readInt32(),sint32x2:e=>_chunkUMHCZDPAcjs.ta.call(void 0, e.readInt32(),e.readInt32()),sint32x3:e=>_chunkUMHCZDPAcjs.ya.call(void 0, e.readInt32(),e.readInt32(),e.readInt32()),sint32x4:e=>_chunkUMHCZDPAcjs.Da.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 _chunkUMHCZDPAcjs.Ba.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 _chunkUMHCZDPAcjs.Ba.call(void 0, n,r,t,a)},unstruct(e,t){let r={};for(let[n,a]of Object.entries(t.propTypes))r[n]=j(e,a);return r},disarray(e,t){let r=_chunkRC26P3MPcjs.S.call(void 0, t),n=[];for(let a=0;a<t.elementCount;a++)A(e,r),n.push(j(e,t.elementType));return A(e,r),n},"loose-decorated"(e,t){A(e,_chunkRC26P3MPcjs.T.call(void 0, t));let r=e.currentByteOffset,n=j(e,t.inner);return e.seekTo(r+_chunkRC26P3MPcjs.V.call(void 0, t)),n}};function j(e,t){let r=Se[t.type];if(!r)throw new Error(`Cannot read data of type '${t.type}'.`);return r(e,t)}function Qn(e,t){let r=_chunkRC26P3MPcjs.V.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(u,f,m,g){if(f!=null){if(_chunkUMHCZDPAcjs.O.call(void 0, u)||_chunkUMHCZDPAcjs._.call(void 0, u)){let y=It(u);for(let[x,b]of Object.entries(y)){let I=u.propTypes[x];if(!I)continue;let P=f[x];P!==void 0&&i(I,P,m+b.offset,_nullishCoalesce(b.padding, () => (g)))}return}if(_chunkUMHCZDPAcjs.N.call(void 0, u)||_chunkUMHCZDPAcjs.Z.call(void 0, u)){let y=u,x=_chunkRC26P3MPcjs.a.call(void 0, _chunkRC26P3MPcjs.V.call(void 0, y.elementType),_chunkRC26P3MPcjs.S.call(void 0, y.elementType));if(!Array.isArray(f))throw new Error("Partial value for array must be an array");let b=_nullishCoalesce(f, () => ([]));b.sort((I,P)=>I.idx-P.idx);for(let{idx:I,value:P}of b)i(y.elementType,P,m+I*x,x-_chunkRC26P3MPcjs.V.call(void 0, y.elementType))}else{let y=_chunkRC26P3MPcjs.V.call(void 0, u);a.seekTo(m),me(a,u,f),o.push({start:m,end:m+y,padding:g})}}}if(i(e,t,0),o.length===0)return[];let s=[],p=o[0];for(let u=1;u<o.length;u++){let f=o[u];if(!f||!p)throw new Error("Internal error: missing segment");f.start===p.end+(_nullishCoalesce(p.padding, () => (0)))?(p.end=f.end,p.padding=f.padding):(s.push({data:new Uint8Array(n,p.start,p.end-p.start)}),p=f)}if(!p)throw new Error("Internal error: missing segment");return s.push({data:new Uint8Array(n,p.start,p.end-p.start)}),s}function ve(e){return!!_optionalChain([e, 'optionalAccess', _44 => _44.usableAsStorage])}var Xe=class e extends Error{constructor(t){super(`Resource '${_nullishCoalesce(_chunkUMHCZDPAcjs.i.call(void 0, t), () => ("<unnamed>"))}' cannot be bound as 'storage'. Use .$usage('storage') to allow it.`),Object.setPrototypeOf(this,e.prototype)}};function Bt(e){return!!e.usableAsUniform}var Jn={uniform:"uniform",mutable:"storage, read_write",readonly:"storage, read"},Ze= (_class4 =class{constructor(t,r){;_class4.prototype.__init4.call(this);this.usage=t;this.buffer=r;this[_chunkUMHCZDPAcjs.a]={dataType:r.dataType},this[_chunkUMHCZDPAcjs.d]=r}__init4() {this.resourceType="buffer-usage"}$name(t){return this.buffer.$name(t),this}"~resolve"(t){let r=t.names.makeUnique(_chunkUMHCZDPAcjs.i.call(void 0, this)),{group:n,binding:a}=t.allocateFixedEntry(this.usage==="uniform"?{uniform:this.buffer.dataType}:{storage:this.buffer.dataType,access:this.usage},this.buffer),o=Jn[this.usage];return t.addDeclaration(`@group(${n}) @binding(${a}) var<${o}> ${r}: ${t.resolve(this.buffer.dataType)};`),r}toString(){return`${this.usage}:${_nullishCoalesce(_chunkUMHCZDPAcjs.i.call(void 0, this), () => ("<unnamed>"))}`}[_chunkUMHCZDPAcjs.c](){return new Proxy({"~resolve":t=>t.resolve(this),toString:()=>`.value:${_nullishCoalesce(_chunkUMHCZDPAcjs.i.call(void 0, this), () => ("<unnamed>"))}`,[_chunkUMHCZDPAcjs.b]:this.buffer.dataType},H)}get value(){if(!_chunkUMHCZDPAcjs.y.call(void 0, ))throw new Error("Cannot access buffer's value directly in JS.");return this[_chunkUMHCZDPAcjs.c]()}get $(){return this.value}}, _class4),et= (_class5 =class{constructor(t,r,n){;_class5.prototype.__init5.call(this);this.usage=t;this.dataType=r;this._membership=n;this[_chunkUMHCZDPAcjs.a]={dataType:r},_chunkUMHCZDPAcjs.j.call(void 0, this,n.key)}__init5() {this.resourceType="buffer-usage"}"~resolve"(t){let r=t.names.makeUnique(_chunkUMHCZDPAcjs.i.call(void 0, this)),n=t.allocateLayoutEntry(this._membership.layout),a=Jn[this.usage];return t.addDeclaration(`@group(${n}) @binding(${this._membership.idx}) var<${a}> ${r}: ${t.resolve(this.dataType)};`),r}toString(){return`${this.usage}:${_nullishCoalesce(_chunkUMHCZDPAcjs.i.call(void 0, this), () => ("<unnamed>"))}`}[_chunkUMHCZDPAcjs.c](){return new Proxy({"~resolve":t=>t.resolve(this),toString:()=>`.value:${_nullishCoalesce(_chunkUMHCZDPAcjs.i.call(void 0, this), () => ("<unnamed>"))}`,[_chunkUMHCZDPAcjs.b]:this.dataType},H)}get value(){if(!_chunkUMHCZDPAcjs.y.call(void 0, ))throw new Error("Cannot access buffer's value directly in JS.");return this[_chunkUMHCZDPAcjs.c]()}get $(){return this.value}}, _class5),Kn=new WeakMap;function Ir(e){if(!ve(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=Kn.get(e);return t||(t=new Ze("mutable",e),Kn.set(e,t)),t}var Hn=new WeakMap;function Ur(e){if(!ve(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=Hn.get(e);return t||(t=new Ze("readonly",e),Hn.set(e,t)),t}var Yn=new WeakMap;function Fr(e){if(!Bt(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=Yn.get(e);return t||(t=new Ze("uniform",e),Yn.set(e,t)),t}var oo={uniform:Fr,mutable:Ir,readonly:Ur};function tt(e,t,r){return _chunkUMHCZDPAcjs.M.call(void 0, t)?new At(e,t,r):new At(e,t,r,["storage","uniform"])}function de(e){return e.resourceType==="buffer"}function io(e){return!!e.usableAsVertex}var Xn=_typedbinary.getSystemEndianness.call(void 0, ),At= (_class6 =class{constructor(t,r,n,a){;_class6.prototype.__init6.call(this);_class6.prototype.__init7.call(this);_class6.prototype.__init8.call(this);_class6.prototype.__init9.call(this);_class6.prototype.__init10.call(this);_class6.prototype.__init11.call(this);_class6.prototype.__init12.call(this);_class6.prototype.__init13.call(this);_class6.prototype.__init14.call(this);this._group=t;this.dataType=r;this.initialOrBuffer=n;this._disallowedUsages=a;Ye(n)?(this._ownBuffer=!1,this._buffer=n):(this._ownBuffer=!0,this.initial=n)}__init6() {this[_chunkUMHCZDPAcjs.a]=!0}__init7() {this.resourceType="buffer"}__init8() {this.flags=GPUBufferUsage.COPY_DST|GPUBufferUsage.COPY_SRC}__init9() {this._buffer=null}__init10() {this._destroyed=!1}__init11() {this.usableAsUniform=!1}__init12() {this.usableAsStorage=!1}__init13() {this.usableAsVertex=!1}__init14() {this.usableAsIndex=!1}get buffer(){let t=this._group.device;if(this._destroyed)throw new Error("This buffer has been destroyed");if(!this._buffer&&(this._buffer=t.createBuffer({size:_chunkRC26P3MPcjs.V.call(void 0, this.dataType),usage:this.flags,mappedAtCreation:!!this.initial,label:_nullishCoalesce(_chunkUMHCZDPAcjs.i.call(void 0, this), () => ("<unnamed>"))}),this.initial)){let r=new (0, _typedbinary.BufferWriter)(this._buffer.getMappedRange());me(r,this.dataType,this.initial),this._buffer.unmap()}return this._buffer}get destroyed(){return this._destroyed}$name(t){return _chunkUMHCZDPAcjs.j.call(void 0, this,t),this