typegpu 0.8.0 → 0.8.2

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.
Files changed (52) hide show
  1. package/{chunk-6WF2EZIT.js → chunk-6U5HPHCJ.js} +2 -2
  2. package/{chunk-B254XDWG.js → chunk-CGQB3SER.js} +2 -2
  3. package/{chunk-XEUNEHAZ.js → chunk-CRZWTZM2.js} +6 -6
  4. package/chunk-CRZWTZM2.js.map +1 -0
  5. package/chunk-ECR2EGZX.js +7 -0
  6. package/chunk-ECR2EGZX.js.map +1 -0
  7. package/chunk-PWBIFP67.js +2 -0
  8. package/chunk-PWBIFP67.js.map +1 -0
  9. package/common/index.d.ts +1 -1
  10. package/common/index.js +1 -1
  11. package/data/index.d.ts +3 -3
  12. package/data/index.js +1 -1
  13. package/index.d.ts +2 -2
  14. package/index.js +40 -40
  15. package/index.js.map +1 -1
  16. package/{matrix-C6mMH7pB.d.ts → matrix-DIfOiRyz.d.ts} +1 -1
  17. package/package.json +5 -13
  18. package/std/index.d.ts +2 -2
  19. package/std/index.js +1 -1
  20. package/std/index.js.map +1 -1
  21. package/{tgpuConstant-DzGgwe0I.d.ts → tgpuConstant-BTQFNlQH.d.ts} +13 -8
  22. package/chunk-A5APHF7K.cjs +0 -10
  23. package/chunk-A5APHF7K.cjs.map +0 -1
  24. package/chunk-LL6NPRFE.cjs +0 -7
  25. package/chunk-LL6NPRFE.cjs.map +0 -1
  26. package/chunk-M2P3FJT7.cjs +0 -2
  27. package/chunk-M2P3FJT7.cjs.map +0 -1
  28. package/chunk-PO6SIMTQ.js +0 -2
  29. package/chunk-PO6SIMTQ.js.map +0 -1
  30. package/chunk-T2GBOTUH.js +0 -7
  31. package/chunk-T2GBOTUH.js.map +0 -1
  32. package/chunk-TRAG63HY.cjs +0 -3
  33. package/chunk-TRAG63HY.cjs.map +0 -1
  34. package/chunk-U3CXOCRG.cjs +0 -2
  35. package/chunk-U3CXOCRG.cjs.map +0 -1
  36. package/chunk-XEUNEHAZ.js.map +0 -1
  37. package/common/index.cjs +0 -7
  38. package/common/index.cjs.map +0 -1
  39. package/common/index.d.cts +0 -24
  40. package/data/index.cjs +0 -2
  41. package/data/index.cjs.map +0 -1
  42. package/data/index.d.cts +0 -402
  43. package/index.cjs +0 -192
  44. package/index.cjs.map +0 -1
  45. package/index.d.cts +0 -369
  46. package/matrix-Cn2jQILV.d.cts +0 -122
  47. package/std/index.cjs +0 -2
  48. package/std/index.cjs.map +0 -1
  49. package/std/index.d.cts +0 -639
  50. package/tgpuConstant-DzGgwe0I.d.cts +0 -5196
  51. /package/{chunk-6WF2EZIT.js.map → chunk-6U5HPHCJ.js.map} +0 -0
  52. /package/{chunk-B254XDWG.js.map → chunk-CGQB3SER.js.map} +0 -0
@@ -1,7 +0,0 @@
1
- "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 _chunkA5APHF7Kcjs = require('./chunk-A5APHF7K.cjs');var Ze=class{};function Ct(e){let t=_chunkA5APHF7Kcjs.Ma.call(void 0, (...r)=>{let a=[];for(let s of r)if(typeof s=="number")a.push(s);else for(let c=0;c<s.length;++c)a.push(s[c]);if(a.length!==0&&a.length!==e.columns*e.rows)throw new Error(`'${e.type}' constructor called with invalid number of arguments.`);for(let s=a.length;s<e.columns*e.rows;++s)a.push(0);return new e.MatImpl(...a)},(...r)=>_chunkA5APHF7Kcjs.aa.call(void 0, _chunkA5APHF7Kcjs.Ea`${e.type}(${r})`,n),e.type),n=Object.assign(t,{type:e.type,identity:ln[e.columns],translation:e.columns===4?mn:void 0,scaling:e.columns===4?pn:void 0,rotationX:e.columns===4?yn:void 0,rotationY:e.columns===4?xn:void 0,rotationZ:e.columns===4?Tn:void 0});return n}var It= (_class =class extends Ze{__init() {this[_chunkA5APHF7Kcjs.a]=!0}__init2() {this.length=4}constructor(...t){super();_class.prototype.__init.call(this);_class.prototype.__init2.call(this);,this.columns=[this.makeColumn(t[0],t[1]),this.makeColumn(t[2],t[3])]}get 0(){return this.columns[0].x}get 1(){return this.columns[0].y}get 2(){return this.columns[1].x}get 3(){return this.columns[1].y}set 0(t){this.columns[0].x=t}set 1(t){this.columns[0].y=t}set 2(t){this.columns[1].x=t}set 3(t){this.columns[1].y=t}*[Symbol.iterator](){yield this[0],yield this[1],yield this[2],yield this[3]}[_chunkA5APHF7Kcjs.f](){return _chunkA5APHF7Kcjs.aa.call(void 0, `${this.kind}(${Array.from({length:this.length}).map((t,n)=>this[n]).join(", ")})`,ce)}toString(){return this[_chunkA5APHF7Kcjs.f]().value}}, _class),At= (_class2 =class extends It{constructor(...args) { super(...args); _class2.prototype.__init3.call(this); }__init3() {this.kind="mat2x2f"}makeColumn(t,n){return _chunkA5APHF7Kcjs.Ya.call(void 0, t,n)}}, _class2),zt= (_class3 =class extends Ze{__init4() {this[_chunkA5APHF7Kcjs.a]=!0}__init5() {this.length=12}constructor(...t){super();_class3.prototype.__init4.call(this);_class3.prototype.__init5.call(this);,this.columns=[this.makeColumn(t[0],t[1],t[2]),this.makeColumn(t[3],t[4],t[5]),this.makeColumn(t[6],t[7],t[8])]}get 0(){return this.columns[0].x}get 1(){return this.columns[0].y}get 2(){return this.columns[0].z}get 3(){return 0}get 4(){return this.columns[1].x}get 5(){return this.columns[1].y}get 6(){return this.columns[1].z}get 7(){return 0}get 8(){return this.columns[2].x}get 9(){return this.columns[2].y}get 10(){return this.columns[2].z}get 11(){return 0}set 0(t){this.columns[0].x=t}set 1(t){this.columns[0].y=t}set 2(t){this.columns[0].z=t}set 3(t){}set 4(t){this.columns[1].x=t}set 5(t){this.columns[1].y=t}set 6(t){this.columns[1].z=t}set 7(t){}set 8(t){this.columns[2].x=t}set 9(t){this.columns[2].y=t}set 10(t){this.columns[2].z=t}set 11(t){}*[Symbol.iterator](){for(let t=0;t<12;t++)yield this[t]}[_chunkA5APHF7Kcjs.f](){return _chunkA5APHF7Kcjs.aa.call(void 0, `${this.kind}(${this[0]}, ${this[1]}, ${this[2]}, ${this[4]}, ${this[5]}, ${this[6]}, ${this[8]}, ${this[9]}, ${this[10]})`,ie)}toString(){return this[_chunkA5APHF7Kcjs.f]().value}}, _class3),$t= (_class4 =class extends zt{constructor(...args2) { super(...args2); _class4.prototype.__init6.call(this); }__init6() {this.kind="mat3x3f"}makeColumn(t,n,r){return _chunkA5APHF7Kcjs.bb.call(void 0, t,n,r)}}, _class4),Ft= (_class5 =class extends Ze{__init7() {this[_chunkA5APHF7Kcjs.a]=!0}constructor(...t){super();_class5.prototype.__init7.call(this);_class5.prototype.__init8.call(this);,this.columns=[this.makeColumn(t[0],t[1],t[2],t[3]),this.makeColumn(t[4],t[5],t[6],t[7]),this.makeColumn(t[8],t[9],t[10],t[11]),this.makeColumn(t[12],t[13],t[14],t[15])]}__init8() {this.length=16}get 0(){return this.columns[0].x}get 1(){return this.columns[0].y}get 2(){return this.columns[0].z}get 3(){return this.columns[0].w}get 4(){return this.columns[1].x}get 5(){return this.columns[1].y}get 6(){return this.columns[1].z}get 7(){return this.columns[1].w}get 8(){return this.columns[2].x}get 9(){return this.columns[2].y}get 10(){return this.columns[2].z}get 11(){return this.columns[2].w}get 12(){return this.columns[3].x}get 13(){return this.columns[3].y}get 14(){return this.columns[3].z}get 15(){return this.columns[3].w}set 0(t){this.columns[0].x=t}set 1(t){this.columns[0].y=t}set 2(t){this.columns[0].z=t}set 3(t){this.columns[0].w=t}set 4(t){this.columns[1].x=t}set 5(t){this.columns[1].y=t}set 6(t){this.columns[1].z=t}set 7(t){this.columns[1].w=t}set 8(t){this.columns[2].x=t}set 9(t){this.columns[2].y=t}set 10(t){this.columns[2].z=t}set 11(t){this.columns[2].w=t}set 12(t){this.columns[3].x=t}set 13(t){this.columns[3].y=t}set 14(t){this.columns[3].z=t}set 15(t){this.columns[3].w=t}*[Symbol.iterator](){for(let t=0;t<16;t++)yield this[t]}[_chunkA5APHF7Kcjs.f](){return _chunkA5APHF7Kcjs.aa.call(void 0, `${this.kind}(${Array.from({length:this.length}).map((t,n)=>this[n]).join(", ")})`,A)}toString(){return this[_chunkA5APHF7Kcjs.f]().value}}, _class5),Vt= (_class6 =class extends Ft{constructor(...args3) { super(...args3); _class6.prototype.__init9.call(this); }__init9() {this.kind="mat4x4f"}makeColumn(t,n,r,a){return _chunkA5APHF7Kcjs.gb.call(void 0, t,n,r,a)}}, _class6),on= exports.b =_chunkA5APHF7Kcjs.Ma.call(void 0, ()=>ce(1,0,0,1),()=>_chunkA5APHF7Kcjs.aa.call(void 0, "mat2x2f(1, 0, 0, 1)",ce),"identity2"),un= exports.c =_chunkA5APHF7Kcjs.Ma.call(void 0, ()=>ie(1,0,0,0,1,0,0,0,1),()=>_chunkA5APHF7Kcjs.aa.call(void 0, "mat3x3f(1, 0, 0, 0, 1, 0, 0, 0, 1)",ie),"identity3"),cn= exports.d =_chunkA5APHF7Kcjs.Ma.call(void 0, ()=>A(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),()=>_chunkA5APHF7Kcjs.aa.call(void 0, "mat4x4f(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)",A),"identity4"),ln={2:on,3:un,4:cn},mn= exports.e =_chunkA5APHF7Kcjs.Ma.call(void 0, e=>A(1,0,0,0,0,1,0,0,0,0,1,0,e.x,e.y,e.z,1),e=>_chunkA5APHF7Kcjs.aa.call(void 0, _chunkA5APHF7Kcjs.Ea`mat4x4f(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, ${e}.x, ${e}.y, ${e}.z, 1)`,A),"translation4"),pn= exports.f =_chunkA5APHF7Kcjs.Ma.call(void 0, e=>A(e.x,0,0,0,0,e.y,0,0,0,0,e.z,0,0,0,0,1),e=>_chunkA5APHF7Kcjs.aa.call(void 0, _chunkA5APHF7Kcjs.Ea`mat4x4f(${e}.x, 0, 0, 0, 0, ${e}.y, 0, 0, 0, 0, ${e}.z, 0, 0, 0, 0, 1)`,A),"scaling4"),yn= exports.g =_chunkA5APHF7Kcjs.Ma.call(void 0, e=>A(1,0,0,0,0,Math.cos(e),Math.sin(e),0,0,-Math.sin(e),Math.cos(e),0,0,0,0,1),e=>_chunkA5APHF7Kcjs.aa.call(void 0, _chunkA5APHF7Kcjs.Ea`mat4x4f(1, 0, 0, 0, 0, cos(${e}), sin(${e}), 0, 0, -sin(${e}), cos(${e}), 0, 0, 0, 0, 1)`,A),"rotationX4"),xn= exports.h =_chunkA5APHF7Kcjs.Ma.call(void 0, e=>A(Math.cos(e),0,-Math.sin(e),0,0,1,0,0,Math.sin(e),0,Math.cos(e),0,0,0,0,1),e=>_chunkA5APHF7Kcjs.aa.call(void 0, _chunkA5APHF7Kcjs.Ea`mat4x4f(cos(${e}), 0, -sin(${e}), 0, 0, 1, 0, 0, sin(${e}), 0, cos(${e}), 0, 0, 0, 0, 1)`,A),"rotationY4"),Tn= exports.i =_chunkA5APHF7Kcjs.Ma.call(void 0, e=>A(Math.cos(e),Math.sin(e),0,0,-Math.sin(e),Math.cos(e),0,0,0,0,1,0,0,0,0,1),e=>_chunkA5APHF7Kcjs.aa.call(void 0, _chunkA5APHF7Kcjs.Ea`mat4x4f(cos(${e}), sin(${e}), 0, 0, -sin(${e}), cos(${e}), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)`,A),"rotationZ4"),ce= exports.j =Ct({type:"mat2x2f",rows:2,columns:2,MatImpl:At}),ie= exports.k =Ct({type:"mat3x3f",rows:3,columns:3,MatImpl:$t}),A= exports.l =Ct({type:"mat4x4f",rows:4,columns:4,MatImpl:Vt});function Gr(e){return e.kind==="mat3x3f"?[e[0],e[1],e[2],e[4],e[5],e[6],e[8],e[9],e[10]]:Array.from({length:e.length}).map((t,n)=>e[n])}function Kr(){return{[_chunkA5APHF7Kcjs.a]:!0,type:"sampler",[_chunkA5APHF7Kcjs.g]:void 0}}function jr(){return{[_chunkA5APHF7Kcjs.a]:!0,type:"sampler_comparison",[_chunkA5APHF7Kcjs.g]:void 0}}function qr(e){return!!e[_chunkA5APHF7Kcjs.a]&&e.type==="sampler"}function Zr(e){return!!e[_chunkA5APHF7Kcjs.a]&&e.type==="sampler_comparison"}function Yr(e){if("multisampled"in e){if(e.multisampled){if(e.dimension==="2d")return gn(e.sampleType);throw new Error(`Multisampled textures only support '2d' dimension, got '${e.dimension}'`)}switch(e.dimension){case"1d":return dn(e.sampleType);case"2d":return fn(e.sampleType);case"2d-array":return hn(e.sampleType);case"3d":return wn(e.sampleType);case"cube":return vn(e.sampleType);case"cube-array":return bn(e.sampleType);default:throw new Error(`Unsupported texture dimension: '${e.dimension}'`)}}if(!("access"in e))throw new Error("Descriptor is neither a sampled nor a storage texture");switch(e.dimension){case"1d":return Mn(e.format,e.access);case"2d":return Sn(e.format,e.access);case"2d-array":return In(e.format,e.access);case"3d":return An(e.format,e.access);default:throw new Error(`Unsupported storage texture dimension: '${e.dimension}'`)}}function L(e,t){let r=e.startsWith("texture_depth")?["depth","float","unfilterable-float"]:t.sampleType.type==="i32"?["sint"]:t.sampleType.type==="u32"?["uint"]:["float","unfilterable-float"];return{[_chunkA5APHF7Kcjs.a]:!0,[_chunkA5APHF7Kcjs.g]:void 0,type:e,bindingSampleType:r,...t}}function ct(e,t){return{[_chunkA5APHF7Kcjs.a]:!0,[_chunkA5APHF7Kcjs.g]:void 0,type:e,...t}}var Ht=new Map,it= exports.x ={"write-only":"write","read-only":"read","read-write":"read_write"};function z(e,t){let n=Ht.get(e);return n||(n=t(),Ht.set(e,n)),n}function dn(e){let t=e||_chunkA5APHF7Kcjs.Va,n=`texture_1d<${t.type}>`;return z(n,()=>L("texture_1d",{dimension:"1d",sampleType:t,multisampled:!1}))}function fn(e){let t=e||_chunkA5APHF7Kcjs.Va,n=`texture_2d<${t.type}>`;return z(n,()=>L("texture_2d",{dimension:"2d",sampleType:t,multisampled:!1}))}function gn(e){let t=e||_chunkA5APHF7Kcjs.Va,n=`texture_multisampled_2d<${t.type}>`;return z(n,()=>L("texture_multisampled_2d",{dimension:"2d",sampleType:t,multisampled:!0}))}function hn(e){let t=e||_chunkA5APHF7Kcjs.Va,n=`texture_2d_array<${t.type}>`;return z(n,()=>L("texture_2d_array",{dimension:"2d-array",sampleType:t,multisampled:!1}))}function vn(e){let t=e||_chunkA5APHF7Kcjs.Va,n=`texture_cube<${t.type}>`;return z(n,()=>L("texture_cube",{dimension:"cube",sampleType:t,multisampled:!1}))}function bn(e){let t=e||_chunkA5APHF7Kcjs.Va,n=`texture_cube_array<${t.type}>`;return z(n,()=>L("texture_cube_array",{dimension:"cube-array",sampleType:t,multisampled:!1}))}function wn(e){let t=e||_chunkA5APHF7Kcjs.Va,n=`texture_3d<${t.type}>`;return z(n,()=>L("texture_3d",{dimension:"3d",sampleType:t,multisampled:!1}))}function Mn(e,t){let n=t||"write-only",r=`texture_storage_1d<${e}, ${it[n]}>`;return z(r,()=>ct("texture_storage_1d",{dimension:"1d",format:e,access:n}))}function Sn(e,t){let n=t||"write-only",r=`texture_storage_2d<${e}, ${it[n]}>`;return z(r,()=>ct("texture_storage_2d",{dimension:"2d",format:e,access:n}))}function In(e,t){let n=t||"write-only",r=`texture_storage_2d_array<${e}, ${it[n]}>`;return z(r,()=>ct("texture_storage_2d_array",{dimension:"2d-array",format:e,access:n}))}function An(e,t){let n=t||"write-only",r=`texture_storage_3d<${e}, ${it[n]}>`;return z(r,()=>ct("texture_storage_3d",{dimension:"3d",format:e,access:n}))}function Jr(){return z("texture_depth_2d",()=>L("texture_depth_2d",{dimension:"2d",sampleType:_chunkA5APHF7Kcjs.Va,multisampled:!1}))}function es(){return z("texture_depth_multisampled_2d",()=>L("texture_depth_multisampled_2d",{dimension:"2d",sampleType:_chunkA5APHF7Kcjs.Va,multisampled:!0}))}function ts(){return z("texture_depth_2d_array",()=>L("texture_depth_2d_array",{dimension:"2d-array",sampleType:_chunkA5APHF7Kcjs.Va,multisampled:!1}))}function ns(){return z("texture_depth_cube",()=>L("texture_depth_cube",{dimension:"cube",sampleType:_chunkA5APHF7Kcjs.Va,multisampled:!1}))}function rs(){return z("texture_depth_cube_array",()=>L("texture_depth_cube_array",{dimension:"cube-array",sampleType:_chunkA5APHF7Kcjs.Va,multisampled:!1}))}function ss(){return z("texture_external",()=>({[_chunkA5APHF7Kcjs.a]:!0,[_chunkA5APHF7Kcjs.g]:void 0,type:"texture_external",dimension:"2d"}))}function as(e){return!!e[_chunkA5APHF7Kcjs.a]&&typeof e.multisampled=="boolean"}function os(e){return!!e[_chunkA5APHF7Kcjs.a]&&typeof e.format=="string"&&typeof e.access=="string"}function is(e){return new Pt(e)}var Pt= (_class7 =class{constructor(t){;_class7.prototype.__init10.call(this);_class7.prototype.__init11.call(this);this.inner=t}__init10() {this[_chunkA5APHF7Kcjs.a]=!0}__init11() {this.type="atomic"}}, _class7);var le=(e,t,n)=>{if(e===t)return 0;let r=y((n-e)/(t-e),0,1);return r*r*(3-2*r)},y=(e,t,n)=>Math.min(Math.max(t,e),n),ge=(e,t)=>t===0?e:Math.trunc(e/t);function X(e){let t=new DataView(new ArrayBuffer(4));return t.setUint32(0,e,!0),t.getFloat32(0,!0)}function Y(e){let t=new DataView(new ArrayBuffer(4));return t.setUint32(0,e,!0),t.getInt32(0,!0)}var G=_chunkA5APHF7Kcjs.ab[_chunkA5APHF7Kcjs.a].jsImpl,K=_chunkA5APHF7Kcjs.Ya[_chunkA5APHF7Kcjs.a].jsImpl,pe=_chunkA5APHF7Kcjs.Za[_chunkA5APHF7Kcjs.a].jsImpl,We=_chunkA5APHF7Kcjs._a[_chunkA5APHF7Kcjs.a].jsImpl,Ye=_chunkA5APHF7Kcjs.$a[_chunkA5APHF7Kcjs.a].jsImpl,N=_chunkA5APHF7Kcjs.fb[_chunkA5APHF7Kcjs.a].jsImpl,W=_chunkA5APHF7Kcjs.bb[_chunkA5APHF7Kcjs.a].jsImpl,J=_chunkA5APHF7Kcjs.cb[_chunkA5APHF7Kcjs.a].jsImpl,Ue=_chunkA5APHF7Kcjs.db[_chunkA5APHF7Kcjs.a].jsImpl,Je=_chunkA5APHF7Kcjs.eb[_chunkA5APHF7Kcjs.a].jsImpl,O=_chunkA5APHF7Kcjs.kb[_chunkA5APHF7Kcjs.a].jsImpl,j=_chunkA5APHF7Kcjs.gb[_chunkA5APHF7Kcjs.a].jsImpl,ye=_chunkA5APHF7Kcjs.hb[_chunkA5APHF7Kcjs.a].jsImpl,Be=_chunkA5APHF7Kcjs.ib[_chunkA5APHF7Kcjs.a].jsImpl,et=_chunkA5APHF7Kcjs.jb[_chunkA5APHF7Kcjs.a].jsImpl,Me=e=>Math.sqrt(e.x**2+e.y**2),Se=e=>Math.sqrt(e.x**2+e.y**2+e.z**2),Ie=e=>Math.sqrt(e.x**2+e.y**2+e.z**2+e.w**2),lt=(e,t)=>e.x*t.x+e.y*t.y,mt=(e,t)=>e.x*t.x+e.y*t.y+e.z*t.z,pt=(e,t)=>e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w,h=e=>t=>K(e(t.x),e(t.y)),b=e=>t=>pe(e(t.x),e(t.y)),Ae=e=>t=>We(e(t.x),e(t.y)),He=e=>t=>Ye(e(t.x),e(t.y)),f=e=>t=>W(e(t.x),e(t.y),e(t.z)),w=e=>t=>J(e(t.x),e(t.y),e(t.z)),ze=e=>t=>Ue(e(t.x),e(t.y),e(t.z)),Qe=e=>t=>Je(e(t.x),e(t.y),e(t.z)),d=e=>t=>j(e(t.x),e(t.y),e(t.z),e(t.w)),M=e=>t=>ye(e(t.x),e(t.y),e(t.z),e(t.w)),$e=e=>t=>Be(e(t.x),e(t.y),e(t.z),e(t.w)),Xe=e=>t=>et(e(t.x),e(t.y),e(t.z),e(t.w)),Qt=e=>t=>{let n=t.columns;return ce(h(e)(n[0]),h(e)(n[1]))},Xt=e=>t=>{let n=t.columns;return ie(f(e)(n[0]),f(e)(n[1]),f(e)(n[2]))},Yt=e=>t=>{let n=t.columns;return A(d(e)(n[0]),d(e)(n[1]),d(e)(n[2]),d(e)(n[3]))},me=e=>(t,n)=>K(e(t.x,n.x),e(t.y,n.y)),he=e=>(t,n)=>pe(e(t.x,n.x),e(t.y,n.y)),Fe=e=>(t,n)=>We(e(t.x,n.x),e(t.y,n.y)),Ve=e=>(t,n)=>Ye(e(t.x,n.x),e(t.y,n.y)),ee=e=>(t,n)=>W(e(t.x,n.x),e(t.y,n.y),e(t.z,n.z)),ve=e=>(t,n)=>J(e(t.x,n.x),e(t.y,n.y),e(t.z,n.z)),Ce=e=>(t,n)=>Ue(e(t.x,n.x),e(t.y,n.y),e(t.z,n.z)),Pe=e=>(t,n)=>Je(e(t.x,n.x),e(t.y,n.y),e(t.z,n.z)),Q=e=>(t,n)=>j(e(t.x,n.x),e(t.y,n.y),e(t.z,n.z),e(t.w,n.w)),be=e=>(t,n)=>ye(e(t.x,n.x),e(t.y,n.y),e(t.z,n.z),e(t.w,n.w)),ke=e=>(t,n)=>Be(e(t.x,n.x),e(t.y,n.y),e(t.z,n.z),e(t.w,n.w)),_e=e=>(t,n)=>et(e(t.x,n.x),e(t.y,n.y),e(t.z,n.z),e(t.w,n.w)),zn=e=>(t,n)=>{let r=t.columns,a=n.columns;return ce(me(e)(r[0],a[0]),me(e)(r[1],a[1]))},$n=e=>(t,n)=>{let r=t.columns,a=n.columns;return ie(ee(e)(r[0],a[0]),ee(e)(r[1],a[1]),ee(e)(r[2],a[2]))},Fn=e=>(t,n)=>{let r=t.columns,a=n.columns;return A(Q(e)(r[0],a[0]),Q(e)(r[1],a[1]),Q(e)(r[2],a[2]),Q(e)(r[3],a[3]))},Vn=e=>(t,n,r)=>K(e(t.x,n.x,r.x),e(t.y,n.y,r.y)),Cn=e=>(t,n,r)=>pe(e(t.x,n.x,r.x),e(t.y,n.y,r.y)),Pn=e=>(t,n,r)=>W(e(t.x,n.x,r.x),e(t.y,n.y,r.y),e(t.z,n.z,r.z)),kn=e=>(t,n,r)=>J(e(t.x,n.x,r.x),e(t.y,n.y,r.y),e(t.z,n.z,r.z)),_n=e=>(t,n,r)=>j(e(t.x,n.x,r.x),e(t.y,n.y,r.y),e(t.z,n.z,r.z),e(t.w,n.w,r.w)),Wn=e=>(t,n,r)=>ye(e(t.x,n.x,r.x),e(t.y,n.y,r.y),e(t.z,n.z,r.z),e(t.w,n.w,r.w)),i= exports.U ={eq:{vec2f:(e,t)=>G(e.x===t.x,e.y===t.y),vec2h:(e,t)=>G(e.x===t.x,e.y===t.y),vec2i:(e,t)=>G(e.x===t.x,e.y===t.y),vec2u:(e,t)=>G(e.x===t.x,e.y===t.y),"vec2<bool>":(e,t)=>G(e.x===t.x,e.y===t.y),vec3f:(e,t)=>N(e.x===t.x,e.y===t.y,e.z===t.z),vec3h:(e,t)=>N(e.x===t.x,e.y===t.y,e.z===t.z),vec3i:(e,t)=>N(e.x===t.x,e.y===t.y,e.z===t.z),vec3u:(e,t)=>N(e.x===t.x,e.y===t.y,e.z===t.z),"vec3<bool>":(e,t)=>N(e.x===t.x,e.y===t.y,e.z===t.z),vec4f:(e,t)=>O(e.x===t.x,e.y===t.y,e.z===t.z,e.w===t.w),vec4h:(e,t)=>O(e.x===t.x,e.y===t.y,e.z===t.z,e.w===t.w),vec4i:(e,t)=>O(e.x===t.x,e.y===t.y,e.z===t.z,e.w===t.w),vec4u:(e,t)=>O(e.x===t.x,e.y===t.y,e.z===t.z,e.w===t.w),"vec4<bool>":(e,t)=>O(e.x===t.x,e.y===t.y,e.z===t.z,e.w===t.w)},lt:{vec2f:(e,t)=>G(e.x<t.x,e.y<t.y),vec2h:(e,t)=>G(e.x<t.x,e.y<t.y),vec2i:(e,t)=>G(e.x<t.x,e.y<t.y),vec2u:(e,t)=>G(e.x<t.x,e.y<t.y),vec3f:(e,t)=>N(e.x<t.x,e.y<t.y,e.z<t.z),vec3h:(e,t)=>N(e.x<t.x,e.y<t.y,e.z<t.z),vec3i:(e,t)=>N(e.x<t.x,e.y<t.y,e.z<t.z),vec3u:(e,t)=>N(e.x<t.x,e.y<t.y,e.z<t.z),vec4f:(e,t)=>O(e.x<t.x,e.y<t.y,e.z<t.z,e.w<t.w),vec4h:(e,t)=>O(e.x<t.x,e.y<t.y,e.z<t.z,e.w<t.w),vec4i:(e,t)=>O(e.x<t.x,e.y<t.y,e.z<t.z,e.w<t.w),vec4u:(e,t)=>O(e.x<t.x,e.y<t.y,e.z<t.z,e.w<t.w)},or:{"vec2<bool>":(e,t)=>G(e.x||t.x,e.y||t.y),"vec3<bool>":(e,t)=>N(e.x||t.x,e.y||t.y,e.z||t.z),"vec4<bool>":(e,t)=>O(e.x||t.x,e.y||t.y,e.z||t.z,e.w||t.w)},all:{"vec2<bool>":e=>e.x&&e.y,"vec3<bool>":e=>e.x&&e.y&&e.z,"vec4<bool>":e=>e.x&&e.y&&e.z&&e.w},abs:{vec2f:h(Math.abs),vec2h:b(Math.abs),vec2i:Ae(Math.abs),vec2u:He(Math.abs),vec3f:f(Math.abs),vec3h:w(Math.abs),vec3i:ze(Math.abs),vec3u:Qe(Math.abs),vec4f:d(Math.abs),vec4h:M(Math.abs),vec4i:$e(Math.abs),vec4u:Xe(Math.abs)},atan2:{vec2f:me(Math.atan2),vec2h:he(Math.atan2),vec3f:ee(Math.atan2),vec3h:ve(Math.atan2),vec4f:Q(Math.atan2),vec4h:be(Math.atan2)},acos:{vec2f:h(Math.acos),vec2h:b(Math.acos),vec2i:Ae(Math.acos),vec2u:He(Math.acos),vec3f:f(Math.acos),vec3h:w(Math.acos),vec3i:ze(Math.acos),vec3u:Qe(Math.acos),vec4f:d(Math.acos),vec4h:M(Math.acos),vec4i:$e(Math.acos),vec4u:Xe(Math.acos)},acosh:{vec2f:h(Math.acosh),vec2h:b(Math.acosh),vec3f:f(Math.acosh),vec3h:w(Math.acosh),vec4f:d(Math.acosh),vec4h:M(Math.acosh)},asin:{vec2f:h(Math.asin),vec2h:b(Math.asin),vec3f:f(Math.asin),vec3h:w(Math.asin),vec4f:d(Math.asin),vec4h:M(Math.asin)},asinh:{vec2f:h(Math.asinh),vec2h:b(Math.asinh),vec3f:f(Math.asinh),vec3h:w(Math.asinh),vec4f:d(Math.asinh),vec4h:M(Math.asinh)},atan:{vec2f:h(Math.atan),vec2h:b(Math.atan),vec3f:f(Math.atan),vec3h:w(Math.atan),vec4f:d(Math.atan),vec4h:M(Math.atan)},atanh:{vec2f:h(Math.atanh),vec2h:b(Math.atanh),vec3f:f(Math.atanh),vec3h:w(Math.atanh),vec4f:d(Math.atanh),vec4h:M(Math.atanh)},ceil:{vec2f:h(Math.ceil),vec2h:b(Math.ceil),vec3f:f(Math.ceil),vec3h:w(Math.ceil),vec4f:d(Math.ceil),vec4h:M(Math.ceil)},clamp:{vec2f:(e,t,n)=>K(y(e.x,t.x,n.x),y(e.y,t.y,n.y)),vec2h:(e,t,n)=>pe(y(e.x,t.x,n.x),y(e.y,t.y,n.y)),vec2i:(e,t,n)=>We(y(e.x,t.x,n.x),y(e.y,t.y,n.y)),vec2u:(e,t,n)=>Ye(y(e.x,t.x,n.x),y(e.y,t.y,n.y)),vec3f:(e,t,n)=>W(y(e.x,t.x,n.x),y(e.y,t.y,n.y),y(e.z,t.z,n.z)),vec3h:(e,t,n)=>J(y(e.x,t.x,n.x),y(e.y,t.y,n.y),y(e.z,t.z,n.z)),vec3i:(e,t,n)=>Ue(y(e.x,t.x,n.x),y(e.y,t.y,n.y),y(e.z,t.z,n.z)),vec3u:(e,t,n)=>Je(y(e.x,t.x,n.x),y(e.y,t.y,n.y),y(e.z,t.z,n.z)),vec4f:(e,t,n)=>j(y(e.x,t.x,n.x),y(e.y,t.y,n.y),y(e.z,t.z,n.z),y(e.w,t.w,n.w)),vec4h:(e,t,n)=>ye(y(e.x,t.x,n.x),y(e.y,t.y,n.y),y(e.z,t.z,n.z),y(e.w,t.w,n.w)),vec4i:(e,t,n)=>Be(y(e.x,t.x,n.x),y(e.y,t.y,n.y),y(e.z,t.z,n.z),y(e.w,t.w,n.w)),vec4u:(e,t,n)=>et(y(e.x,t.x,n.x),y(e.y,t.y,n.y),y(e.z,t.z,n.z),y(e.w,t.w,n.w))},length:{vec2f:Me,vec2h:Me,vec3f:Se,vec3h:Se,vec4f:Ie,vec4h:Ie},add:{vec2f:me((e,t)=>e+t),vec2h:he((e,t)=>e+t),vec2i:Fe((e,t)=>e+t),vec2u:Ve((e,t)=>e+t),vec3f:ee((e,t)=>e+t),vec3h:ve((e,t)=>e+t),vec3i:Ce((e,t)=>e+t),vec3u:Pe((e,t)=>e+t),vec4f:Q((e,t)=>e+t),vec4h:be((e,t)=>e+t),vec4i:ke((e,t)=>e+t),vec4u:_e((e,t)=>e+t),mat2x2f:zn((e,t)=>e+t),mat3x3f:$n((e,t)=>e+t),mat4x4f:Fn((e,t)=>e+t)},smoothstep:{vec2f:Vn(le),vec2h:Cn(le),vec3f:Pn(le),vec3h:kn(le),vec4f:_n(le),vec4h:Wn(le)},addMixed:{vec2f:(e,t)=>h(n=>n+t)(e),vec2h:(e,t)=>b(n=>n+t)(e),vec2i:(e,t)=>Ae(n=>n+t)(e),vec2u:(e,t)=>He(n=>n+t)(e),vec3f:(e,t)=>f(n=>n+t)(e),vec3h:(e,t)=>w(n=>n+t)(e),vec3i:(e,t)=>ze(n=>n+t)(e),vec3u:(e,t)=>Qe(n=>n+t)(e),vec4f:(e,t)=>d(n=>n+t)(e),vec4h:(e,t)=>M(n=>n+t)(e),vec4i:(e,t)=>$e(n=>n+t)(e),vec4u:(e,t)=>Xe(n=>n+t)(e),mat2x2f:(e,t)=>Qt(n=>n+t)(e),mat3x3f:(e,t)=>Xt(n=>n+t)(e),mat4x4f:(e,t)=>Yt(n=>n+t)(e)},mulSxV:{vec2f:(e,t)=>h(n=>e*n)(t),vec2h:(e,t)=>b(n=>e*n)(t),vec2i:(e,t)=>Ae(n=>e*n)(t),vec2u:(e,t)=>He(n=>e*n)(t),vec3f:(e,t)=>f(n=>e*n)(t),vec3h:(e,t)=>w(n=>e*n)(t),vec3i:(e,t)=>ze(n=>e*n)(t),vec3u:(e,t)=>Qe(n=>e*n)(t),vec4f:(e,t)=>d(n=>e*n)(t),vec4h:(e,t)=>M(n=>e*n)(t),vec4i:(e,t)=>$e(n=>e*n)(t),vec4u:(e,t)=>Xe(n=>e*n)(t),mat2x2f:(e,t)=>Qt(n=>e*n)(t),mat3x3f:(e,t)=>Xt(n=>e*n)(t),mat4x4f:(e,t)=>Yt(n=>e*n)(t)},mulVxV:{vec2f:me((e,t)=>e*t),vec2h:he((e,t)=>e*t),vec2i:Fe((e,t)=>e*t),vec2u:Ve((e,t)=>e*t),vec3f:ee((e,t)=>e*t),vec3h:ve((e,t)=>e*t),vec3i:Ce((e,t)=>e*t),vec3u:Pe((e,t)=>e*t),vec4f:Q((e,t)=>e*t),vec4h:be((e,t)=>e*t),vec4i:ke((e,t)=>e*t),vec4u:_e((e,t)=>e*t),mat2x2f:(e,t)=>{let n=e.columns,r=t.columns;return ce(n[0].x*r[0].x+n[1].x*r[0].y,n[0].y*r[0].x+n[1].y*r[0].y,n[0].x*r[1].x+n[1].x*r[1].y,n[0].y*r[1].x+n[1].y*r[1].y)},mat3x3f:(e,t)=>{let n=e.columns,r=t.columns;return ie(n[0].x*r[0].x+n[1].x*r[0].y+n[2].x*r[0].z,n[0].y*r[0].x+n[1].y*r[0].y+n[2].y*r[0].z,n[0].z*r[0].x+n[1].z*r[0].y+n[2].z*r[0].z,n[0].x*r[1].x+n[1].x*r[1].y+n[2].x*r[1].z,n[0].y*r[1].x+n[1].y*r[1].y+n[2].y*r[1].z,n[0].z*r[1].x+n[1].z*r[1].y+n[2].z*r[1].z,n[0].x*r[2].x+n[1].x*r[2].y+n[2].x*r[2].z,n[0].y*r[2].x+n[1].y*r[2].y+n[2].y*r[2].z,n[0].z*r[2].x+n[1].z*r[2].y+n[2].z*r[2].z)},mat4x4f:(e,t)=>{let n=e.columns,r=t.columns;return A(n[0].x*r[0].x+n[1].x*r[0].y+n[2].x*r[0].z+n[3].x*r[0].w,n[0].y*r[0].x+n[1].y*r[0].y+n[2].y*r[0].z+n[3].y*r[0].w,n[0].z*r[0].x+n[1].z*r[0].y+n[2].z*r[0].z+n[3].z*r[0].w,n[0].w*r[0].x+n[1].w*r[0].y+n[2].w*r[0].z+n[3].w*r[0].w,n[0].x*r[1].x+n[1].x*r[1].y+n[2].x*r[1].z+n[3].x*r[1].w,n[0].y*r[1].x+n[1].y*r[1].y+n[2].y*r[1].z+n[3].y*r[1].w,n[0].z*r[1].x+n[1].z*r[1].y+n[2].z*r[1].z+n[3].z*r[1].w,n[0].w*r[1].x+n[1].w*r[1].y+n[2].w*r[1].z+n[3].w*r[1].w,n[0].x*r[2].x+n[1].x*r[2].y+n[2].x*r[2].z+n[3].x*r[2].w,n[0].y*r[2].x+n[1].y*r[2].y+n[2].y*r[2].z+n[3].y*r[2].w,n[0].z*r[2].x+n[1].z*r[2].y+n[2].z*r[2].z+n[3].z*r[2].w,n[0].w*r[2].x+n[1].w*r[2].y+n[2].w*r[2].z+n[3].w*r[2].w,n[0].x*r[3].x+n[1].x*r[3].y+n[2].x*r[3].z+n[3].x*r[3].w,n[0].y*r[3].x+n[1].y*r[3].y+n[2].y*r[3].z+n[3].y*r[3].w,n[0].z*r[3].x+n[1].z*r[3].y+n[2].z*r[3].z+n[3].z*r[3].w,n[0].w*r[3].x+n[1].w*r[3].y+n[2].w*r[3].z+n[3].w*r[3].w)}},mulMxV:{mat2x2f:(e,t)=>{let n=e.columns;return K(n[0].x*t.x+n[1].x*t.y,n[0].y*t.x+n[1].y*t.y)},mat3x3f:(e,t)=>{let n=e.columns;return W(n[0].x*t.x+n[1].x*t.y+n[2].x*t.z,n[0].y*t.x+n[1].y*t.y+n[2].y*t.z,n[0].z*t.x+n[1].z*t.y+n[2].z*t.z)},mat4x4f:(e,t)=>{let n=e.columns;return j(n[0].x*t.x+n[1].x*t.y+n[2].x*t.z+n[3].x*t.w,n[0].y*t.x+n[1].y*t.y+n[2].y*t.z+n[3].y*t.w,n[0].z*t.x+n[1].z*t.y+n[2].z*t.z+n[3].z*t.w,n[0].w*t.x+n[1].w*t.y+n[2].w*t.z+n[3].w*t.w)}},mulVxM:{mat2x2f:(e,t)=>{let n=t.columns;return K(e.x*n[0].x+e.y*n[0].y,e.x*n[1].x+e.y*n[1].y)},mat3x3f:(e,t)=>{let n=t.columns;return W(e.x*n[0].x+e.y*n[0].y+e.z*n[0].z,e.x*n[1].x+e.y*n[1].y+e.z*n[1].z,e.x*n[2].x+e.y*n[2].y+e.z*n[2].z)},mat4x4f:(e,t)=>{let n=t.columns;return j(e.x*n[0].x+e.y*n[0].y+e.z*n[0].z+e.w*n[0].w,e.x*n[1].x+e.y*n[1].y+e.z*n[1].z+e.w*n[1].w,e.x*n[2].x+e.y*n[2].y+e.z*n[2].z+e.w*n[2].w,e.x*n[3].x+e.y*n[3].y+e.z*n[3].z+e.w*n[3].w)}},div:{vec2f:me((e,t)=>e/t),vec2h:he((e,t)=>e/t),vec2i:Fe(ge),vec2u:Ve(ge),vec3f:ee((e,t)=>e/t),vec3h:ve((e,t)=>e/t),vec3i:Ce(ge),vec3u:Pe(ge),vec4f:Q((e,t)=>e/t),vec4h:be((e,t)=>e/t),vec4i:ke(ge),vec4u:_e(ge)},dot:{vec2f:lt,vec2h:lt,vec2i:lt,vec2u:lt,vec3f:mt,vec3h:mt,vec3i:mt,vec3u:mt,vec4f:pt,vec4h:pt,vec4i:pt,vec4u:pt},normalize:{vec2f:e=>{let t=Me(e);return K(e.x/t,e.y/t)},vec2h:e=>{let t=Me(e);return pe(e.x/t,e.y/t)},vec2i:e=>{let t=Me(e);return We(e.x/t,e.y/t)},vec2u:e=>{let t=Me(e);return Ye(e.x/t,e.y/t)},vec3f:e=>{let t=Se(e);return W(e.x/t,e.y/t,e.z/t)},vec3h:e=>{let t=Se(e);return J(e.x/t,e.y/t,e.z/t)},vec3i:e=>{let t=Se(e);return Ue(e.x/t,e.y/t,e.z/t)},vec3u:e=>{let t=Se(e);return Je(e.x/t,e.y/t,e.z/t)},vec4f:e=>{let t=Ie(e);return j(e.x/t,e.y/t,e.z/t,e.w/t)},vec4h:e=>{let t=Ie(e);return ye(e.x/t,e.y/t,e.z/t,e.w/t)},vec4i:e=>{let t=Ie(e);return Be(e.x/t,e.y/t,e.z/t,e.w/t)},vec4u:e=>{let t=Ie(e);return et(e.x/t,e.y/t,e.z/t,e.w/t)}},cross:{vec3f:(e,t)=>W(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x),vec3h:(e,t)=>J(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)},mod:{vec2f:me((e,t)=>e%t),vec2h:he((e,t)=>e%t),vec2i:Fe((e,t)=>e%t),vec2u:Ve((e,t)=>e%t),vec3f:ee((e,t)=>e%t),vec3h:ve((e,t)=>e%t),vec3i:Ce((e,t)=>e%t),vec3u:Pe((e,t)=>e%t),vec4f:Q((e,t)=>e%t),vec4h:be((e,t)=>e%t),vec4i:ke((e,t)=>e%t),vec4u:_e((e,t)=>e%t)},floor:{vec2f:h(Math.floor),vec2h:b(Math.floor),vec3f:f(Math.floor),vec3h:w(Math.floor),vec4f:d(Math.floor),vec4h:M(Math.floor)},max:{vec2f:me(Math.max),vec2h:he(Math.max),vec2i:Fe(Math.max),vec2u:Ve(Math.max),vec3f:ee(Math.max),vec3h:ve(Math.max),vec3i:Ce(Math.max),vec3u:Pe(Math.max),vec4f:Q(Math.max),vec4h:be(Math.max),vec4i:ke(Math.max),vec4u:_e(Math.max)},min:{vec2f:me(Math.min),vec2h:he(Math.min),vec2i:Fe(Math.min),vec2u:Ve(Math.min),vec3f:ee(Math.min),vec3h:ve(Math.min),vec3i:Ce(Math.min),vec3u:Pe(Math.min),vec4f:Q(Math.min),vec4h:be(Math.min),vec4i:ke(Math.min),vec4u:_e(Math.min)},pow:{vec2f:(e,t)=>K(e.x**t.x,e.y**t.y),vec2h:(e,t)=>pe(e.x**t.x,e.y**t.y),vec3f:(e,t)=>W(e.x**t.x,e.y**t.y,e.z**t.z),vec3h:(e,t)=>J(e.x**t.x,e.y**t.y,e.z**t.z),vec4f:(e,t)=>j(e.x**t.x,e.y**t.y,e.z**t.z,e.w**t.w),vec4h:(e,t)=>ye(e.x**t.x,e.y**t.y,e.z**t.z,e.w**t.w)},sign:{vec2f:h(Math.sign),vec2h:b(Math.sign),vec2i:Ae(Math.sign),vec3f:f(Math.sign),vec3h:w(Math.sign),vec3i:ze(Math.sign),vec4f:d(Math.sign),vec4h:M(Math.sign),vec4i:$e(Math.sign)},sqrt:{vec2f:h(Math.sqrt),vec2h:b(Math.sqrt),vec3f:f(Math.sqrt),vec3h:w(Math.sqrt),vec4f:d(Math.sqrt),vec4h:M(Math.sqrt)},mix:{vec2f:(e,t,n)=>typeof n=="number"?K(e.x*(1-n)+t.x*n,e.y*(1-n)+t.y*n):K(e.x*(1-n.x)+t.x*n.x,e.y*(1-n.y)+t.y*n.y),vec2h:(e,t,n)=>typeof n=="number"?pe(e.x*(1-n)+t.x*n,e.y*(1-n)+t.y*n):pe(e.x*(1-n.x)+t.x*n.x,e.y*(1-n.y)+t.y*n.y),vec3f:(e,t,n)=>typeof n=="number"?W(e.x*(1-n)+t.x*n,e.y*(1-n)+t.y*n,e.z*(1-n)+t.z*n):W(e.x*(1-n.x)+t.x*n.x,e.y*(1-n.y)+t.y*n.y,e.z*(1-n.z)+t.z*n.z),vec3h:(e,t,n)=>typeof n=="number"?J(e.x*(1-n)+t.x*n,e.y*(1-n)+t.y*n,e.z*(1-n)+t.z*n):J(e.x*(1-n.x)+t.x*n.x,e.y*(1-n.y)+t.y*n.y,e.z*(1-n.z)+t.z*n.z),vec4f:(e,t,n)=>typeof n=="number"?j(e.x*(1-n)+t.x*n,e.y*(1-n)+t.y*n,e.z*(1-n)+t.z*n,e.w*(1-n)+t.w*n):j(e.x*(1-n.x)+t.x*n.x,e.y*(1-n.y)+t.y*n.y,e.z*(1-n.z)+t.z*n.z,e.w*(1-n.w)+t.w*n.w),vec4h:(e,t,n)=>typeof n=="number"?ye(e.x*(1-n)+t.x*n,e.y*(1-n)+t.y*n,e.z*(1-n)+t.z*n,e.w*(1-n)+t.w*n):ye(e.x*(1-n.x)+t.x*n.x,e.y*(1-n.y)+t.y*n.y,e.z*(1-n.z)+t.z*n.z,e.w*(1-n.w)+t.w*n.w)},sin:{vec2f:h(Math.sin),vec2h:b(Math.sin),vec3f:f(Math.sin),vec3h:w(Math.sin),vec4f:d(Math.sin),vec4h:M(Math.sin)},cos:{vec2f:h(Math.cos),vec2h:b(Math.cos),vec3f:f(Math.cos),vec3h:w(Math.cos),vec4f:d(Math.cos),vec4h:M(Math.cos)},cosh:{vec2f:h(Math.cosh),vec2h:b(Math.cosh),vec3f:f(Math.cosh),vec3h:w(Math.cosh),vec4f:d(Math.cosh),vec4h:M(Math.cosh)},exp:{vec2f:h(Math.exp),vec2h:b(Math.exp),vec3f:f(Math.exp),vec3h:w(Math.exp),vec4f:d(Math.exp),vec4h:M(Math.exp)},exp2:{vec2f:h(e=>2**e),vec2h:b(e=>2**e),vec3f:f(e=>2**e),vec3h:w(e=>2**e),vec4f:d(e=>2**e),vec4h:M(e=>2**e)},log:{vec2f:h(Math.log),vec2h:b(Math.log),vec3f:f(Math.log),vec3h:w(Math.log),vec4f:d(Math.log),vec4h:M(Math.log)},log2:{vec2f:h(Math.log2),vec2h:b(Math.log2),vec3f:f(Math.log2),vec3h:w(Math.log2),vec4f:d(Math.log2),vec4h:M(Math.log2)},fract:{vec2f:h(e=>e-Math.floor(e)),vec2h:b(e=>e-Math.floor(e)),vec3f:f(e=>e-Math.floor(e)),vec3h:w(e=>e-Math.floor(e)),vec4f:d(e=>e-Math.floor(e)),vec4h:M(e=>e-Math.floor(e))},isCloseToZero:{vec2f:(e,t)=>Math.abs(e.x)<=t&&Math.abs(e.y)<=t,vec2h:(e,t)=>Math.abs(e.x)<=t&&Math.abs(e.y)<=t,vec3f:(e,t)=>Math.abs(e.x)<=t&&Math.abs(e.y)<=t&&Math.abs(e.z)<=t,vec3h:(e,t)=>Math.abs(e.x)<=t&&Math.abs(e.y)<=t&&Math.abs(e.z)<=t,vec4f:(e,t)=>Math.abs(e.x)<=t&&Math.abs(e.y)<=t&&Math.abs(e.z)<=t&&Math.abs(e.w)<=t,vec4h:(e,t)=>Math.abs(e.x)<=t&&Math.abs(e.y)<=t&&Math.abs(e.z)<=t&&Math.abs(e.w)<=t},neg:{vec2f:h(e=>-e),vec2h:b(e=>-e),vec2i:Ae(e=>-e),vec2u:He(e=>-e),"vec2<bool>":e=>G(!e.x,!e.y),vec3f:f(e=>-e),vec3h:w(e=>-e),vec3i:ze(e=>-e),vec3u:Qe(e=>-e),"vec3<bool>":e=>N(!e.x,!e.y,!e.z),vec4f:d(e=>-e),vec4h:M(e=>-e),vec4i:$e(e=>-e),vec4u:Xe(e=>-e),"vec4<bool>":e=>O(!e.x,!e.y,!e.z,!e.w)},select:{vec2f:(e,t,n)=>K(n.x?t.x:e.x,n.y?t.y:e.y),vec2h:(e,t,n)=>pe(n.x?t.x:e.x,n.y?t.y:e.y),vec2i:(e,t,n)=>We(n.x?t.x:e.x,n.y?t.y:e.y),vec2u:(e,t,n)=>Ye(n.x?t.x:e.x,n.y?t.y:e.y),"vec2<bool>":(e,t,n)=>G(n.x?t.x:e.x,n.y?t.y:e.y),vec3f:(e,t,n)=>W(n.x?t.x:e.x,n.y?t.y:e.y,n.z?t.z:e.z),vec3h:(e,t,n)=>J(n.x?t.x:e.x,n.y?t.y:e.y,n.z?t.z:e.z),vec3i:(e,t,n)=>Ue(n.x?t.x:e.x,n.y?t.y:e.y,n.z?t.z:e.z),vec3u:(e,t,n)=>Je(n.x?t.x:e.x,n.y?t.y:e.y,n.z?t.z:e.z),"vec3<bool>":(e,t,n)=>N(n.x?t.x:e.x,n.y?t.y:e.y,n.z?t.z:e.z),vec4f:(e,t,n)=>j(n.x?t.x:e.x,n.y?t.y:e.y,n.z?t.z:e.z,n.w?t.w:e.w),vec4h:(e,t,n)=>ye(n.x?t.x:e.x,n.y?t.y:e.y,n.z?t.z:e.z,n.w?t.w:e.w),vec4i:(e,t,n)=>Be(n.x?t.x:e.x,n.y?t.y:e.y,n.z?t.z:e.z,n.w?t.w:e.w),vec4u:(e,t,n)=>et(n.x?t.x:e.x,n.y?t.y:e.y,n.z?t.z:e.z,n.w?t.w:e.w),"vec4<bool>":(e,t,n)=>O(n.x?t.x:e.x,n.y?t.y:e.y,n.z?t.z:e.z,n.w?t.w:e.w)},tanh:{vec2f:h(Math.tanh),vec2h:b(Math.tanh),vec3f:f(Math.tanh),vec3h:w(Math.tanh),vec4f:d(Math.tanh),vec4h:M(Math.tanh)},bitcastU32toF32:{vec2u:e=>K(X(e.x),X(e.y)),vec3u:e=>W(X(e.x),X(e.y),X(e.z)),vec4u:e=>j(X(e.x),X(e.y),X(e.z),X(e.w))},bitcastU32toI32:{vec2u:e=>We(Y(e.x),Y(e.y)),vec3u:e=>Ue(Y(e.x),Y(e.y),Y(e.z)),vec4u:e=>Be(Y(e.x),Y(e.y),Y(e.z),Y(e.w))}};function Jt(e,t){if(typeof e=="number"&&typeof t=="number")return e+t;if(typeof e=="number"&&_chunkA5APHF7Kcjs.r.call(void 0, t))return i.addMixed[t.kind](t,e);if(_chunkA5APHF7Kcjs.r.call(void 0, e)&&typeof t=="number")return i.addMixed[e.kind](e,t);if(_chunkA5APHF7Kcjs.r.call(void 0, e)&&_chunkA5APHF7Kcjs.r.call(void 0, t)||_chunkA5APHF7Kcjs.w.call(void 0, e)&&_chunkA5APHF7Kcjs.w.call(void 0, t))return i.add[e.kind](e,t);throw new Error("Add/Sub called with invalid arguments.")}var kt=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"add",signature:(...e)=>{let t=_nullishCoalesce(_chunkA5APHF7Kcjs.Ia.call(void 0, e), () => (e));return{argTypes:t,returnType:_chunkA5APHF7Kcjs.N.call(void 0, t[0])?t[1]:t[0]}},normalImpl:Jt,codegenImpl:(e,t)=>_chunkA5APHF7Kcjs.Ea`(${e} + ${t})`});function Un(e,t){return Jt(e,en(-1,t))}var De=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"sub",signature:(...e)=>{let t=_nullishCoalesce(_chunkA5APHF7Kcjs.Ia.call(void 0, e), () => (e));return{argTypes:t,returnType:_chunkA5APHF7Kcjs.N.call(void 0, t[0])?t[1]:t[0]}},normalImpl:Un,codegenImpl:(e,t)=>_chunkA5APHF7Kcjs.Ea`(${e} - ${t})`});function en(e,t){if(typeof e=="number"&&typeof t=="number")return e*t;if(typeof e=="number"&&(_chunkA5APHF7Kcjs.r.call(void 0, t)||_chunkA5APHF7Kcjs.w.call(void 0, t)))return i.mulSxV[t.kind](e,t);if((_chunkA5APHF7Kcjs.r.call(void 0, e)||_chunkA5APHF7Kcjs.w.call(void 0, e))&&typeof t=="number")return i.mulSxV[e.kind](t,e);if(_chunkA5APHF7Kcjs.r.call(void 0, e)&&_chunkA5APHF7Kcjs.r.call(void 0, t))return i.mulVxV[e.kind](e,t);if(_chunkA5APHF7Kcjs.A.call(void 0, e)&&_chunkA5APHF7Kcjs.w.call(void 0, t))return i.mulVxM[t.kind](e,t);if(_chunkA5APHF7Kcjs.w.call(void 0, e)&&_chunkA5APHF7Kcjs.A.call(void 0, t))return i.mulMxV[e.kind](e,t);if(_chunkA5APHF7Kcjs.w.call(void 0, e)&&_chunkA5APHF7Kcjs.w.call(void 0, t))return i.mulVxV[e.kind](e,t);throw new Error("Mul called with invalid arguments.")}var tt=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"mul",signature:(...e)=>{let t=_nullishCoalesce(_chunkA5APHF7Kcjs.Ia.call(void 0, e), () => (e)),n=_chunkA5APHF7Kcjs.N.call(void 0, t[0])?t[1]:_chunkA5APHF7Kcjs.N.call(void 0, t[1])||t[0].type.startsWith("vec")?t[0]:t[1].type.startsWith("vec")?t[1]:t[0];return{argTypes:t,returnType:n}},normalImpl:en,codegenImpl:(e,t)=>_chunkA5APHF7Kcjs.Ea`(${e} * ${t})`});function Bn(e,t){if(typeof e=="number"&&typeof t=="number")return e/t;if(typeof e=="number"&&_chunkA5APHF7Kcjs.r.call(void 0, t)){let n=_chunkA5APHF7Kcjs.lb[t.kind][_chunkA5APHF7Kcjs.a].jsImpl;return i.div[t.kind](n(e),t)}if(_chunkA5APHF7Kcjs.r.call(void 0, e)&&typeof t=="number"){let n=_chunkA5APHF7Kcjs.lb[e.kind][_chunkA5APHF7Kcjs.a].jsImpl;return i.div[e.kind](e,n(t))}if(_chunkA5APHF7Kcjs.r.call(void 0, e)&&_chunkA5APHF7Kcjs.r.call(void 0, t))return i.div[e.kind](e,t);throw new Error("Div called with invalid arguments.")}var _t=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"div",signature:(...e)=>{let t=_nullishCoalesce(_chunkA5APHF7Kcjs.Ia.call(void 0, e,[_chunkA5APHF7Kcjs.Va,_chunkA5APHF7Kcjs.Wa,_chunkA5APHF7Kcjs.Qa]), () => (e));return{argTypes:t,returnType:_chunkA5APHF7Kcjs.N.call(void 0, t[0])?t[1]:t[0]}},normalImpl:Bn,codegenImpl:(e,t)=>_chunkA5APHF7Kcjs.Fa`(${e} / ${t})`,ignoreImplicitCastWarning:!0}),Is= exports.Z =_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"mod",signature:(...e)=>{let t=_nullishCoalesce(_chunkA5APHF7Kcjs.Ia.call(void 0, e), () => (e));return{argTypes:t,returnType:_chunkA5APHF7Kcjs.N.call(void 0, t[0])?t[1]:t[0]}},normalImpl(e,t){if(typeof e=="number"&&typeof t=="number")return e%t;if(typeof e=="number"&&_chunkA5APHF7Kcjs.r.call(void 0, t)){let n=_chunkA5APHF7Kcjs.lb[t.kind];return i.mod[t.kind](n(e),t)}if(_chunkA5APHF7Kcjs.r.call(void 0, e)&&typeof t=="number"){let n=_chunkA5APHF7Kcjs.lb[e.kind];return i.mod[e.kind](e,n(t))}if(_chunkA5APHF7Kcjs.r.call(void 0, e)&&_chunkA5APHF7Kcjs.r.call(void 0, t))return i.mod[e.kind](e,t);throw new Error("Mod called with invalid arguments, expected types: number or vector.")},codegenImpl:(e,t)=>_chunkA5APHF7Kcjs.Ea`(${e} % ${t})`});function Dn(e){return typeof e=="number"?-e:i.neg[e.kind](e)}var As=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"neg",signature:e=>({argTypes:[e],returnType:e}),normalImpl:Dn,codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`-(${e})`});function Rn(e){return typeof e=="number"?Math.abs(e):i.abs[e.kind](e)}var Rs=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"abs",signature:e=>({argTypes:[e],returnType:e}),normalImpl:Rn,codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`abs(${e})`});function En(e){return typeof e=="number"?Math.acos(e):i.acos[e.kind](e)}var Es=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"acos",signature:e=>({argTypes:[e],returnType:e}),normalImpl:En,codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`acos(${e})`});function Ln(e){return typeof e=="number"?Math.acosh(e):i.acosh[e.kind](e)}var Ls=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"acosh",signature:e=>({argTypes:[e],returnType:e}),normalImpl:Ln,codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`acosh(${e})`});function Gn(e){return typeof e=="number"?Math.asin(e):i.asin[e.kind](e)}var Gs=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"asin",signature:e=>({argTypes:[e],returnType:e}),normalImpl:Gn,codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`asin(${e})`});function Nn(e){return typeof e=="number"?Math.asinh(e):i.asinh[e.kind](e)}var Ns=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"asinh",signature:e=>({argTypes:[e],returnType:e}),normalImpl:Nn,codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`asinh(${e})`});function On(e){return typeof e=="number"?Math.atan(e):i.atan[e.kind](e)}var Os=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"atan",signature:e=>({argTypes:[e],returnType:e}),normalImpl:On,codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`atan(${e})`});function Kn(e){return typeof e=="number"?Math.atanh(e):i.atanh[e.kind](e)}var Ks=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"atanh",signature:e=>({argTypes:[e],returnType:e}),normalImpl:Kn,codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`atanh(${e})`});function jn(e,t){return typeof e=="number"&&typeof t=="number"?Math.atan2(e,t):i.atan2[e.kind](e,t)}var js=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"atan2",signature:(...e)=>{let t=_nullishCoalesce(_chunkA5APHF7Kcjs.Ia.call(void 0, e,[_chunkA5APHF7Kcjs.Va,_chunkA5APHF7Kcjs.Wa,_chunkA5APHF7Kcjs.Qa]), () => (e));return{argTypes:t,returnType:t[0]}},normalImpl:jn,codegenImpl:(e,t)=>_chunkA5APHF7Kcjs.Ea`atan2(${e}, ${t})`});function qn(e){return typeof e=="number"?Math.ceil(e):i.ceil[e.kind](e)}var qs=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"ceil",signature:e=>({argTypes:[e],returnType:e}),normalImpl:qn,codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`ceil(${e})`});function Zn(e,t,n){return typeof e=="number"?Math.min(Math.max(t,e),n):i.clamp[e.kind](e,t,n)}var Zs=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"clamp",signature:(...e)=>{let t=_nullishCoalesce(_chunkA5APHF7Kcjs.Ia.call(void 0, e), () => (e));return{argTypes:t,returnType:t[0]}},normalImpl:Zn,codegenImpl:(e,t,n)=>_chunkA5APHF7Kcjs.Ea`clamp(${e}, ${t}, ${n})`});function Hn(e){return typeof e=="number"?Math.cos(e):i.cos[e.kind](e)}var Hs=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"cos",signature:e=>({argTypes:[e],returnType:e}),normalImpl:Hn,codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`cos(${e})`});function Qn(e){return typeof e=="number"?Math.cosh(e):i.cosh[e.kind](e)}var Qs=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"cosh",signature:e=>({argTypes:[e],returnType:e}),normalImpl:Qn,codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`cosh(${e})`});var Xs=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"countLeadingZeros",signature:e=>({argTypes:[e],returnType:e}),normalImpl:"CPU implementation for countLeadingZeros not implemented yet. Please submit an issue at https://github.com/software-mansion/TypeGPU/issues",codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`countLeadingZeros(${e})`});var Ys=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"countOneBits",signature:e=>({argTypes:[e],returnType:e}),normalImpl:"CPU implementation for countOneBits not implemented yet. Please submit an issue at https://github.com/software-mansion/TypeGPU/issues",codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`countOneBits(${e})`});var Js=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"countTrailingZeros",signature:e=>({argTypes:[e],returnType:e}),normalImpl:"CPU implementation for countTrailingZeros not implemented yet. Please submit an issue at https://github.com/software-mansion/TypeGPU/issues",codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`countTrailingZeros(${e})`}),ea= exports.oa =_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"cross",signature:(e,t)=>({argTypes:[e,t],returnType:e}),normalImpl:(e,t)=>i.cross[e.kind](e,t),codegenImpl:(e,t)=>_chunkA5APHF7Kcjs.Ea`cross(${e}, ${t})`});function Xn(e){if(typeof e=="number")return e*180/Math.PI;throw new (0, _chunkA5APHF7Kcjs.Na)("CPU implementation for degrees on vectors not implemented yet. Please submit an issue at https://github.com/software-mansion/TypeGPU/issues")}var ta=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"degrees",signature:e=>({argTypes:[e],returnType:e}),normalImpl:Xn,codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`degrees(${e})`}),na= exports.qa =_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"determinant",signature:e=>({argTypes:[e],returnType:_chunkA5APHF7Kcjs.Va}),normalImpl:"CPU implementation for determinant not implemented yet. Please submit an issue at https://github.com/software-mansion/TypeGPU/issues",codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`determinant(${e})`});function Yn(e,t){return typeof e=="number"&&typeof t=="number"?Math.abs(e-t):cr(De(e,t))}var ra=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"distance",signature:(e,t)=>({argTypes:[e,t],returnType:_chunkA5APHF7Kcjs.O.call(void 0, e)?_chunkA5APHF7Kcjs.Wa:_chunkA5APHF7Kcjs.Va}),normalImpl:Yn,codegenImpl:(e,t)=>_chunkA5APHF7Kcjs.Ea`distance(${e}, ${t})`}),Jn= exports.sa =_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"dot",signature:(e,t)=>({argTypes:[e,t],returnType:e.primitive}),normalImpl:(e,t)=>i.dot[e.kind](e,t),codegenImpl:(e,t)=>_chunkA5APHF7Kcjs.Ea`dot(${e}, ${t})`}),sa= exports.ta =_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"dot4U8Packed",signature:(e,t)=>({argTypes:[_chunkA5APHF7Kcjs.Sa,_chunkA5APHF7Kcjs.Sa],returnType:_chunkA5APHF7Kcjs.Sa}),normalImpl:"CPU implementation for dot4U8Packed not implemented yet. Please submit an issue at https://github.com/software-mansion/TypeGPU/issues",codegenImpl:(e,t)=>_chunkA5APHF7Kcjs.Ea`dot4U8Packed(${e}, ${t})`}),aa= exports.ua =_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"dot4I8Packed",signature:(e,t)=>({argTypes:[_chunkA5APHF7Kcjs.Sa,_chunkA5APHF7Kcjs.Sa],returnType:_chunkA5APHF7Kcjs.Ua}),normalImpl:"CPU implementation for dot4I8Packed not implemented yet. Please submit an issue at https://github.com/software-mansion/TypeGPU/issues",codegenImpl:(e,t)=>_chunkA5APHF7Kcjs.Ea`dot4I8Packed(${e}, ${t})`});function er(e){return typeof e=="number"?Math.exp(e):i.exp[e.kind](e)}var oa=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"exp",signature:e=>({argTypes:[e],returnType:e}),normalImpl:er,codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`exp(${e})`});function tr(e){return typeof e=="number"?2**e:i.exp2[e.kind](e)}var ua=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"exp2",signature:e=>({argTypes:[e],returnType:e}),normalImpl:tr,codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`exp2(${e})`});var ca=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"extractBits",signature:(e,t,n)=>({argTypes:[e,_chunkA5APHF7Kcjs.Sa,_chunkA5APHF7Kcjs.Sa],returnType:e}),normalImpl:"CPU implementation for extractBits not implemented yet. Please submit an issue at https://github.com/software-mansion/TypeGPU/issues",codegenImpl:(e,t,n)=>_chunkA5APHF7Kcjs.Ea`extractBits(${e}, ${t}, ${n})`}),ia= exports.ya =_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"faceForward",signature:(e,t,n)=>({argTypes:[e,t,n],returnType:e}),normalImpl:"CPU implementation for faceForward not implemented yet. Please submit an issue at https://github.com/software-mansion/TypeGPU/issues",codegenImpl:(e,t,n)=>_chunkA5APHF7Kcjs.Ea`faceForward(${e}, ${t}, ${n})`});var la=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"firstLeadingBit",signature:e=>({argTypes:[e],returnType:e}),normalImpl:"CPU implementation for firstLeadingBit not implemented yet. Please submit an issue at https://github.com/software-mansion/TypeGPU/issues",codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`firstLeadingBit(${e})`});var ma=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"firstTrailingBit",signature:e=>({argTypes:[e],returnType:e}),normalImpl:"CPU implementation for firstTrailingBit not implemented yet. Please submit an issue at https://github.com/software-mansion/TypeGPU/issues",codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`firstTrailingBit(${e})`});function nr(e){return typeof e=="number"?Math.floor(e):i.floor[e.kind](e)}var pa=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"floor",signature:(...e)=>({argTypes:e,returnType:e[0]}),normalImpl:nr,codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`floor(${e})`});function rr(e,t,n){if(typeof e=="number")return e*t+n;throw new (0, _chunkA5APHF7Kcjs.Na)("CPU implementation for fma on vectors not implemented yet. Please submit an issue at https://github.com/software-mansion/TypeGPU/issues")}var ya=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"fma",signature:(e,t,n)=>({argTypes:[e,t,n],returnType:e}),normalImpl:rr,codegenImpl:(e,t,n)=>_chunkA5APHF7Kcjs.Ea`fma(${e}, ${t}, ${n})`});function sr(e){return typeof e=="number"?e-Math.floor(e):i.fract[e.kind](e)}var xa=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"fract",signature:(...e)=>({argTypes:e,returnType:e[0]}),normalImpl:sr,codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`fract(${e})`}),ar={f32:_chunkA5APHF7Kcjs.tc.call(void 0, {fract:_chunkA5APHF7Kcjs.Va,exp:_chunkA5APHF7Kcjs.Ua}),f16:_chunkA5APHF7Kcjs.tc.call(void 0, {fract:_chunkA5APHF7Kcjs.Wa,exp:_chunkA5APHF7Kcjs.Ua}),abstractFloat:_chunkA5APHF7Kcjs.tc.call(void 0, {fract:_chunkA5APHF7Kcjs.Qa,exp:_chunkA5APHF7Kcjs.Pa}),vec2f:_chunkA5APHF7Kcjs.tc.call(void 0, {fract:_chunkA5APHF7Kcjs.Ya,exp:_chunkA5APHF7Kcjs._a}),vec3f:_chunkA5APHF7Kcjs.tc.call(void 0, {fract:_chunkA5APHF7Kcjs.bb,exp:_chunkA5APHF7Kcjs.db}),vec4f:_chunkA5APHF7Kcjs.tc.call(void 0, {fract:_chunkA5APHF7Kcjs.gb,exp:_chunkA5APHF7Kcjs.ib}),vec2h:_chunkA5APHF7Kcjs.tc.call(void 0, {fract:_chunkA5APHF7Kcjs.Za,exp:_chunkA5APHF7Kcjs._a}),vec3h:_chunkA5APHF7Kcjs.tc.call(void 0, {fract:_chunkA5APHF7Kcjs.cb,exp:_chunkA5APHF7Kcjs.db}),vec4h:_chunkA5APHF7Kcjs.tc.call(void 0, {fract:_chunkA5APHF7Kcjs.hb,exp:_chunkA5APHF7Kcjs.ib})},Ta= exports.Ea =_chunkA5APHF7Kcjs.Ma.call(void 0, e=>{throw new (0, _chunkA5APHF7Kcjs.Na)("CPU implementation for frexp not implemented yet. Please submit an issue at https://github.com/software-mansion/TypeGPU/issues")},e=>{let t=ar[e.dataType.type];if(!t)throw new Error(`Unsupported data type for frexp: ${e.dataType.type}. Supported types are f32, f16, abstractFloat, vec2f, vec3f, vec4f, vec2h, vec3h, vec4h.`);return _chunkA5APHF7Kcjs.aa.call(void 0, _chunkA5APHF7Kcjs.Ea`frexp(${e})`,t)},"frexp");var da=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"insertBits",signature:(e,t,n,r)=>({argTypes:[e,t,_chunkA5APHF7Kcjs.Sa,_chunkA5APHF7Kcjs.Sa],returnType:e}),normalImpl:"CPU implementation for insertBits not implemented yet. Please submit an issue at https://github.com/software-mansion/TypeGPU/issues",codegenImpl:(e,t,n,r)=>_chunkA5APHF7Kcjs.Ea`insertBits(${e}, ${t}, ${n}, ${r})`});function or(e){if(typeof e=="number")return 1/Math.sqrt(e);throw new (0, _chunkA5APHF7Kcjs.Na)("CPU implementation for inverseSqrt on vectors not implemented yet. Please submit an issue at https://github.com/software-mansion/TypeGPU/issues")}var fa=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"inverseSqrt",signature:e=>({argTypes:[e],returnType:e}),normalImpl:or,codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`inverseSqrt(${e})`});var ga=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"ldexp",signature:(e,t)=>{switch(e.type){case"abstractFloat":return{argTypes:[_chunkA5APHF7Kcjs.Qa,_chunkA5APHF7Kcjs.Pa],returnType:e};case"f32":case"f16":return{argTypes:[e,_chunkA5APHF7Kcjs.Ua],returnType:e};case"vec2f":case"vec2h":return{argTypes:[e,_chunkA5APHF7Kcjs._a],returnType:e};case"vec3f":case"vec3h":return{argTypes:[e,_chunkA5APHF7Kcjs.db],returnType:e};case"vec4f":case"vec4h":return{argTypes:[e,_chunkA5APHF7Kcjs.ib],returnType:e};default:throw new Error(`Unsupported data type for ldexp: ${e.type}. Supported types are abstractFloat, f32, f16, vec2f, vec2h, vec3f, vec3h, vec4f, vec4h.`)}},normalImpl:"CPU implementation for ldexp not implemented yet. Please submit an issue at https://github.com/software-mansion/TypeGPU/issues",codegenImpl:(e,t)=>_chunkA5APHF7Kcjs.Ea`ldexp(${e}, ${t})`});function ur(e){return typeof e=="number"?Math.abs(e):i.length[e.kind](e)}var cr=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"length",signature:e=>({argTypes:[e],returnType:_chunkA5APHF7Kcjs.O.call(void 0, e)?_chunkA5APHF7Kcjs.Wa:_chunkA5APHF7Kcjs.Va}),normalImpl:ur,codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`length(${e})`});function ir(e){return typeof e=="number"?Math.log(e):i.log[e.kind](e)}var ha=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"log",signature:e=>({argTypes:[e],returnType:e}),normalImpl:ir,codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`log(${e})`});function lr(e){return typeof e=="number"?Math.log2(e):i.log2[e.kind](e)}var va=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"log2",signature:e=>({argTypes:[e],returnType:e}),normalImpl:lr,codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`log2(${e})`});function mr(e,t){return typeof e=="number"?Math.max(e,t):i.max[e.kind](e,t)}var ba=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"max",signature:(...e)=>{let t=_nullishCoalesce(_chunkA5APHF7Kcjs.Ia.call(void 0, e), () => (e));return{argTypes:t,returnType:t[0]}},normalImpl:mr,codegenImpl:(e,t)=>_chunkA5APHF7Kcjs.Ea`max(${e}, ${t})`});function pr(e,t){return typeof e=="number"?Math.min(e,t):i.min[e.kind](e,t)}var wa=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"min",signature:(...e)=>{let t=_nullishCoalesce(_chunkA5APHF7Kcjs.Ia.call(void 0, e), () => (e));return{argTypes:t,returnType:t[0]}},normalImpl:pr,codegenImpl:(e,t)=>_chunkA5APHF7Kcjs.Ea`min(${e}, ${t})`});function yr(e,t,n){if(typeof e=="number"){if(typeof n!="number"||typeof t!="number")throw new Error("When e1 and e2 are numbers, the blend factor must be a number.");return e*(1-n)+t*n}if(typeof e=="number"||typeof t=="number")throw new Error("e1 and e2 need to both be vectors of the same kind.");return i.mix[e.kind](e,t,n)}var Ma=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"mix",signature:(e,t,n)=>({argTypes:[e,t,n],returnType:e}),normalImpl:yr,codegenImpl:(e,t,n)=>_chunkA5APHF7Kcjs.Ea`mix(${e}, ${t}, ${n})`}),xr={f32:_chunkA5APHF7Kcjs.tc.call(void 0, {fract:_chunkA5APHF7Kcjs.Va,whole:_chunkA5APHF7Kcjs.Va}),f16:_chunkA5APHF7Kcjs.tc.call(void 0, {fract:_chunkA5APHF7Kcjs.Wa,whole:_chunkA5APHF7Kcjs.Wa}),abstractFloat:_chunkA5APHF7Kcjs.tc.call(void 0, {fract:_chunkA5APHF7Kcjs.Qa,whole:_chunkA5APHF7Kcjs.Qa}),vec2f:_chunkA5APHF7Kcjs.tc.call(void 0, {fract:_chunkA5APHF7Kcjs.Ya,whole:_chunkA5APHF7Kcjs.Ya}),vec3f:_chunkA5APHF7Kcjs.tc.call(void 0, {fract:_chunkA5APHF7Kcjs.bb,whole:_chunkA5APHF7Kcjs.bb}),vec4f:_chunkA5APHF7Kcjs.tc.call(void 0, {fract:_chunkA5APHF7Kcjs.gb,whole:_chunkA5APHF7Kcjs.gb}),vec2h:_chunkA5APHF7Kcjs.tc.call(void 0, {fract:_chunkA5APHF7Kcjs.Za,whole:_chunkA5APHF7Kcjs.Za}),vec3h:_chunkA5APHF7Kcjs.tc.call(void 0, {fract:_chunkA5APHF7Kcjs.cb,whole:_chunkA5APHF7Kcjs.cb}),vec4h:_chunkA5APHF7Kcjs.tc.call(void 0, {fract:_chunkA5APHF7Kcjs.hb,whole:_chunkA5APHF7Kcjs.hb})};var Sa=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"modf",signature:e=>{let t=xr[e.type];if(!t)throw new Error(`Unsupported data type for modf: ${e.type}. Supported types are f32, f16, abstractFloat, vec2f, vec3f, vec4f, vec2h, vec3h, vec4h.`);return{argTypes:[e],returnType:t}},normalImpl:"CPU implementation for modf not implemented yet. Please submit an issue at https://github.com/software-mansion/TypeGPU/issues",codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`modf(${e})`}),Ia= exports.Pa =_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"normalize",signature:e=>({argTypes:[e],returnType:e}),normalImpl:e=>i.normalize[e.kind](e),codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`normalize(${e})`});function Tr(e,t){if(typeof e=="number"&&typeof t=="number")return e**t;if(_chunkA5APHF7Kcjs.r.call(void 0, e)&&_chunkA5APHF7Kcjs.r.call(void 0, t))return i.pow[e.kind](e,t);throw new Error("Invalid arguments to pow()")}var tn=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"pow",signature:(...e)=>{let t=_nullishCoalesce(_chunkA5APHF7Kcjs.Ia.call(void 0, e,[_chunkA5APHF7Kcjs.Va,_chunkA5APHF7Kcjs.Wa,_chunkA5APHF7Kcjs.Qa]), () => (e));return{argTypes:t,returnType:_chunkA5APHF7Kcjs.N.call(void 0, t[0])?t[1]:t[0]}},normalImpl:Tr,codegenImpl:(e,t)=>_chunkA5APHF7Kcjs.Ea`pow(${e}, ${t})`});var Aa=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"quantizeToF16",signature:e=>({argTypes:[e],returnType:e}),normalImpl:"CPU implementation for quantizeToF16 not implemented yet. Please submit an issue at https://github.com/software-mansion/TypeGPU/issues",codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`quantizeToF16(${e})`});function dr(e){if(typeof e=="number")return e*Math.PI/180;throw new (0, _chunkA5APHF7Kcjs.Na)("CPU implementation for radians on vectors not implemented yet. Please submit an issue at https://github.com/software-mansion/TypeGPU/issues")}var za=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"radians",signature:(...e)=>{let t=_nullishCoalesce(_chunkA5APHF7Kcjs.Ia.call(void 0, e,[_chunkA5APHF7Kcjs.Va,_chunkA5APHF7Kcjs.Wa,_chunkA5APHF7Kcjs.Qa]), () => (e));return{argTypes:t,returnType:t[0]}},normalImpl:dr,codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`radians(${e})`}),$a= exports.Ta =_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"reflect",signature:(e,t)=>({argTypes:[e,t],returnType:e}),normalImpl:(e,t)=>De(e,tt(2*Jn(t,e),t)),codegenImpl:(e,t)=>_chunkA5APHF7Kcjs.Ea`reflect(${e}, ${t})`}),Fa= exports.Ua =_chunkA5APHF7Kcjs.Ma.call(void 0, (e,t,n)=>{throw new (0, _chunkA5APHF7Kcjs.Na)("CPU implementation for refract not implemented yet. Please submit an issue at https://github.com/software-mansion/TypeGPU/issues")},(e,t,n)=>_chunkA5APHF7Kcjs.aa.call(void 0, _chunkA5APHF7Kcjs.Ea`refract(${e}, ${t}, ${n})`,e.dataType),"refract",(e,t,n)=>[e.dataType,t.dataType,_chunkA5APHF7Kcjs.O.call(void 0, e)?_chunkA5APHF7Kcjs.Wa:_chunkA5APHF7Kcjs.Va]);var Va=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"reverseBits",signature:e=>({argTypes:[e],returnType:e}),normalImpl:"CPU implementation for reverseBits not implemented yet. Please submit an issue at https://github.com/software-mansion/TypeGPU/issues",codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`reverseBits(${e})`});function fr(e){if(typeof e=="number")return Math.round(e);throw new (0, _chunkA5APHF7Kcjs.Na)("CPU implementation for round on vectors not implemented yet. Please submit an issue at https://github.com/software-mansion/TypeGPU/issues")}var Ca=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"round",signature:e=>({argTypes:[e],returnType:e}),normalImpl:fr,codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`round(${e})`});function gr(e){if(typeof e=="number")return Math.max(0,Math.min(1,e));throw new (0, _chunkA5APHF7Kcjs.Na)("CPU implementation for saturate on vectors not implemented yet. Please submit an issue at https://github.com/software-mansion/TypeGPU/issues")}var Pa=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"saturate",signature:e=>({argTypes:[e],returnType:e}),normalImpl:gr,codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`saturate(${e})`});function hr(e){return typeof e=="number"?Math.sign(e):i.sign[e.kind](e)}var ka=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"sign",signature:e=>({argTypes:[e],returnType:e}),normalImpl:hr,codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`sign(${e})`});function vr(e){return typeof e=="number"?Math.sin(e):i.sin[e.kind](e)}var _a=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"sin",signature:e=>({argTypes:[e],returnType:e}),normalImpl:vr,codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`sin(${e})`});function br(e){if(typeof e=="number")return Math.sinh(e);throw new (0, _chunkA5APHF7Kcjs.Na)("CPU implementation for sinh on vectors not implemented yet. Please submit an issue at https://github.com/software-mansion/TypeGPU/issues")}var Wa=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"sinh",signature:e=>({argTypes:[e],returnType:e}),normalImpl:br,codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`sinh(${e})`});function wr(e,t,n){return typeof n=="number"?le(e,t,n):i.smoothstep[n.kind](e,t,n)}var Ua=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"smoothstep",signature:(e,t,n)=>({argTypes:[e,t,n],returnType:n}),normalImpl:wr,codegenImpl:(e,t,n)=>_chunkA5APHF7Kcjs.Ea`smoothstep(${e}, ${t}, ${n})`});function Mr(e){return typeof e=="number"?Math.sqrt(e):i.sqrt[e.kind](e)}var Ba=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"sqrt",signature:e=>({argTypes:[e],returnType:e}),normalImpl:Mr,codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`sqrt(${e})`});function Sr(e,t){if(typeof e=="number")return e<=t?1:0;throw new (0, _chunkA5APHF7Kcjs.Na)("CPU implementation for step on vectors not implemented yet. Please submit an issue at https://github.com/software-mansion/TypeGPU/issues")}var Da=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"step",signature:(...e)=>{let t=_nullishCoalesce(_chunkA5APHF7Kcjs.Ia.call(void 0, e,[_chunkA5APHF7Kcjs.Va,_chunkA5APHF7Kcjs.Wa,_chunkA5APHF7Kcjs.Qa]), () => (e));return{argTypes:t,returnType:t[0]}},normalImpl:Sr,codegenImpl:(e,t)=>_chunkA5APHF7Kcjs.Ea`step(${e}, ${t})`});function Ir(e){if(typeof e=="number")return Math.tan(e);throw new (0, _chunkA5APHF7Kcjs.Na)("CPU implementation for tan on vectors not implemented yet. Please submit an issue at https://github.com/software-mansion/TypeGPU/issues")}var Ra=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"tan",signature:e=>({argTypes:[e],returnType:e}),normalImpl:Ir,codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`tan(${e})`});function Ar(e){return typeof e=="number"?Math.tanh(e):i.tanh[e.kind](e)}var Ea=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"tanh",signature:e=>({argTypes:[e],returnType:e}),normalImpl:Ar,codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`tanh(${e})`}),La= exports.eb =_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"transpose",signature:e=>({argTypes:[e],returnType:e}),normalImpl:"CPU implementation for transpose not implemented yet. Please submit an issue at https://github.com/software-mansion/TypeGPU/issues",codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`transpose(${e})`});var Ga=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"trunc",signature:e=>({argTypes:[e],returnType:e}),normalImpl:"CPU implementation for trunc not implemented yet. Please submit an issue at https://github.com/software-mansion/TypeGPU/issues",codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`trunc(${e})`});var _tinyest = require('tinyest'); var Fr = _interopRequireWildcard(_tinyest);var zr={f:{1:_chunkA5APHF7Kcjs.Va,2:_chunkA5APHF7Kcjs.Ya,3:_chunkA5APHF7Kcjs.bb,4:_chunkA5APHF7Kcjs.gb},h:{1:_chunkA5APHF7Kcjs.Wa,2:_chunkA5APHF7Kcjs.Za,3:_chunkA5APHF7Kcjs.cb,4:_chunkA5APHF7Kcjs.hb},i:{1:_chunkA5APHF7Kcjs.Ua,2:_chunkA5APHF7Kcjs._a,3:_chunkA5APHF7Kcjs.db,4:_chunkA5APHF7Kcjs.ib},u:{1:_chunkA5APHF7Kcjs.Sa,2:_chunkA5APHF7Kcjs.$a,3:_chunkA5APHF7Kcjs.eb,4:_chunkA5APHF7Kcjs.jb},b:{1:_chunkA5APHF7Kcjs.Ra,2:_chunkA5APHF7Kcjs.ab,3:_chunkA5APHF7Kcjs.fb,4:_chunkA5APHF7Kcjs.kb}},$r={vec2f:_chunkA5APHF7Kcjs.Ya,vec2h:_chunkA5APHF7Kcjs.Za,vec2i:_chunkA5APHF7Kcjs._a,vec2u:_chunkA5APHF7Kcjs.$a,"vec2<bool>":_chunkA5APHF7Kcjs.ab,vec3f:_chunkA5APHF7Kcjs.bb,vec3h:_chunkA5APHF7Kcjs.cb,vec3i:_chunkA5APHF7Kcjs.db,vec3u:_chunkA5APHF7Kcjs.eb,"vec3<bool>":_chunkA5APHF7Kcjs.fb,vec4f:_chunkA5APHF7Kcjs.gb,vec4h:_chunkA5APHF7Kcjs.hb,vec4i:_chunkA5APHF7Kcjs.ib,vec4u:_chunkA5APHF7Kcjs.jb,"vec4<bool>":_chunkA5APHF7Kcjs.kb,mat2x2f:ce,mat3x3f:ie,mat4x4f:A};function Wt(e,t){if(_chunkA5APHF7Kcjs.D.call(void 0, e)||_chunkA5APHF7Kcjs.S.call(void 0, e))return _nullishCoalesce(e.propTypes[t], () => (_chunkA5APHF7Kcjs.W));if(e===_chunkA5APHF7Kcjs.Ra||_chunkA5APHF7Kcjs.N.call(void 0, e))return _chunkA5APHF7Kcjs.W;let n=t.length;if(_chunkA5APHF7Kcjs.v.call(void 0, e)&&n>=1&&n<=4){let r=e.type.includes("bool")?"b":e.type[4],a=zr[r][n];if(a)return a}return _chunkA5APHF7Kcjs.W}var nn={mat2x2f:_chunkA5APHF7Kcjs.Ya,mat3x3f:_chunkA5APHF7Kcjs.bb,mat4x4f:_chunkA5APHF7Kcjs.gb};function yt(e){return _chunkA5APHF7Kcjs.C.call(void 0, e)||_chunkA5APHF7Kcjs.R.call(void 0, e)?e.elementType:_chunkA5APHF7Kcjs.v.call(void 0, e)?e.primitive:e.type in nn?nn[e.type]:_chunkA5APHF7Kcjs.W}function xt(e){return e>=2**63||e<-(2**63)?_chunkA5APHF7Kcjs.aa.call(void 0, e,_chunkA5APHF7Kcjs.Qa):Number.isInteger(e)?(Number.isSafeInteger(e)||console.warn(`The integer ${e} exceeds the safe integer range and may have lost precision.`),_chunkA5APHF7Kcjs.aa.call(void 0, e,_chunkA5APHF7Kcjs.Pa)):_chunkA5APHF7Kcjs.aa.call(void 0, e,_chunkA5APHF7Kcjs.Qa)}function Tt(e){return e.type==="abstractFloat"?_chunkA5APHF7Kcjs.Va:e.type==="abstractInt"?_chunkA5APHF7Kcjs.Ua:e}function Xa(e){return e.map(t=>_chunkA5APHF7Kcjs.aa.call(void 0, t.value,Tt(t.dataType)))}function dt(e){if(_chunkA5APHF7Kcjs._.call(void 0, e))return e;let t=_chunkA5APHF7Kcjs.ua.call(void 0, e);return t||(_chunkA5APHF7Kcjs.r.call(void 0, e)||_chunkA5APHF7Kcjs.w.call(void 0, e)?_chunkA5APHF7Kcjs.aa.call(void 0, e,$r[e.kind]):typeof e=="string"||typeof e=="function"||typeof e=="object"||typeof e=="symbol"||typeof e>"u"||e===null?_chunkA5APHF7Kcjs.aa.call(void 0, e,_chunkA5APHF7Kcjs.W):typeof e=="number"?xt(e):typeof e=="boolean"?_chunkA5APHF7Kcjs.aa.call(void 0, e,_chunkA5APHF7Kcjs.Ra):_chunkA5APHF7Kcjs.aa.call(void 0, e,_chunkA5APHF7Kcjs.W))}var{NodeTypeCatalog:g}=Fr,Vr=["==","!=","<","<=",">",">=","<<",">>","+","-","*","/","%","|","^","&","&&","||"],Cr=["&&","||","==","!=","<","<=",">",">="],Pr=["vec2f","vec3f","vec4f","vec2h","vec3h","vec4h","vec2i","vec3i","vec4i","vec2u","vec3u","vec4u","mat2x2f","mat3x3f","mat4x4f"],rn= exports.gb ={add:kt,sub:De,mul:tt,div:_t};function sn(e,t,n){return n?Cr.includes(t)?_chunkA5APHF7Kcjs.Ra:t==="="?n:e:t==="!"||t==="~"?_chunkA5APHF7Kcjs.Ra:e}var kr={"+":kt[_chunkA5APHF7Kcjs.a].gpuImpl,"-":De[_chunkA5APHF7Kcjs.a].gpuImpl,"*":tt[_chunkA5APHF7Kcjs.a].gpuImpl,"/":_t[_chunkA5APHF7Kcjs.a].gpuImpl,"**":tn[_chunkA5APHF7Kcjs.a].gpuImpl},Ut=class{#e=void 0;initGenerator(t){this.#e=t}get ctx(){if(!this.#e)throw new Error("WGSL Generator has not yet been initialized. Please call initialize(ctx) before using the generator.");return this.#e}block([t,n]){this.ctx.pushBlockScope();try{this.ctx.indent();let r=n.map(a=>this.statement(a)).join(`
2
- `);return this.ctx.dedent(),`{
3
- ${r}
4
- ${this.ctx.pre}}`}finally{this.ctx.popBlockScope()}}blockVariable(t,n){let r=_chunkA5APHF7Kcjs.aa.call(void 0, this.ctx.makeNameValid(t),n);return this.ctx.defineVariable(t,r),r}identifier(t){if(!t)throw new Error("Cannot resolve an empty identifier");let n=this.ctx.getById(t);if(!n)throw new Error(`Identifier ${t} not found`);return n}typedExpression(t,n){let r=this.ctx.expectedType;this.ctx.expectedType=n;try{let a=this.expression(t);return _chunkA5APHF7Kcjs.Ka.call(void 0, a,n)}finally{this.ctx.expectedType=r}}expression(t){if(typeof t=="string")return this.identifier(t);if(typeof t=="boolean")return _chunkA5APHF7Kcjs.aa.call(void 0, t,_chunkA5APHF7Kcjs.Ra);if(t[0]===g.logicalExpr||t[0]===g.binaryExpr||t[0]===g.assignmentExpr){let[n,r,a,s]=t,c=this.expression(r),p=this.expression(s),T=kr[a];if(T)return T(c,p);let S=t[0]===g.assignmentExpr?c.dataType.type==="ptr"?[c.dataType.inner]:[c.dataType]:void 0,[$,U]=_nullishCoalesce(_chunkA5APHF7Kcjs.Ja.call(void 0, [c,p],S), () => ([c,p])),nt=this.ctx.resolve($.value,$.dataType).value,Bt=this.ctx.resolve(U.value,U.dataType).value,an=sn($.dataType,a,U.dataType);return _chunkA5APHF7Kcjs.aa.call(void 0, Vr.includes(a)?`(${nt} ${a} ${Bt})`:`${nt} ${a} ${Bt}`,an)}if(t[0]===g.postUpdate){let[n,r,a]=t,s=this.expression(a),c=this.ctx.resolve(s.value).value;return _chunkA5APHF7Kcjs.aa.call(void 0, `${c}${r}`,s.dataType)}if(t[0]===g.unaryExpr){let[n,r,a]=t,s=this.expression(a),c=this.ctx.resolve(s.value).value,p=sn(s.dataType,r);return _chunkA5APHF7Kcjs.aa.call(void 0, `${r}${c}`,p)}if(t[0]===g.memberAccess){let[n,r,a]=t,s=this.expression(r);if(s.value===console)return _chunkA5APHF7Kcjs.aa.call(void 0, new (0, _chunkA5APHF7Kcjs.Z)(a),_chunkA5APHF7Kcjs.W);if(Pr.includes(s.dataType.type)&&a in rn)return{value:new (0, _chunkA5APHF7Kcjs.X)(a,s,rn[a][_chunkA5APHF7Kcjs.a].gpuImpl),dataType:_chunkA5APHF7Kcjs.W};if(s.dataType.type==="unknown"){let c=s.value[a];return dt(c)}return _chunkA5APHF7Kcjs.E.call(void 0, s.dataType)?_chunkA5APHF7Kcjs.aa.call(void 0, `(*${this.ctx.resolve(s.value).value}).${a}`,Wt(s.dataType.inner,a)):_chunkA5APHF7Kcjs.C.call(void 0, s.dataType)&&a==="length"?s.dataType.elementCount===0?_chunkA5APHF7Kcjs.aa.call(void 0, `arrayLength(&${this.ctx.resolve(s.value).value})`,_chunkA5APHF7Kcjs.Sa):_chunkA5APHF7Kcjs.aa.call(void 0, String(s.dataType.elementCount),_chunkA5APHF7Kcjs.Pa):_chunkA5APHF7Kcjs.z.call(void 0, s.dataType)&&a==="columns"?_chunkA5APHF7Kcjs.aa.call(void 0, new (0, _chunkA5APHF7Kcjs.Y)(s),_chunkA5APHF7Kcjs.W):_chunkA5APHF7Kcjs.v.call(void 0, s.dataType)&&_chunkA5APHF7Kcjs.r.call(void 0, s.value)?dt(s.value[a]):_chunkA5APHF7Kcjs.aa.call(void 0, `${this.ctx.resolve(s.value).value}.${a}`,Wt(s.dataType,a))}if(t[0]===g.indexAccess){let[n,r,a]=t,s=this.expression(r),c=this.expression(a),p=this.ctx.resolve(c.value,c.dataType).value;if(s.value instanceof _chunkA5APHF7Kcjs.Y)return _chunkA5APHF7Kcjs.aa.call(void 0, _chunkA5APHF7Kcjs.Ea`${s.value.matrix}[${p}]`,yt(s.value.matrix.dataType));let T=this.ctx.resolve(s.value,s.dataType).value;if(s.dataType.type==="unknown"){if(Array.isArray(a)&&a[0]===g.numericLiteral)return dt(s.value[a[1]]);throw new Error(`Cannot index value ${T} of unknown type with index ${p}`)}if(_chunkA5APHF7Kcjs.z.call(void 0, s.dataType))throw new Error("The only way of accessing matrix elements in TGSL is through the 'columns' property.");return _chunkA5APHF7Kcjs.E.call(void 0, s.dataType)?_chunkA5APHF7Kcjs.aa.call(void 0, `(*${T})[${p}]`,yt(s.dataType.inner)):_chunkA5APHF7Kcjs.aa.call(void 0, `${T}[${p}]`,_chunkA5APHF7Kcjs.V.call(void 0, s.dataType)?yt(s.dataType):_chunkA5APHF7Kcjs.W)}if(t[0]===g.numericLiteral){let n=typeof t[1]=="string"?xt(Wr(t[1])):xt(t[1]);if(!n)throw new Error(`Invalid numeric literal ${t[1]}`);return n}if(t[0]===g.call){let[n,r,a]=t,s=this.expression(r);if(_chunkA5APHF7Kcjs.D.call(void 0, s.value)||_chunkA5APHF7Kcjs.C.call(void 0, s.value)){if(a.length>1)throw new (0, _chunkA5APHF7Kcjs.la)("Array and struct schemas should always be called with at most 1 argument");if(!a[0])return _chunkA5APHF7Kcjs.aa.call(void 0, `${this.ctx.resolve(s.value).value}()`,s.value);let p=this.typedExpression(a[0],s.value);return _chunkA5APHF7Kcjs.aa.call(void 0, this.ctx.resolve(p.value,s.value).value,s.value)}if(s.value instanceof _chunkA5APHF7Kcjs.X){if(!a[0])throw new (0, _chunkA5APHF7Kcjs.la)(`An infix operator '${s.value.name}' was called without any arguments`);let p=this.expression(a[0]);return s.value.operator(s.value.lhs,p)}if(!_chunkA5APHF7Kcjs.h.call(void 0, s.value)){let p=a.map(S=>this.expression(S)),T=this.ctx.shelllessRepo.get(s.value,p);if(T)return this.ctx.withResetIndentLevel(()=>{let S=this.ctx.resolve(T);return _chunkA5APHF7Kcjs.aa.call(void 0, _chunkA5APHF7Kcjs.Ea`${S.value}(${p})`,S.dataType)});throw new Error(`Function '${_nullishCoalesce(_chunkA5APHF7Kcjs.j.call(void 0, s.value), () => (String(s.value)))}' is not marked with the 'use gpu' directive and cannot be used in a shader`)}let c=_nullishCoalesce(_optionalChain([s, 'access', _2 => _2.value, 'access', _3 => _3[_chunkA5APHF7Kcjs.a], 'optionalAccess', _4 => _4.argConversionHint]), () => ("keep"));try{let p;if(Array.isArray(c))p=a.map((S,$)=>{let U=c[$];if(!U)throw new (0, _chunkA5APHF7Kcjs.la)(`Function '${_chunkA5APHF7Kcjs.j.call(void 0, s.value)}' was called with too many arguments`);return this.typedExpression(S,U)});else{let S=a.map($=>this.expression($));c==="keep"?p=S:c==="unify"?p=_nullishCoalesce(_chunkA5APHF7Kcjs.Ja.call(void 0, S), () => (S)):p=c(...S).map(($,U)=>[$,S[U]]).map(([$,U])=>_chunkA5APHF7Kcjs.Ka.call(void 0, U,$))}if(s.value instanceof _chunkA5APHF7Kcjs.Z)return this.ctx.generateLog(s.value.op,p);let T=s.value(...p);if(!_chunkA5APHF7Kcjs._.call(void 0, T))throw new Error("Functions running in codegen mode must return snippets");return T}catch(p){throw new (0, _chunkA5APHF7Kcjs.ca)(p,[{toString:()=>_chunkA5APHF7Kcjs.j.call(void 0, s.value)}])}}if(t[0]===g.objectExpr){let n=t[1],r=this.ctx.expectedType;if(!r||!_chunkA5APHF7Kcjs.D.call(void 0, r))throw new (0, _chunkA5APHF7Kcjs.la)(`No target type could be inferred for object with keys [${Object.keys(n).join(", ")}], please wrap the object in the corresponding schema.`);let a=Object.fromEntries(Object.entries(r.propTypes).map(([c,p])=>{let T=n[c];if(T===void 0)throw new (0, _chunkA5APHF7Kcjs.la)(`Missing property ${c} in object literal for struct ${r}`);let S=this.typedExpression(T,p);return[c,S]})),s=_chunkA5APHF7Kcjs.La.call(void 0, r,a);return _chunkA5APHF7Kcjs.aa.call(void 0, _chunkA5APHF7Kcjs.Ea`${this.ctx.resolve(r).value}(${s})`,r)}if(t[0]===g.arrayExpr){let[n,r]=t,a=this.ctx.expectedType,s,c;if(_chunkA5APHF7Kcjs.C.call(void 0, a)){if(s=a.elementType,c=r.map(T=>this.typedExpression(T,s)),c.length!==a.elementCount)throw new (0, _chunkA5APHF7Kcjs.la)(`Cannot create value of type '${a}' from an array of length: ${c.length}`)}else{let T=r.map($=>this.expression($));if(T.length===0)throw new (0, _chunkA5APHF7Kcjs.la)("Cannot infer the type of an empty array literal.");let S=_chunkA5APHF7Kcjs.Ja.call(void 0, T);if(!S)throw new (0, _chunkA5APHF7Kcjs.la)("The given values cannot be automatically converted to a common type. Consider wrapping the array in an appropriate schema");c=S,s=Tt(_optionalChain([c, 'access', _5 => _5[0], 'optionalAccess', _6 => _6.dataType]))}let p=`array<${this.ctx.resolve(s).value}, ${c.length}>`;return _chunkA5APHF7Kcjs.aa.call(void 0, _chunkA5APHF7Kcjs.Ea`${p}(${c})`,_chunkA5APHF7Kcjs.uc[_chunkA5APHF7Kcjs.a].jsImpl(s,c.length))}if(t[0]===g.stringLiteral)return _chunkA5APHF7Kcjs.aa.call(void 0, t[1],_chunkA5APHF7Kcjs.W);if(t[0]===g.preUpdate)throw new Error("Cannot use pre-updates in TGSL.");_r(t)}functionDefinition(t){return this.block(t)}statement(t){if(typeof t=="string")return`${this.ctx.pre}${this.ctx.resolve(this.identifier(t).value).value};`;if(typeof t=="boolean")return`${this.ctx.pre}${t?"true":"false"};`;if(t[0]===g.return){let n=t[1];if(n!==void 0){let r=this.ctx.topFunctionReturnType,a=r?this.typedExpression(n,r):this.expression(n);return _chunkA5APHF7Kcjs.ba.call(void 0, a.dataType.type!=="unknown","Return type should be known"),this.ctx.reportReturnType(a.dataType),_chunkA5APHF7Kcjs.Ea`${this.ctx.pre}return ${a};`}return`${this.ctx.pre}return;`}if(t[0]===g.if){let[n,r,a,s]=t,c=this.typedExpression(r,_chunkA5APHF7Kcjs.Ra),p=c.value===!1?void 0:this.block(ft(a)),T=c.value===!0||!s?void 0:this.block(ft(s));return c.value===!0?`${this.ctx.pre}${p}`:c.value===!1?T?`${this.ctx.pre}${T}`:"":T?_chunkA5APHF7Kcjs.Ea`\
5
- ${this.ctx.pre}if (${c}) ${p}
6
- ${this.ctx.pre}else ${T}`:_chunkA5APHF7Kcjs.Ea`${this.ctx.pre}if (${c}) ${p}`}if(t[0]===g.let||t[0]===g.const){let[n,r,a]=t,s=a!==void 0?this.expression(a):void 0;if(!s)throw new Error(`Cannot create variable '${r}' without an initial value.`);if(_chunkA5APHF7Kcjs.Q.call(void 0, s.dataType))throw new Error(`Cannot create variable '${r}' with loose data type.`);let c=this.blockVariable(r,Tt(s.dataType));return _chunkA5APHF7Kcjs.Fa`${this.ctx.pre}var ${c.value} = ${s};`}if(t[0]===g.block)return this.block(t);if(t[0]===g.for){let[n,r,a,s,c]=t,[p,T,S]=this.ctx.withResetIndentLevel(()=>[r?this.statement(r):void 0,a?this.typedExpression(a,_chunkA5APHF7Kcjs.Ra):void 0,s?this.statement(s):void 0]),$=p?p.slice(0,-1):"",U=S?S.slice(0,-1):"",nt=this.block(ft(c));return _chunkA5APHF7Kcjs.Ea`${this.ctx.pre}for (${$}; ${T}; ${U}) ${nt}`}if(t[0]===g.while){let[n,r,a]=t,s=this.typedExpression(r,_chunkA5APHF7Kcjs.Ra),c=this.ctx.resolve(s.value).value,p=this.block(ft(a));return`${this.ctx.pre}while (${c}) ${p}`}return t[0]===g.continue?`${this.ctx.pre}continue;`:t[0]===g.break?`${this.ctx.pre}break;`:`${this.ctx.pre}${this.ctx.resolve(this.expression(t).value).value};`}};function _r(e){throw new Error(`'${_chunkA5APHF7Kcjs.mb.call(void 0, e)}' was not handled by the WGSL generator.`)}function Wr(e){return/^0x[0-9a-f]+$/i.test(e)?Number.parseInt(e):/^0b[01]+$/i.test(e)?Number.parseInt(e.slice(2),2):Number.parseFloat(e)}function ft(e){return typeof e!="object"||e[0]!==g.block?[g.block,[e]]:e}var Ur=new Ut,xo= exports.hb =Ur;exports.a = Ze; exports.b = on; exports.c = un; exports.d = cn; exports.e = mn; exports.f = pn; exports.g = yn; exports.h = xn; exports.i = Tn; exports.j = ce; exports.k = ie; exports.l = A; exports.m = Gr; exports.n = Wt; exports.o = xt; exports.p = Tt; exports.q = Xa; exports.r = dt; exports.s = Kr; exports.t = jr; exports.u = qr; exports.v = Zr; exports.w = Yr; exports.x = it; exports.y = dn; exports.z = fn; exports.A = gn; exports.B = hn; exports.C = vn; exports.D = bn; exports.E = wn; exports.F = Mn; exports.G = Sn; exports.H = In; exports.I = An; exports.J = Jr; exports.K = es; exports.L = ts; exports.M = ns; exports.N = rs; exports.O = ss; exports.P = as; exports.Q = os; exports.R = is; exports.S = X; exports.T = Y; exports.U = i; exports.V = kt; exports.W = De; exports.X = tt; exports.Y = _t; exports.Z = Is; exports._ = As; exports.$ = Rs; exports.aa = Es; exports.ba = Ls; exports.ca = Gs; exports.da = Ns; exports.ea = Os; exports.fa = Ks; exports.ga = js; exports.ha = qs; exports.ia = Zs; exports.ja = Hs; exports.ka = Qs; exports.la = Xs; exports.ma = Ys; exports.na = Js; exports.oa = ea; exports.pa = ta; exports.qa = na; exports.ra = ra; exports.sa = Jn; exports.ta = sa; exports.ua = aa; exports.va = oa; exports.wa = ua; exports.xa = ca; exports.ya = ia; exports.za = la; exports.Aa = ma; exports.Ba = pa; exports.Ca = ya; exports.Da = xa; exports.Ea = Ta; exports.Fa = da; exports.Ga = fa; exports.Ha = ga; exports.Ia = cr; exports.Ja = ha; exports.Ka = va; exports.La = ba; exports.Ma = wa; exports.Na = Ma; exports.Oa = Sa; exports.Pa = Ia; exports.Qa = tn; exports.Ra = Aa; exports.Sa = za; exports.Ta = $a; exports.Ua = Fa; exports.Va = Va; exports.Wa = Ca; exports.Xa = Pa; exports.Ya = ka; exports.Za = _a; exports._a = Wa; exports.$a = Ua; exports.ab = Ba; exports.bb = Da; exports.cb = Ra; exports.db = Ea; exports.eb = La; exports.fb = Ga; exports.gb = rn; exports.hb = xo;
7
- //# sourceMappingURL=chunk-LL6NPRFE.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/Users/iwo/Projects/wigsill/packages/typegpu/dist/chunk-LL6NPRFE.cjs","../src/data/matrix.ts","../src/tgsl/wgslGenerator.ts"],"names":["MatBase","createMatSchema","options","construct","createDualImpl","args","elements","arg","i","snip","stitch"],"mappings":"AAAA,qlCAAqjB,ICmC/hBA,EAAAA,CAAf,KAA2D,CAOlE,CAAA,CAcA,SAASC,EAAAA,CAKPC,CAAAA,CAC6E,CAC7E,IAAMC,CAAAA,CAAYC,kCAAAA,CAEhB,GAAIC,CAAAA,CAAAA,EAA6C,CAC/C,IAAMC,CAAAA,CAAqB,CAAC,CAAA,CAE5B,GAAA,CAAA,IAAWC,EAAAA,GAAOF,CAAAA,CAChB,EAAA,CAAI,OAAOE,CAAAA,EAAQ,QAAA,CACjBD,CAAAA,CAAS,IAAA,CAAKC,CAAG,CAAA,CAAA,KAEjB,GAAA,CAAA,IAASC,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAID,CAAAA,CAAI,MAAA,CAAQ,EAAEC,CAAAA,CAChCF,CAAAA,CAAS,IAAA,CAAKC,CAAAA,CAAIC,CAAC,CAAW,CAAA,CAKpC,EAAA,CACEF,CAAAA,CAAS,MAAA,GAAW,CAAA,EACpBA,CAAAA,CAAS,MAAA,GAAWJ,CAAAA,CAAQ,OAAA,CAAUA,CAAAA,CAAQ,IAAA,CAE9C,MAAM,IAAI,KAAA,CACR,CAAA,CAAA,EAAIA,CAAAA,CAAQ,IAAI,CAAA,sDAAA,CAClB,CAAA,CAGF,GAAA,CAAA,IAASM,CAAAA,CAAIF,CAAAA,CAAS,MAAA,CAAQE,CAAAA,CAAIN,CAAAA,CAAQ,OAAA,CAAUA,CAAAA,CAAQ,IAAA,CAAM,EAAEM,CAAAA,CAClEF,CAAAA,CAAS,IAAA,CAAK,CAAC,CAAA,CAGjB,OAAO,IAAIJ,CAAAA,CAAQ,OAAA,CAAQ,GAAGI,CAAQ,CACxC,CAAA,CAEA,CAAA,GAAID,CAAAA,CAAAA,EACFI,kCAAAA,oBAAKC,CAAAA,EAAAA;AC2DE;AACP;AAsFoC;AAidG;AA6DjB","file":"/Users/iwo/Projects/wigsill/packages/typegpu/dist/chunk-LL6NPRFE.cjs","sourcesContent":[null,"import { createDualImpl } from '../core/function/dualImpl.ts';\nimport { stitch } from '../core/resolve/stitch.ts';\nimport { $repr } from '../shared/symbols.ts';\nimport { $internal, $resolve } from '../shared/symbols.ts';\nimport type { SelfResolvable } from '../types.ts';\nimport type { AnyData } from './dataTypes.ts';\nimport { type ResolvedSnippet, snip } from './snippet.ts';\nimport { vec2f, vec3f, vec4f } from './vector.ts';\nimport type {\n m2x2f,\n m3x3f,\n m4x4f,\n mat2x2,\n Mat2x2f,\n mat3x3,\n Mat3x3f,\n mat4x4,\n Mat4x4f,\n NumberArrayView,\n v2f,\n v3f,\n v4f,\n VecKind,\n} from './wgslTypes.ts';\n\n// --------------\n// Implementation\n// --------------\n\ntype vBase = {\n kind: VecKind;\n length: number;\n [n: number]: number;\n};\n\nexport abstract class MatBase<TColumn> implements NumberArrayView {\n abstract readonly [$internal]: true;\n abstract readonly columns: readonly TColumn[];\n\n abstract readonly length: number;\n abstract [Symbol.iterator](): Iterator<number>;\n [n: number]: number;\n}\n\ninterface MatSchemaOptions<TType extends string, ColumnType> {\n type: TType;\n rows: 2 | 3 | 4;\n columns: 2 | 3 | 4;\n MatImpl: new (...args: number[]) => MatBase<ColumnType>;\n}\n\ntype MatConstructor<\n ValueType extends MatBase<ColumnType>,\n ColumnType extends vBase,\n> = (...args: (number | ColumnType)[]) => ValueType;\n\nfunction createMatSchema<\n TType extends string,\n ValueType extends MatBase<ColumnType>,\n ColumnType extends vBase,\n>(\n options: MatSchemaOptions<TType, ColumnType>,\n): { type: TType; [$repr]: ValueType } & MatConstructor<ValueType, ColumnType> {\n const construct = createDualImpl(\n // CPU implementation\n (...args: (number | ColumnType)[]): ValueType => {\n const elements: number[] = [];\n\n for (const arg of args) {\n if (typeof arg === 'number') {\n elements.push(arg);\n } else {\n for (let i = 0; i < arg.length; ++i) {\n elements.push(arg[i] as number);\n }\n }\n }\n\n if (\n elements.length !== 0 &&\n elements.length !== options.columns * options.rows\n ) {\n throw new Error(\n `'${options.type}' constructor called with invalid number of arguments.`,\n );\n }\n\n for (let i = elements.length; i < options.columns * options.rows; ++i) {\n elements.push(0);\n }\n\n return new options.MatImpl(...elements) as ValueType;\n },\n // CODEGEN implementation\n (...args) =>\n snip(stitch`${options.type}(${args})`, schema as unknown as AnyData),\n options.type,\n );\n\n const schema = Object.assign(construct, {\n type: options.type,\n identity: identityFunctions[options.columns],\n translation: options.columns === 4 ? translation4 : undefined,\n scaling: options.columns === 4 ? scaling4 : undefined,\n rotationX: options.columns === 4 ? rotationX4 : undefined,\n rotationY: options.columns === 4 ? rotationY4 : undefined,\n rotationZ: options.columns === 4 ? rotationZ4 : undefined,\n }) as unknown as {\n type: TType;\n [$repr]: ValueType;\n } & MatConstructor<ValueType, ColumnType>;\n\n return schema;\n}\n\nabstract class mat2x2Impl<TColumn extends v2f> extends MatBase<TColumn>\n implements mat2x2<TColumn>, SelfResolvable {\n public readonly [$internal] = true;\n public readonly columns: readonly [TColumn, TColumn];\n public readonly length = 4;\n public abstract readonly kind: string;\n [n: number]: number;\n\n constructor(...elements: number[]) {\n super();\n this.columns = [\n this.makeColumn(elements[0] as number, elements[1] as number),\n this.makeColumn(elements[2] as number, elements[3] as number),\n ];\n }\n\n abstract makeColumn(e0: number, e1: number): TColumn;\n\n get 0() {\n return this.columns[0].x;\n }\n\n get 1() {\n return this.columns[0].y;\n }\n\n get 2() {\n return this.columns[1].x;\n }\n\n get 3() {\n return this.columns[1].y;\n }\n\n set 0(value: number) {\n this.columns[0].x = value;\n }\n\n set 1(value: number) {\n this.columns[0].y = value;\n }\n\n set 2(value: number) {\n this.columns[1].x = value;\n }\n\n set 3(value: number) {\n this.columns[1].y = value;\n }\n\n *[Symbol.iterator]() {\n yield this[0];\n yield this[1];\n yield this[2];\n yield this[3];\n }\n\n [$resolve](): ResolvedSnippet {\n return snip(\n `${this.kind}(${\n Array.from({ length: this.length })\n .map((_, i) => this[i])\n .join(', ')\n })`,\n mat2x2f,\n );\n }\n\n toString() {\n return this[$resolve]().value;\n }\n}\n\nclass mat2x2fImpl extends mat2x2Impl<v2f> {\n public readonly kind = 'mat2x2f';\n\n makeColumn(e0: number, e1: number): v2f {\n return vec2f(e0, e1);\n }\n}\n\nabstract class mat3x3Impl<TColumn extends v3f> extends MatBase<TColumn>\n implements mat3x3<TColumn>, SelfResolvable {\n public readonly [$internal] = true;\n public readonly columns: readonly [TColumn, TColumn, TColumn];\n public readonly length = 12;\n public abstract readonly kind: string;\n [n: number]: number;\n\n constructor(...elements: number[]) {\n super();\n this.columns = [\n this.makeColumn(\n elements[0] as number,\n elements[1] as number,\n elements[2] as number,\n ),\n this.makeColumn(\n elements[3] as number,\n elements[4] as number,\n elements[5] as number,\n ),\n this.makeColumn(\n elements[6] as number,\n elements[7] as number,\n elements[8] as number,\n ),\n ];\n }\n\n abstract makeColumn(x: number, y: number, z: number): TColumn;\n\n get 0() {\n return this.columns[0].x;\n }\n\n get 1() {\n return this.columns[0].y;\n }\n\n get 2() {\n return this.columns[0].z;\n }\n\n get 3() {\n return 0;\n }\n\n get 4() {\n return this.columns[1].x;\n }\n\n get 5() {\n return this.columns[1].y;\n }\n\n get 6() {\n return this.columns[1].z;\n }\n\n get 7() {\n return 0;\n }\n\n get 8() {\n return this.columns[2].x;\n }\n\n get 9() {\n return this.columns[2].y;\n }\n\n get 10() {\n return this.columns[2].z;\n }\n\n get 11() {\n return 0;\n }\n\n set 0(value: number) {\n this.columns[0].x = value;\n }\n\n set 1(value: number) {\n this.columns[0].y = value;\n }\n\n set 2(value: number) {\n this.columns[0].z = value;\n }\n\n set 3(_: number) {}\n\n set 4(value: number) {\n this.columns[1].x = value;\n }\n\n set 5(value: number) {\n this.columns[1].y = value;\n }\n\n set 6(value: number) {\n this.columns[1].z = value;\n }\n\n set 7(_: number) {}\n\n set 8(value: number) {\n this.columns[2].x = value;\n }\n\n set 9(value: number) {\n this.columns[2].y = value;\n }\n\n set 10(value: number) {\n this.columns[2].z = value;\n }\n\n set 11(_: number) {}\n\n *[Symbol.iterator]() {\n for (let i = 0; i < 12; i++) {\n yield this[i] as number;\n }\n }\n\n [$resolve](): ResolvedSnippet {\n return snip(\n `${this.kind}(${this[0]}, ${this[1]}, ${this[2]}, ${this[4]}, ${\n this[5]\n }, ${this[6]}, ${this[8]}, ${this[9]}, ${this[10]})`,\n mat3x3f,\n );\n }\n\n toString() {\n return this[$resolve]().value;\n }\n}\n\nclass mat3x3fImpl extends mat3x3Impl<v3f> {\n public readonly kind = 'mat3x3f';\n makeColumn(x: number, y: number, z: number): v3f {\n return vec3f(x, y, z);\n }\n}\n\nabstract class mat4x4Impl<TColumn extends v4f> extends MatBase<TColumn>\n implements mat4x4<TColumn>, SelfResolvable {\n public readonly [$internal] = true;\n public readonly columns: readonly [TColumn, TColumn, TColumn, TColumn];\n public abstract readonly kind: string;\n\n constructor(...elements: number[]) {\n super();\n this.columns = [\n this.makeColumn(\n elements[0] as number,\n elements[1] as number,\n elements[2] as number,\n elements[3] as number,\n ),\n this.makeColumn(\n elements[4] as number,\n elements[5] as number,\n elements[6] as number,\n elements[7] as number,\n ),\n this.makeColumn(\n elements[8] as number,\n elements[9] as number,\n elements[10] as number,\n elements[11] as number,\n ),\n this.makeColumn(\n elements[12] as number,\n elements[13] as number,\n elements[14] as number,\n elements[15] as number,\n ),\n ];\n }\n\n abstract makeColumn(x: number, y: number, z: number, w: number): TColumn;\n\n public readonly length = 16;\n [n: number]: number;\n\n get 0() {\n return this.columns[0].x;\n }\n\n get 1() {\n return this.columns[0].y;\n }\n\n get 2() {\n return this.columns[0].z;\n }\n\n get 3() {\n return this.columns[0].w;\n }\n\n get 4() {\n return this.columns[1].x;\n }\n\n get 5() {\n return this.columns[1].y;\n }\n\n get 6() {\n return this.columns[1].z;\n }\n\n get 7() {\n return this.columns[1].w;\n }\n\n get 8() {\n return this.columns[2].x;\n }\n\n get 9() {\n return this.columns[2].y;\n }\n\n get 10() {\n return this.columns[2].z;\n }\n\n get 11() {\n return this.columns[2].w;\n }\n\n get 12() {\n return this.columns[3].x;\n }\n\n get 13() {\n return this.columns[3].y;\n }\n\n get 14() {\n return this.columns[3].z;\n }\n\n get 15() {\n return this.columns[3].w;\n }\n\n set 0(value: number) {\n this.columns[0].x = value;\n }\n\n set 1(value: number) {\n this.columns[0].y = value;\n }\n\n set 2(value: number) {\n this.columns[0].z = value;\n }\n\n set 3(value: number) {\n this.columns[0].w = value;\n }\n\n set 4(value: number) {\n this.columns[1].x = value;\n }\n\n set 5(value: number) {\n this.columns[1].y = value;\n }\n\n set 6(value: number) {\n this.columns[1].z = value;\n }\n\n set 7(value: number) {\n this.columns[1].w = value;\n }\n\n set 8(value: number) {\n this.columns[2].x = value;\n }\n\n set 9(value: number) {\n this.columns[2].y = value;\n }\n\n set 10(value: number) {\n this.columns[2].z = value;\n }\n\n set 11(value: number) {\n this.columns[2].w = value;\n }\n\n set 12(value: number) {\n this.columns[3].x = value;\n }\n\n set 13(value: number) {\n this.columns[3].y = value;\n }\n\n set 14(value: number) {\n this.columns[3].z = value;\n }\n\n set 15(value: number) {\n this.columns[3].w = value;\n }\n\n *[Symbol.iterator]() {\n for (let i = 0; i < 16; i++) {\n yield this[i] as number;\n }\n }\n\n [$resolve](): ResolvedSnippet {\n return snip(\n `${this.kind}(${\n Array.from({ length: this.length })\n .map((_, i) => this[i])\n .join(', ')\n })`,\n mat4x4f,\n );\n }\n\n toString() {\n return this[$resolve]().value;\n }\n}\n\nclass mat4x4fImpl extends mat4x4Impl<v4f> {\n public readonly kind = 'mat4x4f';\n\n makeColumn(x: number, y: number, z: number, w: number): v4f {\n return vec4f(x, y, z, w);\n }\n}\n\n// ----------\n// Matrix ops\n// ----------\n\n/**\n * Returns a 2-by-2 identity matrix.\n * @returns {m2x2f} The result matrix.\n */\nexport const identity2 = createDualImpl(\n // CPU implementation\n () => mat2x2f(1, 0, 0, 1),\n // CODEGEN implementation\n () => snip('mat2x2f(1, 0, 0, 1)', mat2x2f),\n 'identity2',\n);\n\n/**\n * Returns a 3-by-3 identity matrix.\n * @returns {m3x3f} The result matrix.\n */\nexport const identity3 = createDualImpl(\n // CPU implementation\n () => mat3x3f(1, 0, 0, 0, 1, 0, 0, 0, 1),\n // CODEGEN implementation\n () => snip('mat3x3f(1, 0, 0, 0, 1, 0, 0, 0, 1)', mat3x3f),\n 'identity3',\n);\n\n/**\n * Returns a 4-by-4 identity matrix.\n * @returns {m4x4f} The result matrix.\n */\nexport const identity4 = createDualImpl(\n // CPU implementation\n () => mat4x4f(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1),\n // CODEGEN implementation\n () =>\n snip('mat4x4f(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)', mat4x4f),\n 'identity4',\n);\n\nconst identityFunctions = {\n 2: identity2,\n 3: identity3,\n 4: identity4,\n};\n\n/**\n * Creates a 4-by-4 matrix which translates by the given vector v.\n * @param {v3f} vector - The vector by which to translate.\n * @returns {m4x4f} The translation matrix.\n */\nexport const translation4 = createDualImpl(\n // CPU implementation\n (vector: v3f) =>\n // deno-fmt-ignore\n mat4x4f(\n 1, 0, 0, 0,\n 0, 1, 0, 0,\n 0, 0, 1, 0,\n vector.x, vector.y, vector.z, 1,\n ),\n // CODEGEN implementation\n (v) =>\n snip(\n stitch`mat4x4f(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, ${v}.x, ${v}.y, ${v}.z, 1)`,\n mat4x4f,\n ),\n 'translation4',\n);\n\n/**\n * Creates a 4-by-4 matrix which scales in each dimension by an amount given by the corresponding entry in the given vector.\n * @param {v3f} vector - A vector of three entries specifying the factor by which to scale in each dimension.\n * @returns {m4x4f} The scaling matrix.\n */\nexport const scaling4 = createDualImpl(\n // CPU implementation\n (vector: v3f) =>\n // deno-fmt-ignore\n mat4x4f(\n vector.x, 0, 0, 0,\n 0, vector.y, 0, 0,\n 0, 0, vector.z, 0,\n 0, 0, 0, 1,\n ),\n // CODEGEN implementation\n (v) =>\n snip(\n stitch`mat4x4f(${v}.x, 0, 0, 0, 0, ${v}.y, 0, 0, 0, 0, ${v}.z, 0, 0, 0, 0, 1)`,\n mat4x4f,\n ),\n 'scaling4',\n);\n\n/**\n * Creates a 4-by-4 matrix which rotates around the x-axis by the given angle.\n * @param {number} angle - The angle by which to rotate (in radians).\n * @returns {m4x4f} The rotation matrix.\n */\nexport const rotationX4 = createDualImpl(\n // CPU implementation\n (a: number) =>\n // deno-fmt-ignore\n mat4x4f(\n 1, 0, 0, 0,\n 0, Math.cos(a), Math.sin(a), 0,\n 0, -Math.sin(a), Math.cos(a), 0,\n 0, 0, 0, 1,\n ),\n // CODEGEN implementation\n (a) =>\n snip(\n stitch`mat4x4f(1, 0, 0, 0, 0, cos(${a}), sin(${a}), 0, 0, -sin(${a}), cos(${a}), 0, 0, 0, 0, 1)`,\n mat4x4f,\n ),\n 'rotationX4',\n);\n\n/**\n * Creates a 4-by-4 matrix which rotates around the y-axis by the given angle.\n * @param {number} angle - The angle by which to rotate (in radians).\n * @returns {m4x4f} The rotation matrix.\n */\nexport const rotationY4 = createDualImpl(\n // CPU implementation\n (a: number) =>\n // deno-fmt-ignore\n mat4x4f(\n Math.cos(a), 0, -Math.sin(a), 0,\n 0, 1, 0, 0,\n Math.sin(a), 0, Math.cos(a), 0,\n 0, 0, 0, 1,\n ),\n // CODEGEN implementation\n (a) =>\n snip(\n stitch`mat4x4f(cos(${a}), 0, -sin(${a}), 0, 0, 1, 0, 0, sin(${a}), 0, cos(${a}), 0, 0, 0, 0, 1)`,\n mat4x4f,\n ),\n 'rotationY4',\n);\n\n/**\n * Creates a 4-by-4 matrix which rotates around the z-axis by the given angle.\n * @param {number} angle - The angle by which to rotate (in radians).\n * @returns {m4x4f} The rotation matrix.\n */\nexport const rotationZ4 = createDualImpl(\n // CPU implementation\n (a: number) =>\n // deno-fmt-ignore\n mat4x4f(\n Math.cos(a), Math.sin(a), 0, 0,\n -Math.sin(a), Math.cos(a), 0, 0,\n 0, 0, 1, 0,\n 0, 0, 0, 1,\n ),\n // CODEGEN implementation\n (a) =>\n snip(\n stitch`mat4x4f(cos(${a}), sin(${a}), 0, 0, -sin(${a}), cos(${a}), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)`,\n mat4x4f,\n ),\n 'rotationZ4',\n);\n\n// ----------\n// Public API\n// ----------\n\n/**\n * Schema representing mat2x2f - a matrix with 2 rows and 2 columns, with elements of type f32.\n * Also a constructor function for this matrix type.\n *\n * @example\n * const zero2x2 = mat2x2f(); // filled with zeros\n *\n * @example\n * const mat = mat2x2f(0, 1, 2, 3);\n * mat.columns[0] // vec2f(0, 1)\n * mat.columns[1] // vec2f(2, 3)\n *\n * @example\n * const mat = mat2x2f(\n * vec2f(0, 1), // column 0\n * vec2f(1, 2), // column 1\n * );\n *\n * @example\n * const buffer = root.createBuffer(d.mat2x2f, d.mat2x2f(0, 1, 2, 3)); // buffer holding a d.mat2x2f value, with an initial value of ((0, 1), (2, 3))\n */\nexport const mat2x2f = createMatSchema<'mat2x2f', m2x2f, v2f>({\n type: 'mat2x2f',\n rows: 2,\n columns: 2,\n MatImpl: mat2x2fImpl,\n}) as Mat2x2f;\n\n/**\n * Schema representing mat3x3f - a matrix with 3 rows and 3 columns, with elements of type f32.\n * Also a constructor function for this matrix type.\n *\n * @example\n * const zero3x3 = mat3x3f(); // filled with zeros\n *\n * @example\n * const mat = mat3x3f(0, 1, 2, 3, 4, 5, 6, 7, 8);\n * mat.columns[0] // vec3f(0, 1, 2)\n * mat.columns[1] // vec3f(3, 4, 5)\n * mat.columns[2] // vec3f(6, 7, 8)\n *\n * @example\n * const mat = mat3x3f(\n * vec3f(0, 1, 2), // column 0\n * vec3f(2, 3, 4), // column 1\n * vec3f(5, 6, 7), // column 2\n * );\n *\n * @example\n * const buffer = root.createBuffer(d.mat3x3f, d.mat3x3f()); // buffer holding a d.mat3x3f value, with an initial value of mat3x3f filled with zeros\n */\nexport const mat3x3f = createMatSchema<'mat3x3f', m3x3f, v3f>({\n type: 'mat3x3f',\n rows: 3,\n columns: 3,\n MatImpl: mat3x3fImpl,\n}) as Mat3x3f;\n\n/**\n * Schema representing mat4x4f - a matrix with 4 rows and 4 columns, with elements of type f32.\n * Also a constructor function for this matrix type.\n *\n * @example\n * const zero4x4 = mat4x4f(); // filled with zeros\n *\n * @example\n * const mat = mat4x4f(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);\n * mat.columns[0] // vec4f(0, 1, 2, 3)\n * mat.columns[1] // vec4f(4, 5, 6, 7)\n * mat.columns[2] // vec4f(8, 9, 10, 11)\n * mat.columns[3] // vec4f(12, 13, 14, 15)\n *\n * @example\n * const mat = mat4x4f(\n * vec4f(0, 1, 2, 3), // column 0\n * vec4f(4, 5, 6, 7), // column 1\n * vec4f(8, 9, 10, 11), // column 2\n * vec4f(12, 13, 14, 15), // column 3\n * );\n *\n * @example\n * const buffer = root.createBuffer(d.mat4x4f, d.mat4x4f()); // buffer holding a d.mat4x4f value, with an initial value of mat4x4f filled with zeros\n */\nexport const mat4x4f = createMatSchema<'mat4x4f', m4x4f, v4f>({\n type: 'mat4x4f',\n rows: 4,\n columns: 4,\n MatImpl: mat4x4fImpl,\n}) as Mat4x4f;\n\nexport function matToArray(mat: m2x2f | m3x3f | m4x4f): number[] {\n if (mat.kind === 'mat3x3f') {\n return [\n mat[0],\n mat[1],\n mat[2],\n mat[4],\n mat[5],\n mat[6],\n mat[8],\n mat[9],\n mat[10],\n ] as number[];\n }\n\n return Array.from({ length: mat.length }).map((_, idx) => mat[idx] as number);\n}\n","import * as tinyest from 'tinyest';\nimport { stitch, stitchWithExactTypes } from '../core/resolve/stitch.ts';\nimport { arrayOf } from '../data/array.ts';\nimport {\n type AnyData,\n ConsoleLog,\n InfixDispatch,\n isData,\n isLooseData,\n MatrixColumnsAccess,\n UnknownData,\n} from '../data/dataTypes.ts';\nimport { abstractInt, bool, u32 } from '../data/numeric.ts';\nimport { isSnippet, snip, type Snippet } from '../data/snippet.ts';\nimport * as wgsl from '../data/wgslTypes.ts';\nimport { invariant, ResolutionError, WgslTypeError } from '../errors.ts';\nimport { getName } from '../shared/meta.ts';\nimport { isMarkedInternal } from '../shared/symbols.ts';\nimport { safeStringify } from '../shared/stringify.ts';\nimport { $internal } from '../shared/symbols.ts';\nimport { pow } from '../std/numeric.ts';\nimport { add, div, mul, sub } from '../std/operators.ts';\nimport type { FnArgsConversionHint } from '../types.ts';\nimport {\n convertStructValues,\n convertToCommonType,\n tryConvertSnippet,\n} from './conversion.ts';\nimport {\n coerceToSnippet,\n concretize,\n type GenerationCtx,\n getTypeForIndexAccess,\n getTypeForPropAccess,\n numericLiteralToSnippet,\n} from './generationHelpers.ts';\nimport type { ShaderGenerator } from './shaderGenerator.ts';\n\nconst { NodeTypeCatalog: NODE } = tinyest;\n\nconst parenthesizedOps = [\n '==',\n '!=',\n '<',\n '<=',\n '>',\n '>=',\n '<<',\n '>>',\n '+',\n '-',\n '*',\n '/',\n '%',\n '|',\n '^',\n '&',\n '&&',\n '||',\n];\n\nconst binaryLogicalOps = ['&&', '||', '==', '!=', '<', '<=', '>', '>='];\n\nconst infixKinds = [\n 'vec2f',\n 'vec3f',\n 'vec4f',\n 'vec2h',\n 'vec3h',\n 'vec4h',\n 'vec2i',\n 'vec3i',\n 'vec4i',\n 'vec2u',\n 'vec3u',\n 'vec4u',\n 'mat2x2f',\n 'mat3x3f',\n 'mat4x4f',\n];\n\nexport const infixOperators = {\n add,\n sub,\n mul,\n div,\n} as const;\n\nexport type InfixOperator = keyof typeof infixOperators;\n\ntype Operator =\n | tinyest.BinaryOperator\n | tinyest.AssignmentOperator\n | tinyest.LogicalOperator\n | tinyest.UnaryOperator;\n\nfunction operatorToType<\n TL extends AnyData | UnknownData,\n TR extends AnyData | UnknownData,\n>(lhs: TL, op: Operator, rhs?: TR): TL | TR | wgsl.Bool {\n if (!rhs) {\n if (op === '!' || op === '~') {\n return bool;\n }\n\n return lhs;\n }\n\n if (binaryLogicalOps.includes(op)) {\n return bool;\n }\n\n if (op === '=') {\n return rhs;\n }\n\n return lhs;\n}\n\nconst opCodeToCodegen = {\n '+': add[$internal].gpuImpl,\n '-': sub[$internal].gpuImpl,\n '*': mul[$internal].gpuImpl,\n '/': div[$internal].gpuImpl,\n '**': pow[$internal].gpuImpl,\n} satisfies Partial<\n Record<tinyest.BinaryOperator, (...args: never[]) => unknown>\n>;\n\nclass WgslGenerator implements ShaderGenerator {\n #ctx: GenerationCtx | undefined = undefined;\n\n public initGenerator(ctx: GenerationCtx) {\n this.#ctx = ctx;\n }\n\n private get ctx(): GenerationCtx {\n if (!this.#ctx) {\n throw new Error(\n 'WGSL Generator has not yet been initialized. Please call initialize(ctx) before using the generator.',\n );\n }\n return this.#ctx;\n }\n\n public block(\n [_, statements]: tinyest.Block,\n ): string {\n this.ctx.pushBlockScope();\n try {\n this.ctx.indent();\n const body = statements.map((statement) => this.statement(statement))\n .join('\\n');\n this.ctx.dedent();\n return `{\n${body}\n${this.ctx.pre}}`;\n } finally {\n this.ctx.popBlockScope();\n }\n }\n\n public blockVariable(\n id: string,\n dataType: wgsl.AnyWgslData | UnknownData,\n ): Snippet {\n const snippet = snip(this.ctx.makeNameValid(id), dataType);\n this.ctx.defineVariable(id, snippet);\n return snippet;\n }\n\n public identifier(id: string): Snippet {\n if (!id) {\n throw new Error('Cannot resolve an empty identifier');\n }\n const res = this.ctx.getById(id);\n\n if (!res) {\n throw new Error(`Identifier ${id} not found`);\n }\n\n return res;\n }\n\n /**\n * A wrapper for `generateExpression` that updates `ctx.expectedType`\n * and tries to convert the result when it does not match the expected type.\n */\n public typedExpression(\n expression: tinyest.Expression,\n expectedType: AnyData,\n ) {\n const prevExpectedType = this.ctx.expectedType;\n this.ctx.expectedType = expectedType;\n\n try {\n const result = this.expression(expression);\n return tryConvertSnippet(result, expectedType);\n } finally {\n this.ctx.expectedType = prevExpectedType;\n }\n }\n\n public expression(\n expression: tinyest.Expression,\n ): Snippet {\n if (typeof expression === 'string') {\n return this.identifier(expression);\n }\n\n if (typeof expression === 'boolean') {\n return snip(expression, bool);\n }\n\n if (\n expression[0] === NODE.logicalExpr ||\n expression[0] === NODE.binaryExpr ||\n expression[0] === NODE.assignmentExpr\n ) {\n // Logical/Binary/Assignment Expression\n const [_, lhs, op, rhs] = expression;\n const lhsExpr = this.expression(lhs);\n const rhsExpr = this.expression(rhs);\n\n const codegen = opCodeToCodegen[op as keyof typeof opCodeToCodegen];\n if (codegen) {\n return codegen(lhsExpr, rhsExpr);\n }\n\n const forcedType = expression[0] === NODE.assignmentExpr\n ? lhsExpr.dataType.type === 'ptr'\n ? [lhsExpr.dataType.inner as AnyData]\n : [lhsExpr.dataType as AnyData]\n : undefined;\n\n const [convLhs, convRhs] =\n convertToCommonType([lhsExpr, rhsExpr], forcedType) ??\n [lhsExpr, rhsExpr];\n\n const lhsStr = this.ctx.resolve(convLhs.value, convLhs.dataType).value;\n const rhsStr = this.ctx.resolve(convRhs.value, convRhs.dataType).value;\n const type = operatorToType(convLhs.dataType, op, convRhs.dataType);\n\n return snip(\n parenthesizedOps.includes(op)\n ? `(${lhsStr} ${op} ${rhsStr})`\n : `${lhsStr} ${op} ${rhsStr}`,\n type,\n );\n }\n\n if (expression[0] === NODE.postUpdate) {\n // Post-Update Expression\n const [_, op, arg] = expression;\n const argExpr = this.expression(arg);\n const argStr = this.ctx.resolve(argExpr.value).value;\n\n return snip(`${argStr}${op}`, argExpr.dataType);\n }\n\n if (expression[0] === NODE.unaryExpr) {\n // Unary Expression\n const [_, op, arg] = expression;\n const argExpr = this.expression(arg);\n const argStr = this.ctx.resolve(argExpr.value).value;\n\n const type = operatorToType(argExpr.dataType, op);\n return snip(`${op}${argStr}`, type);\n }\n\n if (expression[0] === NODE.memberAccess) {\n // Member Access\n const [_, targetNode, property] = expression;\n const target = this.expression(targetNode);\n\n if (target.value === console) {\n return snip(\n new ConsoleLog(property),\n UnknownData,\n );\n }\n\n if (\n infixKinds.includes(target.dataType.type) &&\n property in infixOperators\n ) {\n return {\n value: new InfixDispatch(\n property,\n target,\n infixOperators[property as InfixOperator][$internal].gpuImpl,\n ),\n dataType: UnknownData,\n };\n }\n\n if (target.dataType.type === 'unknown') {\n // No idea what the type is, so we act on the snippet's value and try to guess\n\n // biome-ignore lint/suspicious/noExplicitAny: we're inspecting the value, and it could be any value\n const propValue = (target.value as any)[property];\n\n // We try to extract any type information based on the prop's value\n return coerceToSnippet(propValue);\n }\n\n if (wgsl.isPtr(target.dataType)) {\n return snip(\n `(*${this.ctx.resolve(target.value).value}).${property}`,\n getTypeForPropAccess(target.dataType.inner as AnyData, property),\n );\n }\n\n if (wgsl.isWgslArray(target.dataType) && property === 'length') {\n if (target.dataType.elementCount === 0) {\n // Dynamically-sized array\n return snip(\n `arrayLength(&${this.ctx.resolve(target.value).value})`,\n u32,\n );\n }\n\n return snip(String(target.dataType.elementCount), abstractInt);\n }\n\n if (wgsl.isMat(target.dataType) && property === 'columns') {\n return snip(new MatrixColumnsAccess(target), UnknownData);\n }\n\n if (\n wgsl.isVec(target.dataType) && wgsl.isVecInstance(target.value)\n ) {\n // We're operating on a vector that's known at resolution time\n // biome-ignore lint/suspicious/noExplicitAny: it's probably a swizzle\n return coerceToSnippet((target.value as any)[property]);\n }\n\n return snip(\n `${this.ctx.resolve(target.value).value}.${property}`,\n getTypeForPropAccess(target.dataType, property),\n );\n }\n\n if (expression[0] === NODE.indexAccess) {\n // Index Access\n const [_, targetNode, propertyNode] = expression;\n const target = this.expression(targetNode);\n const property = this.expression(propertyNode);\n const propertyStr =\n this.ctx.resolve(property.value, property.dataType).value;\n\n if (target.value instanceof MatrixColumnsAccess) {\n return snip(\n stitch`${target.value.matrix}[${propertyStr}]`,\n getTypeForIndexAccess(target.value.matrix.dataType as AnyData),\n );\n }\n const targetStr = this.ctx.resolve(target.value, target.dataType).value;\n\n if (target.dataType.type === 'unknown') {\n // No idea what the type is, so we act on the snippet's value and try to guess\n\n if (\n Array.isArray(propertyNode) && propertyNode[0] === NODE.numericLiteral\n ) {\n return coerceToSnippet(\n // biome-ignore lint/suspicious/noExplicitAny: we're inspecting the value, and it could be any value\n (target.value as any)[propertyNode[1] as number],\n );\n }\n\n throw new Error(\n `Cannot index value ${targetStr} of unknown type with index ${propertyStr}`,\n );\n }\n\n if (wgsl.isMat(target.dataType)) {\n throw new Error(\n \"The only way of accessing matrix elements in TGSL is through the 'columns' property.\",\n );\n }\n\n if (wgsl.isPtr(target.dataType)) {\n return snip(\n `(*${targetStr})[${propertyStr}]`,\n getTypeForIndexAccess(target.dataType.inner as AnyData),\n );\n }\n\n return snip(\n `${targetStr}[${propertyStr}]`,\n isData(target.dataType)\n ? getTypeForIndexAccess(target.dataType)\n : UnknownData,\n );\n }\n\n if (expression[0] === NODE.numericLiteral) {\n // Numeric Literal\n const type = typeof expression[1] === 'string'\n ? numericLiteralToSnippet(parseNumericString(expression[1]))\n : numericLiteralToSnippet(expression[1]);\n if (!type) {\n throw new Error(`Invalid numeric literal ${expression[1]}`);\n }\n return type;\n }\n\n if (expression[0] === NODE.call) {\n // Function Call\n const [_, calleeNode, argNodes] = expression;\n const callee = this.expression(calleeNode);\n\n if (wgsl.isWgslStruct(callee.value) || wgsl.isWgslArray(callee.value)) {\n // Struct/array schema call.\n if (argNodes.length > 1) {\n throw new WgslTypeError(\n 'Array and struct schemas should always be called with at most 1 argument',\n );\n }\n\n // No arguments `Struct()`, resolve struct name and return.\n if (!argNodes[0]) {\n // the schema becomes the data type\n return snip(\n `${this.ctx.resolve(callee.value).value}()`,\n callee.value,\n );\n }\n\n const arg = this.typedExpression(\n argNodes[0],\n callee.value,\n );\n\n // Either `Struct({ x: 1, y: 2 })`, or `Struct(otherStruct)`.\n // In both cases, we just let the argument resolve everything.\n return snip(\n this.ctx.resolve(arg.value, callee.value).value,\n callee.value,\n );\n }\n\n if (callee.value instanceof InfixDispatch) {\n // Infix operator dispatch.\n if (!argNodes[0]) {\n throw new WgslTypeError(\n `An infix operator '${callee.value.name}' was called without any arguments`,\n );\n }\n const rhs = this.expression(argNodes[0]);\n return callee.value.operator(callee.value.lhs, rhs);\n }\n\n if (!isMarkedInternal(callee.value)) {\n const args = argNodes.map((arg) => this.expression(arg));\n const shellless = this.ctx.shelllessRepo.get(\n callee.value as (...args: never[]) => unknown,\n args,\n );\n if (shellless) {\n return this.ctx.withResetIndentLevel(() => {\n const snippet = this.ctx.resolve(shellless);\n return snip(stitch`${snippet.value}(${args})`, snippet.dataType);\n });\n }\n\n throw new Error(\n `Function '${\n getName(callee.value) ?? String(callee.value)\n }' is not marked with the 'use gpu' directive and cannot be used in a shader`,\n );\n }\n\n // Other, including tgsl functions, std and vector/matrix schema calls.\n\n const argConversionHint =\n (callee.value[$internal] as Record<string, unknown>)\n ?.argConversionHint as FnArgsConversionHint ?? 'keep';\n try {\n let convertedArguments: Snippet[];\n\n if (Array.isArray(argConversionHint)) {\n // The hint is an array of schemas.\n convertedArguments = argNodes.map((arg, i) => {\n const argType = argConversionHint[i];\n if (!argType) {\n throw new WgslTypeError(\n `Function '${\n getName(callee.value)\n }' was called with too many arguments`,\n );\n }\n return this.typedExpression(arg, argType);\n });\n } else {\n const snippets = argNodes.map((arg) => this.expression(arg));\n\n if (argConversionHint === 'keep') {\n // The hint tells us to do nothing.\n convertedArguments = snippets;\n } else if (argConversionHint === 'unify') {\n // The hint tells us to unify the types.\n convertedArguments = convertToCommonType(snippets) ?? snippets;\n } else {\n // The hint is a function that converts the arguments.\n convertedArguments = argConversionHint(...snippets)\n .map((type, i) => [type, snippets[i] as Snippet] as const)\n .map(([type, sn]) => tryConvertSnippet(sn, type));\n }\n }\n\n if (callee.value instanceof ConsoleLog) {\n return this.ctx.generateLog(callee.value.op, convertedArguments);\n }\n\n // Assuming that `callee` is callable\n const fnRes =\n (callee.value as unknown as (...args: unknown[]) => unknown)(\n ...convertedArguments,\n );\n\n if (!isSnippet(fnRes)) {\n throw new Error(\n 'Functions running in codegen mode must return snippets',\n );\n }\n return fnRes;\n } catch (error) {\n throw new ResolutionError(error, [{\n toString: () => getName(callee.value),\n }]);\n }\n }\n\n if (expression[0] === NODE.objectExpr) {\n // Object Literal\n const obj = expression[1];\n\n const structType = this.ctx.expectedType;\n\n if (!structType || !wgsl.isWgslStruct(structType)) {\n throw new WgslTypeError(\n `No target type could be inferred for object with keys [${\n Object.keys(obj).join(', ')\n }], please wrap the object in the corresponding schema.`,\n );\n }\n\n const entries = Object.fromEntries(\n Object.entries(structType.propTypes).map(([key, value]) => {\n const val = obj[key];\n if (val === undefined) {\n throw new WgslTypeError(\n `Missing property ${key} in object literal for struct ${structType}`,\n );\n }\n const result = this.typedExpression(\n val,\n value as AnyData,\n );\n return [key, result];\n }),\n );\n\n const convertedSnippets = convertStructValues(structType, entries);\n\n return snip(\n stitch`${this.ctx.resolve(structType).value}(${convertedSnippets})`,\n structType,\n );\n }\n\n if (expression[0] === NODE.arrayExpr) {\n const [_, valueNodes] = expression;\n // Array Expression\n const arrType = this.ctx.expectedType;\n let elemType: AnyData;\n let values: Snippet[];\n\n if (wgsl.isWgslArray(arrType)) {\n elemType = arrType.elementType as AnyData;\n // The array is typed, so its elements should be as well.\n values = valueNodes.map((value) =>\n this.typedExpression(value, elemType)\n );\n // Since it's an expected type, we enforce the length\n if (values.length !== arrType.elementCount) {\n throw new WgslTypeError(\n `Cannot create value of type '${arrType}' from an array of length: ${values.length}`,\n );\n }\n } else {\n // The array is not typed, so we try to guess the types.\n const valuesSnippets = valueNodes.map((value) =>\n this.expression(value as tinyest.Expression)\n );\n\n if (valuesSnippets.length === 0) {\n throw new WgslTypeError(\n 'Cannot infer the type of an empty array literal.',\n );\n }\n\n const converted = convertToCommonType(valuesSnippets);\n if (!converted) {\n throw new WgslTypeError(\n 'The given values cannot be automatically converted to a common type. Consider wrapping the array in an appropriate schema',\n );\n }\n\n values = converted;\n elemType = concretize(values[0]?.dataType as wgsl.AnyWgslData);\n }\n\n const arrayType = `array<${\n this.ctx.resolve(elemType).value\n }, ${values.length}>`;\n\n return snip(\n stitch`${arrayType}(${values})`,\n arrayOf[$internal].jsImpl(\n elemType as wgsl.AnyWgslData,\n values.length,\n ) as wgsl.AnyWgslData,\n );\n }\n\n if (expression[0] === NODE.stringLiteral) {\n return snip(expression[1], UnknownData);\n }\n\n if (expression[0] === NODE.preUpdate) {\n throw new Error('Cannot use pre-updates in TGSL.');\n }\n\n assertExhaustive(expression);\n }\n\n public functionDefinition(\n body: tinyest.Block,\n ): string {\n return this.block(body);\n }\n\n public statement(\n statement: tinyest.Statement,\n ): string {\n if (typeof statement === 'string') {\n return `${this.ctx.pre}${\n this.ctx.resolve(this.identifier(statement).value).value\n };`;\n }\n\n if (typeof statement === 'boolean') {\n return `${this.ctx.pre}${statement ? 'true' : 'false'};`;\n }\n\n if (statement[0] === NODE.return) {\n const returnNode = statement[1];\n\n if (returnNode !== undefined) {\n const expectedReturnType = this.ctx.topFunctionReturnType;\n const returnSnippet = expectedReturnType\n ? this.typedExpression(\n returnNode,\n expectedReturnType,\n )\n : this.expression(returnNode);\n\n invariant(\n returnSnippet.dataType.type !== 'unknown',\n 'Return type should be known',\n );\n\n this.ctx.reportReturnType(returnSnippet.dataType);\n return stitch`${this.ctx.pre}return ${returnSnippet};`;\n }\n\n return `${this.ctx.pre}return;`;\n }\n\n if (statement[0] === NODE.if) {\n const [_, condNode, consNode, altNode] = statement;\n const condition = this.typedExpression(condNode, bool);\n\n const consequent = condition.value === false\n ? undefined\n : this.block(blockifySingleStatement(consNode));\n const alternate = condition.value === true || !altNode\n ? undefined\n : this.block(blockifySingleStatement(altNode));\n\n if (condition.value === true) {\n return `${this.ctx.pre}${consequent}`;\n }\n\n if (condition.value === false) {\n return alternate ? `${this.ctx.pre}${alternate}` : '';\n }\n\n if (!alternate) {\n return stitch`${this.ctx.pre}if (${condition}) ${consequent}`;\n }\n\n return stitch`\\\n${this.ctx.pre}if (${condition}) ${consequent}\n${this.ctx.pre}else ${alternate}`;\n }\n\n if (statement[0] === NODE.let || statement[0] === NODE.const) {\n const [_, rawId, rawValue] = statement;\n const eq = rawValue !== undefined ? this.expression(rawValue) : undefined;\n\n if (!eq) {\n throw new Error(\n `Cannot create variable '${rawId}' without an initial value.`,\n );\n }\n\n if (isLooseData(eq.dataType)) {\n throw new Error(\n `Cannot create variable '${rawId}' with loose data type.`,\n );\n }\n\n const snippet = this.blockVariable(\n rawId,\n concretize(eq.dataType as wgsl.AnyWgslData),\n );\n return stitchWithExactTypes`${this.ctx.pre}var ${snippet\n .value as string} = ${eq};`;\n }\n\n if (statement[0] === NODE.block) {\n return this.block(statement);\n }\n\n if (statement[0] === NODE.for) {\n const [_, init, condition, update, body] = statement;\n\n const [initStatement, conditionExpr, updateStatement] = this.ctx\n .withResetIndentLevel(\n () => [\n init ? this.statement(init) : undefined,\n condition ? this.typedExpression(condition, bool) : undefined,\n update ? this.statement(update) : undefined,\n ],\n );\n\n const initStr = initStatement ? initStatement.slice(0, -1) : '';\n const updateStr = updateStatement ? updateStatement.slice(0, -1) : '';\n\n const bodyStr = this.block(blockifySingleStatement(body));\n return stitch`${this.ctx.pre}for (${initStr}; ${conditionExpr}; ${updateStr}) ${bodyStr}`;\n }\n\n if (statement[0] === NODE.while) {\n const [_, condition, body] = statement;\n const condSnippet = this.typedExpression(condition, bool);\n const conditionStr = this.ctx.resolve(condSnippet.value).value;\n\n const bodyStr = this.block(blockifySingleStatement(body));\n return `${this.ctx.pre}while (${conditionStr}) ${bodyStr}`;\n }\n\n if (statement[0] === NODE.continue) {\n return `${this.ctx.pre}continue;`;\n }\n\n if (statement[0] === NODE.break) {\n return `${this.ctx.pre}break;`;\n }\n\n return `${this.ctx.pre}${\n this.ctx.resolve(this.expression(statement).value).value\n };`;\n }\n}\n\nfunction assertExhaustive(value: never): never {\n throw new Error(\n `'${safeStringify(value)}' was not handled by the WGSL generator.`,\n );\n}\n\nfunction parseNumericString(str: string): number {\n // Hex literals\n if (/^0x[0-9a-f]+$/i.test(str)) {\n return Number.parseInt(str);\n }\n\n // Binary literals\n if (/^0b[01]+$/i.test(str)) {\n return Number.parseInt(str.slice(2), 2);\n }\n\n return Number.parseFloat(str);\n}\n\nfunction blockifySingleStatement(statement: tinyest.Statement): tinyest.Block {\n return typeof statement !== 'object' ||\n statement[0] !== NODE.block\n ? [NODE.block, [statement]]\n : statement;\n}\n\nconst wgslGenerator: WgslGenerator = new WgslGenerator();\nexport default wgslGenerator;\n"]}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); 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 _chunkLL6NPRFEcjs = require('./chunk-LL6NPRFE.cjs');var _chunkA5APHF7Kcjs = require('./chunk-A5APHF7K.cjs');function E(t){return u("function",t,"read-write")}function V(t){return u("private",t,"read-write")}function U(t){return u("workgroup",t,"read-write")}function $(t,e="read"){return u("storage",t,e)}function C(t){return u("uniform",t,"read")}function L(t){return u("handle",t,"read")}function u(t,e,r){return{[_chunkA5APHF7Kcjs.a]:!0,type:"ptr",addressSpace:t,inner:e,access:r}}var k=_chunkA5APHF7Kcjs.Ma.call(void 0, ((t,e)=>e===void 0?r=>b(t,r):b(t,e)),(t,e)=>{if(e===void 0||e.value===void 0){let r=a=>k[_chunkA5APHF7Kcjs.a].gpuImpl(t,a);return r[_chunkA5APHF7Kcjs.a]=!0,_chunkA5APHF7Kcjs.aa.call(void 0, r,_chunkA5APHF7Kcjs.W)}if(typeof e.value!="number")throw new Error(`Cannot create disarray schema with count unknown at compile-time: '${e.value}'`);return _chunkA5APHF7Kcjs.aa.call(void 0, b(t.value,e.value),t.value)},"disarrayOf");function b(t,e){let r=a=>{if(a&&a.length!==e)throw new Error(`Disarray schema of ${e} elements of type ${t.type} called with ${a.length} argument(s).`);return Array.from({length:e},(s,n)=>_chunkA5APHF7Kcjs.rc.call(void 0, t,_optionalChain([a, 'optionalAccess', _ => _[n]])))};if(Object.setPrototypeOf(r,M),r.elementType=t,!Number.isInteger(e)||e<0)throw new Error(`Cannot create disarray schema with invalid element count: ${e}.`);return r.elementCount=e,r}var M={[_chunkA5APHF7Kcjs.a]:!0,type:"disarray",toString(){return`disarrayOf(${this.elementType}, ${this.elementCount})`}};function j(t){let e=r=>Object.fromEntries(Object.entries(t).map(([a,s])=>[a,_chunkA5APHF7Kcjs.rc.call(void 0, s,_optionalChain([r, 'optionalAccess', _2 => _2[a]]))]));return Object.setPrototypeOf(e,F),e.propTypes=t,e}var F={[_chunkA5APHF7Kcjs.a]:!0,type:"unstruct",$name(t){return _chunkA5APHF7Kcjs.k.call(void 0, this,t),this},toString(){return`unstruct:${_nullishCoalesce(_chunkA5APHF7Kcjs.j.call(void 0, this), () => ("<unnamed>"))}`}};function c(t,e){if(t===e)return!0;if(t.type!==e.type)return!1;if(_chunkA5APHF7Kcjs.D.call(void 0, t)&&_chunkA5APHF7Kcjs.D.call(void 0, e)||_chunkA5APHF7Kcjs.S.call(void 0, t)&&_chunkA5APHF7Kcjs.S.call(void 0, e)){let r=t.propTypes,a=e.propTypes,s=Object.keys(r),n=Object.keys(a);if(s.length!==n.length)return!1;for(let i=0;i<s.length;i++){let S=s[i],v=n[i];if(S!==v||!S||!v||!c(r[S],a[v]))return!1}return!0}if(_chunkA5APHF7Kcjs.C.call(void 0, t)&&_chunkA5APHF7Kcjs.C.call(void 0, e)||_chunkA5APHF7Kcjs.R.call(void 0, t)&&_chunkA5APHF7Kcjs.R.call(void 0, e))return t.elementCount===e.elementCount&&c(t.elementType,e.elementType);if(_chunkA5APHF7Kcjs.E.call(void 0, t)&&_chunkA5APHF7Kcjs.E.call(void 0, e))return t.addressSpace===e.addressSpace&&t.access===e.access&&c(t.inner,e.inner);if(_chunkA5APHF7Kcjs.F.call(void 0, t)&&_chunkA5APHF7Kcjs.F.call(void 0, e))return c(t.inner,e.inner);if(_chunkA5APHF7Kcjs.L.call(void 0, t)&&_chunkA5APHF7Kcjs.L.call(void 0, e)||_chunkA5APHF7Kcjs.T.call(void 0, t)&&_chunkA5APHF7Kcjs.T.call(void 0, e)){if(!c(t.inner,e.inner)||t.attribs.length!==e.attribs.length)return!1;let r=n=>{let i=n;return`${i.type}(${(_nullishCoalesce(i.params, () => ([]))).join(",")})`},a=t.attribs.map(r),s=e.attribs.map(r);for(let n=0;n<a.length;n++)if(a[n]!==s[n])return!1}return!0}function p(t,e){let r=t.prototype,a=_chunkLL6NPRFEcjs.gb[e][_chunkA5APHF7Kcjs.a].jsImpl;r[e]=function(s){return a(this,s)}}p(_chunkA5APHF7Kcjs.Xa,"add");p(_chunkA5APHF7Kcjs.Xa,"sub");p(_chunkA5APHF7Kcjs.Xa,"mul");p(_chunkA5APHF7Kcjs.Xa,"div");p(_chunkLL6NPRFEcjs.a,"add");p(_chunkLL6NPRFEcjs.a,"sub");p(_chunkLL6NPRFEcjs.a,"mul");exports.a = E; exports.b = V; exports.c = U; exports.d = $; exports.e = C; exports.f = L; exports.g = k; exports.h = j; exports.i = c;
2
- //# sourceMappingURL=chunk-M2P3FJT7.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/Users/iwo/Projects/wigsill/packages/typegpu/dist/chunk-M2P3FJT7.cjs","../src/data/ptr.ts","../src/data/disarray.ts","../src/data/unstruct.ts"],"names":["ptrFn","inner","INTERNAL_createPtr","ptrPrivate","ptrWorkgroup","ptrStorage","access","ptrUniform","ptrHandle","addressSpace","$internal","disarrayOf","createDualImpl","elementType","elementCount","count","cpu_disarrayOf","partial","snip","UnknownData","disarraySchema","elements","_","i","schemaCallWrapper","DisarrayImpl","unstruct","properties","unstructSchema","instanceProps","key","schema","UnstructImpl","label","setName","getName"],"mappings":"AAAA,yuBAAgD,wDAAsJ,SCGtLA,CAAAA,CACdC,CAAAA,CACkC,CAClC,OAAOC,CAAAA,CAAmB,UAAA,CAAYD,CAAAA,CAAO,YAAY,CAC3D,CAEO,SAASE,CAAAA,CACdF,CAAAA,CACiC,CACjC,OAAOC,CAAAA,CAAmB,SAAA,CAAWD,CAAAA,CAAO,YAAY,CAC1D,CAEO,SAASG,CAAAA,CACdH,CAAAA,CACmC,CACnC,OAAOC,CAAAA,CAAmB,WAAA,CAAaD,CAAAA,CAAO,YAAY,CAC5D,CAEO,SAASI,CAAAA,CAGdJ,CAAAA,CAAUK,CAAAA,CAAkB,MAAA,CAA+C,CAC3E,OAAOJ,CAAAA,CAAmB,SAAA,CAAWD,CAAAA,CAAOK,CAAM,CACpD,CAEO,SAASC,CAAAA,CACdN,CAAAA,CAC2B,CAC3B,OAAOC,CAAAA,CAAmB,SAAA,CAAWD,CAAAA,CAAO,MAAM,CACpD,CAEO,SAASO,CAAAA,CACdP,CAAAA,CAC0B,CAC1B,OAAOC,CAAAA,CAAmB,QAAA,CAAUD,CAAAA,CAAO,MAAM,CACnD,CAEA,SAASC,CAAAA,CAKPO,CAAAA,CACAR,CAAAA,CACAK,CAAAA,CACqC,CACrC,MAAO,CACL,CAACI,mBAAS,CAAA,CAAG,CAAA,CAAA,CACb,IAAA,CAAM,KAAA,CACN,YAAA,CAAAD,CAAAA,CACA,KAAA,CAAAR,CAAAA,CACA,MAAA,CAAAK,CACF,CACF,CCXO,IAAMK,CAAAA,CAAaC,kCAAAA,CAEvB,CAACC,CAAAA,CAAaC,CAAAA,CAAAA,EACTA,CAAAA,GAAiB,KAAA,CAAA,CACXC,CAAAA,EAAkBC,CAAAA,CAAeH,CAAAA,CAAaE,CAAK,CAAA,CAEtDC,CAAAA,CAAeH,CAAAA,CAAaC,CAAY,CAAA,CAAA,CAGjD,CAACD,CAAAA,CAAaC,CAAAA,CAAAA,EAAiB,CAC7B,EAAA,CAAIA,CAAAA,GAAiB,KAAA,CAAA,EAAaA,CAAAA,CAAa,KAAA,GAAU,KAAA,CAAA,CAAW,CAClE,IAAMG,CAAAA,CAAWF,CAAAA,EACfJ,CAAAA,CAAWD,mBAAS,CAAA,CAAE,OAAA,CAAQG,CAAAA,CAAaE,CAAK,CAAA,CAElD,OAAAE,CAAAA,CAAQP,mBAAS,CAAA,CAAI,CAAA,CAAA,CAEdQ,kCAAAA,CAAKD,CAASE,mBAAW,CAClC,CAEA,EAAA,CAAI,OAAOL,CAAAA,CAAa,KAAA,EAAU,QAAA,CAChC,MAAM,IAAI,KAAA,CACR,CAAA,mEAAA,EAAsEA,CAAAA,CAAa,KAAK,CAAA,CAAA,CAC1F,CAAA,CAGF,OAAOI,kCAAAA,CACLF,CAAeH,CAAAA,CAAY,KAAA,CAAsBC,CAAAA,CAAa,KAAK,CAAA,CACnED,CAAAA,CAAY,KACd,CACF,CAAA,CACA,YACF,CAAA,CAEO,SAASG,CAAAA,CACdH,CAAAA,CACAC,CAAAA,CACoB,CAGpB,IAAMM,CAAAA,CAAkBC,CAAAA,EAA0B,CAChD,EAAA,CAAIA,CAAAA,EAAYA,CAAAA,CAAS,MAAA,GAAWP,CAAAA,CAClC,MAAM,IAAI,KAAA,CACR,CAAA,mBAAA,EAAsBA,CAAY,CAAA,kBAAA,EAAqBD,CAAAA,CAAY,IAAI,CAAA,aAAA,EAAgBQ,CAAAA,CAAS,MAAM,CAAA,aAAA,CACxG,CAAA,CAGF,OAAO,KAAA,CAAM,IAAA,CACX,CAAE,MAAA,CAAQP,CAAa,CAAA,CACvB,CAACQ,CAAAA,CAAGC,CAAAA,CAAAA,EAAMC,kCAAAA,CAAkBX,iBAAaQ,CAAAA,0BAAAA,CAAWE,CAAC,GAAC,CACxD,CACF,CAAA,CAKA,EAAA,CAJA,MAAA,CAAO,cAAA,CAAeH,CAAAA,CAAgBK,CAAY,CAAA,CAElDL,CAAAA,CAAe,WAAA,CAAcP,CAAAA,CAEzB,CAAC,MAAA,CAAO,SAAA,CAAUC,CAAY,CAAA,EAAKA,CAAAA,CAAe,CAAA,CACpD,MAAM,IAAI,KAAA,CACR,CAAA,0DAAA,EAA6DA,CAAY,CAAA,CAAA,CAC3E,CAAA,CAEF,OAAAM,CAAAA,CAAe,YAAA,CAAeN,CAAAA,CAEvBM,CACT,CAMA,IAAMK,CAAAA,CAAe,CACnB,CAACf,mBAAS,CAAA,CAAG,CAAA,CAAA,CACb,IAAA,CAAM,UAAA,CAEN,QAAA,CAAA,CAAiC,CAC/B,MAAO,CAAA,WAAA,EAAc,IAAA,CAAK,WAAW,CAAA,EAAA,EAAK,IAAA,CAAK,YAAY,CAAA,CAAA,CAC7D,CACF,CAAA,CC7FO,SAASgB,CAAAA,CACdC,CAAAA,CACkB,CAGlB,IAAMC,CAAAA,CAAkBC,CAAAA,EACtB,MAAA,CAAO,WAAA,CACL,MAAA,CAAO,OAAA,CAAQF,CAAU,CAAA,CAAE,GAAA,CAAI,CAAC,CAACG,CAAAA,CAAKC,CAAM,CAAA,CAAA,EAAM,CAChDD,CAAAA,CACAN,kCAAAA,CAAkBO,iBAAmBF,CAAAA,4BAAAA,CAAgBC,CAAG,GAAC,CAC3D,CAAC,CACH,CAAA,CACF,OAAA,MAAA,CAAO,cAAA,CAAeF,CAAAA,CAAgBI,CAAY,CAAA,CAClDJ,CAAAA,CAAe,SAAA,CAAYD,CAAAA,CAEpBC,CACT,CAMA,IAAMI,CAAAA,CAAe,CACnB,CAACtB,mBAAS,CAAA,CAAG,CAAA,CAAA,CACb,IAAA,CAAM,UAAA,CAEN,KAAA,CAAMuB,CAAAA,CAAe,CACnB,OAAAC,iCAAAA,IAAQ,CAAMD,CAAK,CAAA,CACZ,IACT,CAAA,CAEA,QAAA,CAAA,CAAmB,CACjB,MAAO,CAAA,SAAA,mBAAYE,iCAAAA,IAAY,CAAA,SAAK,aAAW,CAAA,CAAA","file":"/Users/iwo/Projects/wigsill/packages/typegpu/dist/chunk-M2P3FJT7.cjs","sourcesContent":[null,"import { $internal } from '../shared/symbols.ts';\nimport type { Access, AddressSpace, Ptr, StorableData } from './wgslTypes.ts';\n\nexport function ptrFn<T extends StorableData>(\n inner: T,\n): Ptr<'function', T, 'read-write'> {\n return INTERNAL_createPtr('function', inner, 'read-write');\n}\n\nexport function ptrPrivate<T extends StorableData>(\n inner: T,\n): Ptr<'private', T, 'read-write'> {\n return INTERNAL_createPtr('private', inner, 'read-write');\n}\n\nexport function ptrWorkgroup<T extends StorableData>(\n inner: T,\n): Ptr<'workgroup', T, 'read-write'> {\n return INTERNAL_createPtr('workgroup', inner, 'read-write');\n}\n\nexport function ptrStorage<\n T extends StorableData,\n TAccess extends 'read' | 'read-write' = 'read',\n>(inner: T, access: TAccess = 'read' as TAccess): Ptr<'storage', T, TAccess> {\n return INTERNAL_createPtr('storage', inner, access);\n}\n\nexport function ptrUniform<T extends StorableData>(\n inner: T,\n): Ptr<'uniform', T, 'read'> {\n return INTERNAL_createPtr('uniform', inner, 'read');\n}\n\nexport function ptrHandle<T extends StorableData>(\n inner: T,\n): Ptr<'handle', T, 'read'> {\n return INTERNAL_createPtr('handle', inner, 'read');\n}\n\nfunction INTERNAL_createPtr<\n TAddressSpace extends AddressSpace,\n TInner extends StorableData,\n TAccess extends Access,\n>(\n addressSpace: TAddressSpace,\n inner: TInner,\n access: TAccess,\n): Ptr<TAddressSpace, TInner, TAccess> {\n return {\n [$internal]: true,\n type: 'ptr',\n addressSpace,\n inner,\n access,\n } as Ptr<TAddressSpace, TInner, TAccess>;\n}\n","import { createDualImpl } from '../core/function/dualImpl.ts';\nimport { $internal } from '../shared/symbols.ts';\nimport { UnknownData } from './dataTypes.ts';\nimport { snip, type Snippet } from './snippet.ts';\nimport type { AnyData, Disarray } from './dataTypes.ts';\nimport { schemaCallWrapper } from './schemaCallWrapper.ts';\nimport type { AnyWgslData } from './wgslTypes.ts';\n\n// ----------\n// Public API\n// ----------\n\ninterface DisarrayConstructor {\n <TElement extends AnyData>(\n elementType: TElement,\n ): (elementCount: number) => Disarray<TElement>;\n\n <TElement extends AnyData>(\n elementType: TElement,\n elementCount: number,\n ): Disarray<TElement>;\n}\n\n/**\n * Creates an array schema that can be used to construct vertex buffers.\n * Describes arrays with fixed-size length, storing elements of the same type.\n *\n * Elements in the schema are not aligned in respect to their `byteAlignment`,\n * unless they are explicitly decorated with the custom align attribute\n * via `d.align` function.\n *\n * @example\n * const disarray = d.disarrayOf(d.vec3f, 3); // packed array of vec3f\n *\n * @example\n * const disarray = d.disarrayOf(d.align(16, d.vec3f), 3);\n *\n * If `elementCount` is not specified, a partially applied function is returned.\n * @example\n * const disarray = d.disarrayOf(d.vec3f);\n * // ^? (n: number) => Disarray<d.Vec3f>\n *\n * @param elementType The type of elements in the array.\n * @param elementCount The number of elements in the array.\n */\nexport const disarrayOf = createDualImpl(\n // JS implementation\n ((elementType, elementCount) => {\n if (elementCount === undefined) {\n return (count: number) => cpu_disarrayOf(elementType, count);\n }\n return cpu_disarrayOf(elementType, elementCount);\n }) as DisarrayConstructor,\n // CODEGEN implementation\n (elementType, elementCount) => {\n if (elementCount === undefined || elementCount.value === undefined) {\n const partial = (count: Snippet) =>\n disarrayOf[$internal].gpuImpl(elementType, count);\n // Marking so the WGSL generator lets this function through\n partial[$internal] = true;\n\n return snip(partial, UnknownData);\n }\n\n if (typeof elementCount.value !== 'number') {\n throw new Error(\n `Cannot create disarray schema with count unknown at compile-time: '${elementCount.value}'`,\n );\n }\n\n return snip(\n cpu_disarrayOf(elementType.value as AnyWgslData, elementCount.value),\n elementType.value as AnyWgslData,\n );\n },\n 'disarrayOf',\n);\n\nexport function cpu_disarrayOf<TElement extends AnyData>(\n elementType: TElement,\n elementCount: number,\n): Disarray<TElement> {\n // In the schema call, create and return a deep copy\n // by wrapping all the values in `elementType` schema calls.\n const disarraySchema = (elements?: TElement[]) => {\n if (elements && elements.length !== elementCount) {\n throw new Error(\n `Disarray schema of ${elementCount} elements of type ${elementType.type} called with ${elements.length} argument(s).`,\n );\n }\n\n return Array.from(\n { length: elementCount },\n (_, i) => schemaCallWrapper(elementType, elements?.[i]),\n );\n };\n Object.setPrototypeOf(disarraySchema, DisarrayImpl);\n\n disarraySchema.elementType = elementType;\n\n if (!Number.isInteger(elementCount) || elementCount < 0) {\n throw new Error(\n `Cannot create disarray schema with invalid element count: ${elementCount}.`,\n );\n }\n disarraySchema.elementCount = elementCount;\n\n return disarraySchema as unknown as Disarray<TElement>;\n}\n\n// --------------\n// Implementation\n// --------------\n\nconst DisarrayImpl = {\n [$internal]: true,\n type: 'disarray',\n\n toString(this: Disarray): string {\n return `disarrayOf(${this.elementType}, ${this.elementCount})`;\n },\n};\n","import { getName, setName } from '../shared/meta.ts';\nimport { $internal } from '../shared/symbols.ts';\nimport type { AnyData, Unstruct } from './dataTypes.ts';\nimport { schemaCallWrapper } from './schemaCallWrapper.ts';\nimport type { BaseData } from './wgslTypes.ts';\n\n// ----------\n// Public API\n// ----------\n\n/**\n * Creates a loose struct schema that can be used to construct vertex buffers.\n * Describes structs with members of both loose and non-loose types.\n *\n * The order of members matches the passed in properties object.\n * Members are not aligned in respect to their `byteAlignment`,\n * unless they are explicitly decorated with the custom align attribute\n * via `d.align` function.\n *\n * @example\n * const CircleStruct = d.unstruct({ radius: d.f32, pos: d.vec3f }); // packed struct with no padding\n *\n * @example\n * const CircleStruct = d.unstruct({ radius: d.f32, pos: d.align(16, d.vec3f) });\n *\n * @param properties Record with `string` keys and `TgpuData` or `TgpuLooseData` values,\n * each entry describing one struct member.\n */\nexport function unstruct<TProps extends Record<string, BaseData>>(\n properties: TProps,\n): Unstruct<TProps> {\n // In the schema call, create and return a deep copy\n // by wrapping all the values in corresponding schema calls.\n const unstructSchema = (instanceProps?: TProps) =>\n Object.fromEntries(\n Object.entries(properties).map(([key, schema]) => [\n key,\n schemaCallWrapper(schema as AnyData, instanceProps?.[key]),\n ]),\n );\n Object.setPrototypeOf(unstructSchema, UnstructImpl);\n unstructSchema.propTypes = properties;\n\n return unstructSchema as unknown as Unstruct<TProps>;\n}\n\n// --------------\n// Implementation\n// --------------\n\nconst UnstructImpl = {\n [$internal]: true,\n type: 'unstruct',\n\n $name(label: string) {\n setName(this, label);\n return this;\n },\n\n toString(): string {\n return `unstruct:${getName(this) ?? '<unnamed>'}`;\n },\n};\n"]}
package/chunk-PO6SIMTQ.js DELETED
@@ -1,2 +0,0 @@
1
- import{S as q,T as W,U as u,W as _}from"./chunk-T2GBOTUH.js";import{$ as b,Ea as r,Ia as w,Ma as v,Oa as c,Ra as B,Sa as o,Ua as i,Va as n,Ya as h,_a as F,a as V,aa as y,ab as U,bb as k,db as N,fb as D,gb as a,ib as p,jb as f,kb as E,r as M,v as z}from"./chunk-XEUNEHAZ.js";var ae=c({name:"bitcastU32toF32",normalImpl:(e=>typeof e=="number"?q(e):u.bitcastU32toF32[e.kind](e)),codegenImpl:e=>r`bitcast<f32>(${e})`,signature:(...e)=>{let t=w(e,[o])??e;return{argTypes:t,returnType:z(t[0])?t[0].type==="vec2u"?h:t[0].type==="vec3u"?k:a:n}}}),ne=c({name:"bitcastU32toI32",normalImpl:(e=>typeof e=="number"?W(e):u.bitcastU32toI32[e.kind](e)),codegenImpl:e=>r`bitcast<i32>(${e})`,signature:(...e)=>{let t=w(e,[o])??e;return{argTypes:t,returnType:z(t[0])?t[0].type==="vec2u"?F:t[0].type==="vec3u"?N:p:i}}});import*as m from"typed-binary";var ie=v(e=>{let t=new ArrayBuffer(4);new m.BufferWriter(t).writeUint32(e);let s=new m.BufferReader(t);return h(s.readFloat16(),s.readFloat16())},e=>y(r`unpack2x16float(${e})`,h),"unpack2x16float"),pe=v(e=>{let t=new ArrayBuffer(4),l=new m.BufferWriter(t);l.writeFloat16(e.x),l.writeFloat16(e.y);let s=new m.BufferReader(t);return o(s.readUint32())},e=>y(r`pack2x16float(${e})`,o),"pack2x16float"),fe=v(e=>{let t=new ArrayBuffer(4);new m.BufferWriter(t).writeUint32(e);let s=new m.BufferReader(t);return a(s.readUint8()/255,s.readUint8()/255,s.readUint8()/255,s.readUint8()/255)},e=>y(r`unpack4x8unorm(${e})`,a),"unpack4x8unorm"),ue=v(e=>{let t=new ArrayBuffer(4),l=new m.BufferWriter(t);l.writeUint8(e.x*255),l.writeUint8(e.y*255),l.writeUint8(e.z*255),l.writeUint8(e.w*255);let s=new m.BufferReader(t);return o(s.readUint32())},e=>y(r`pack4x8unorm(${e})`,o),"pack4x8unorm");function T(e){return e.type.includes("2")?U:e.type.includes("3")?D:E}var Re=c({name:"allEq",signature:(...e)=>({argTypes:e,returnType:B}),normalImpl:(e,t)=>$(x(e,t)),codegenImpl:(e,t)=>r`all(${e} == ${t})`}),x=(e,t)=>u.eq[e.kind](e,t),Ae=c({name:"eq",signature:(...e)=>({argTypes:e,returnType:T(e[0])}),normalImpl:x,codegenImpl:(e,t)=>r`(${e} == ${t})`}),Se=c({name:"ne",signature:(...e)=>({argTypes:e,returnType:T(e[0])}),normalImpl:(e,t)=>d(x(e,t)),codegenImpl:(e,t)=>r`(${e} != ${t})`}),A=(e,t)=>u.lt[e.kind](e,t),Me=c({name:"lt",signature:(...e)=>({argTypes:e,returnType:T(e[0])}),normalImpl:A,codegenImpl:(e,t)=>r`(${e} < ${t})`}),ze=c({name:"le",signature:(...e)=>({argTypes:e,returnType:T(e[0])}),normalImpl:(e,t)=>I(A(e,t),x(e,t)),codegenImpl:(e,t)=>r`(${e} <= ${t})`}),we=c({name:"gt",signature:(...e)=>({argTypes:e,returnType:T(e[0])}),normalImpl:(e,t)=>O(d(A(e,t)),d(x(e,t))),codegenImpl:(e,t)=>r`(${e} > ${t})`}),Ie=c({name:"ge",signature:(...e)=>({argTypes:e,returnType:T(e[0])}),normalImpl:(e,t)=>d(A(e,t)),codegenImpl:(e,t)=>r`(${e} >= ${t})`}),d=e=>u.neg[e.kind](e),$e=c({name:"not",signature:(...e)=>({argTypes:e,returnType:e[0]}),normalImpl:d,codegenImpl:e=>r`!(${e})`}),I=(e,t)=>u.or[e.kind](e,t),Ve=c({name:"or",signature:(...e)=>({argTypes:e,returnType:e[0]}),normalImpl:I,codegenImpl:(e,t)=>r`(${e} | ${t})`}),O=(e,t)=>d(I(d(e),d(t))),Fe=c({name:"and",signature:(...e)=>({argTypes:e,returnType:e[0]}),normalImpl:O,codegenImpl:(e,t)=>r`(${e} & ${t})`}),$=e=>u.all[e.kind](e),Ue=c({name:"all",signature:(...e)=>({argTypes:e,returnType:B}),normalImpl:$,codegenImpl:e=>r`all(${e})`}),ke=c({name:"any",signature:(...e)=>({argTypes:e,returnType:B}),normalImpl:e=>!$(d(e)),codegenImpl:e=>r`any(${e})`}),Ne=c({name:"isCloseTo",signature:(...e)=>({argTypes:e,returnType:B}),normalImpl:(e,t,l=.01)=>typeof e=="number"&&typeof t=="number"?Math.abs(e-t)<l:M(e)&&M(t)?u.isCloseToZero[e.kind](_[V].jsImpl(e,t),l):!1,codegenImpl:(e,t,l=y(.01,n))=>b(e)&&b(t)?r`(abs(f32(${e}) - f32(${t})) <= ${l})`:!b(e)&&!b(t)?r`all(abs(${e} - ${t}) <= (${e} - ${e}) + ${l})`:"false"});function j(e,t,l){return typeof l=="boolean"?l?t:e:u.select[e.kind](e,t,l)}var De=c({name:"select",signature:(...e)=>({argTypes:e,returnType:e[0]}),normalImpl:j,codegenImpl:(e,t,l)=>r`select(${e}, ${t}, ${l})`});var L={r8unorm:{channelType:n,vectorType:a,texelSize:1,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!0,storageBindings:["write-only","read-only","read-write"]},r8snorm:{channelType:n,vectorType:a,texelSize:1,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:["write-only","read-only"]},r8uint:{channelType:o,vectorType:f,texelSize:1,sampleTypes:["uint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only","read-write"]},r8sint:{channelType:i,vectorType:p,texelSize:1,sampleTypes:["sint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only","read-write"]},rg8unorm:{channelType:n,vectorType:a,texelSize:2,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!0,storageBindings:["write-only","read-only"]},rg8snorm:{channelType:n,vectorType:a,texelSize:2,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:["write-only","read-only"]},rg8uint:{channelType:o,vectorType:f,texelSize:2,sampleTypes:["uint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only"]},rg8sint:{channelType:i,vectorType:p,texelSize:2,sampleTypes:["sint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only"]},rgba8unorm:{channelType:n,vectorType:a,texelSize:4,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!0,storageBindings:["write-only","read-only","read-write"]},"rgba8unorm-srgb":{channelType:n,vectorType:a,texelSize:4,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!0,storageBindings:null},rgba8snorm:{channelType:n,vectorType:a,texelSize:4,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only"]},rgba8uint:{channelType:o,vectorType:f,texelSize:4,sampleTypes:["uint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only","read-write"]},rgba8sint:{channelType:i,vectorType:p,texelSize:4,sampleTypes:["sint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only","read-write"]},bgra8unorm:{channelType:n,vectorType:a,texelSize:4,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!0,storageBindings:["write-only"]},"bgra8unorm-srgb":{channelType:n,vectorType:a,texelSize:4,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!0,storageBindings:null},r16unorm:{channelType:n,vectorType:a,texelSize:2,sampleTypes:["unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only"]},r16snorm:{channelType:n,vectorType:a,texelSize:2,sampleTypes:["unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only"]},r16uint:{channelType:o,vectorType:f,texelSize:2,sampleTypes:["uint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only","read-write"]},r16sint:{channelType:i,vectorType:p,texelSize:2,sampleTypes:["sint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only","read-write"]},r16float:{channelType:n,vectorType:a,texelSize:2,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!0,storageBindings:["write-only","read-only","read-write"]},rg16unorm:{channelType:n,vectorType:a,texelSize:4,sampleTypes:["unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only"]},rg16snorm:{channelType:n,vectorType:a,texelSize:4,sampleTypes:["unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only"]},rg16uint:{channelType:o,vectorType:f,texelSize:4,sampleTypes:["uint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only"]},rg16sint:{channelType:i,vectorType:p,texelSize:4,sampleTypes:["sint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only"]},rg16float:{channelType:n,vectorType:a,texelSize:4,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!0,storageBindings:["write-only","read-only"]},rgba16unorm:{channelType:n,vectorType:a,texelSize:8,sampleTypes:["unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only"]},rgba16snorm:{channelType:n,vectorType:a,texelSize:8,sampleTypes:["unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only"]},rgba16uint:{channelType:o,vectorType:f,texelSize:8,sampleTypes:["uint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only","read-write"]},rgba16sint:{channelType:i,vectorType:p,texelSize:8,sampleTypes:["sint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only","read-write"]},rgba16float:{channelType:n,vectorType:a,texelSize:8,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!0,storageBindings:["write-only","read-only","read-write"]},r32uint:{channelType:o,vectorType:f,texelSize:4,sampleTypes:["uint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:["write-only","read-only","read-write"]},r32sint:{channelType:i,vectorType:p,texelSize:4,sampleTypes:["sint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:["write-only","read-only","read-write"]},r32float:{channelType:n,vectorType:a,texelSize:4,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only","read-write"]},rg32uint:{channelType:o,vectorType:f,texelSize:8,sampleTypes:["uint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:["write-only","read-only"]},rg32sint:{channelType:i,vectorType:p,texelSize:8,sampleTypes:["sint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:["write-only","read-only"]},rg32float:{channelType:n,vectorType:a,texelSize:8,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!1,canResolve:!1,storageBindings:["write-only","read-only","read-write"]},rgba32uint:{channelType:o,vectorType:f,texelSize:16,sampleTypes:["uint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:["write-only","read-only","read-write"]},rgba32sint:{channelType:i,vectorType:p,texelSize:16,sampleTypes:["sint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:["write-only","read-only","read-write"]},rgba32float:{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!1,canResolve:!1,storageBindings:["write-only","read-only","read-write"]},rgb10a2uint:{channelType:o,vectorType:f,texelSize:4,sampleTypes:["uint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only"]},rgb10a2unorm:{channelType:n,vectorType:a,texelSize:4,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!0,storageBindings:["write-only","read-only"]},rg11b10ufloat:{channelType:n,vectorType:a,texelSize:4,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!0,storageBindings:["write-only","read-only"]},rgb9e5ufloat:{channelType:n,vectorType:a,texelSize:4,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},stencil8:{channelType:o,vectorType:f,texelSize:1,sampleTypes:["uint"],aspects:["stencil"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:null},depth16unorm:{channelType:n,vectorType:a,texelSize:2,sampleTypes:["depth","unfilterable-float"],aspects:["depth"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:null},depth24plus:{channelType:n,vectorType:a,texelSize:4,sampleTypes:["depth","unfilterable-float"],aspects:["depth"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:null},"depth24plus-stencil8":{channelType:n,vectorType:a,texelSize:4,sampleTypes:["depth","unfilterable-float"],aspects:["depth","stencil"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:null},depth32float:{channelType:n,vectorType:a,texelSize:4,sampleTypes:["depth","unfilterable-float"],aspects:["depth"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:null},"depth32float-stencil8":{channelType:n,vectorType:a,texelSize:4,sampleTypes:["depth","unfilterable-float"],aspects:["depth","stencil"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:null},"bc1-rgba-unorm":{channelType:n,vectorType:a,texelSize:8,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"bc1-rgba-unorm-srgb":{channelType:n,vectorType:a,texelSize:8,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"bc2-rgba-unorm":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"bc2-rgba-unorm-srgb":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"bc3-rgba-unorm":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"bc3-rgba-unorm-srgb":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"bc4-r-unorm":{channelType:n,vectorType:a,texelSize:8,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"bc4-r-snorm":{channelType:n,vectorType:a,texelSize:8,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"bc5-rg-unorm":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"bc5-rg-snorm":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"bc6h-rgb-ufloat":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"bc6h-rgb-float":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"bc7-rgba-unorm":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"bc7-rgba-unorm-srgb":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"etc2-rgb8unorm":{channelType:n,vectorType:a,texelSize:8,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"etc2-rgb8unorm-srgb":{channelType:n,vectorType:a,texelSize:8,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"etc2-rgb8a1unorm":{channelType:n,vectorType:a,texelSize:8,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"etc2-rgb8a1unorm-srgb":{channelType:n,vectorType:a,texelSize:8,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"etc2-rgba8unorm":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"etc2-rgba8unorm-srgb":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"eac-r11unorm":{channelType:n,vectorType:a,texelSize:8,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"eac-r11snorm":{channelType:n,vectorType:a,texelSize:8,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"eac-rg11unorm":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"eac-rg11snorm":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-4x4-unorm":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-4x4-unorm-srgb":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-5x4-unorm":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-5x4-unorm-srgb":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-5x5-unorm":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-5x5-unorm-srgb":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-6x5-unorm":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-6x5-unorm-srgb":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-6x6-unorm":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-6x6-unorm-srgb":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-8x5-unorm":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-8x5-unorm-srgb":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-8x6-unorm":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-8x6-unorm-srgb":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-8x8-unorm":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-8x8-unorm-srgb":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-10x5-unorm":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-10x5-unorm-srgb":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-10x6-unorm":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-10x6-unorm-srgb":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-10x8-unorm":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-10x8-unorm-srgb":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-10x10-unorm":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-10x10-unorm-srgb":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-12x10-unorm":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-12x10-unorm-srgb":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-12x12-unorm":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-12x12-unorm-srgb":{channelType:n,vectorType:a,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null}};function _e(e,t){let l=L[e];if(!l)throw new Error(`Unknown texture format: ${e}`);let s={...l};switch(e){case"r32float":case"rg32float":case"rgba32float":t.features.has("float32-filterable")||(s={...s,sampleTypes:l.sampleTypes.filter(S=>S!=="float")}),t.features.has("float32-blendable")||(s={...s,canBlend:!1});break;case"bgra8unorm":t.features.has("bgra8unorm-storage")||(s={...s,storageBindings:null});break;case"rg11b10ufloat":t.features.has("rg11b10ufloat-renderable")||(s={...s,canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1});break}if(s.storageBindings){let S=t.features.has("texture-formats-tier1"),G=t.features.has("texture-formats-tier2"),g=[...s.storageBindings],P=["r8unorm","r8uint","r8sint","r16uint","r16sint","r16float","rgba8unorm","rgba8uint","rgba8sint","rgba16uint","rgba16sint","rgba16float","r32uint","r32sint","r32float","rgba32uint","rgba32sint","rgba32float"],C=["r8snorm","rg8unorm","rg8snorm","rg8uint","rg8sint","rgba8snorm","r16unorm","r16snorm","rg16unorm","rg16snorm","rg16uint","rg16sint","rg16float","rgba16unorm","rgba16snorm","rgb10a2uint","rgb10a2unorm","rg11b10ufloat"];P.includes(e)&&!G&&(g=g.filter(R=>R!=="read-write")),C.includes(e)&&!S&&(g=g.filter(R=>R!=="write-only"&&R!=="read-only")),s={...s,storageBindings:g.length>0?g:null}}return s}var Ge=["f16","clip_distances","dual_source_blending","subgroups","primitive_index"],Pe={f16:"shader-f16",clip_distances:"clip-distances",dual_source_blending:"dual-source-blending",subgroups:"subgroups",primitive_index:"primitive-index"};export{L as a,_e as b,ae as c,ne as d,ie as e,pe as f,fe as g,ue as h,Ge as i,Pe as j,Re as k,Ae as l,Se as m,Me as n,ze as o,we as p,Ie as q,$e as r,Ve as s,Fe as t,Ue as u,ke as v,Ne as w,De as x};
2
- //# sourceMappingURL=chunk-PO6SIMTQ.js.map