@luma.gl/webgpu 9.0.0-alpha.2 → 9.0.0-alpha.21

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 (114) hide show
  1. package/LICENSE +32 -0
  2. package/dist/adapter/helpers/accessor-to-format.js.map +1 -1
  3. package/dist/adapter/helpers/convert-texture-format.d.ts +1 -1
  4. package/dist/adapter/helpers/convert-texture-format.js +0 -1
  5. package/dist/adapter/helpers/convert-texture-format.js.map +1 -1
  6. package/dist/adapter/helpers/generate-mipmaps.d.ts +1 -1
  7. package/dist/adapter/helpers/generate-mipmaps.js +1 -8
  8. package/dist/adapter/helpers/generate-mipmaps.js.map +1 -1
  9. package/dist/adapter/helpers/get-bind-group.d.ts +1 -1
  10. package/dist/adapter/helpers/get-bind-group.d.ts.map +1 -1
  11. package/dist/adapter/helpers/get-bind-group.js +0 -9
  12. package/dist/adapter/helpers/get-bind-group.js.map +1 -1
  13. package/dist/adapter/helpers/get-vertex-buffer-layout.d.ts +1 -1
  14. package/dist/adapter/helpers/get-vertex-buffer-layout.js +3 -17
  15. package/dist/adapter/helpers/get-vertex-buffer-layout.js.map +1 -1
  16. package/dist/adapter/helpers/webgpu-parameters.d.ts +1 -1
  17. package/dist/adapter/helpers/webgpu-parameters.d.ts.map +1 -1
  18. package/dist/adapter/helpers/webgpu-parameters.js +50 -47
  19. package/dist/adapter/helpers/webgpu-parameters.js.map +1 -1
  20. package/dist/adapter/resources/webgpu-buffer.d.ts +3 -4
  21. package/dist/adapter/resources/webgpu-buffer.d.ts.map +1 -1
  22. package/dist/adapter/resources/webgpu-buffer.js +12 -26
  23. package/dist/adapter/resources/webgpu-buffer.js.map +1 -1
  24. package/dist/adapter/resources/webgpu-command-encoder.d.ts +3 -4
  25. package/dist/adapter/resources/webgpu-command-encoder.d.ts.map +1 -1
  26. package/dist/adapter/resources/webgpu-command-encoder.js +7 -24
  27. package/dist/adapter/resources/webgpu-command-encoder.js.map +1 -1
  28. package/dist/adapter/resources/webgpu-compute-pass.d.ts +5 -5
  29. package/dist/adapter/resources/webgpu-compute-pass.d.ts.map +1 -1
  30. package/dist/adapter/resources/webgpu-compute-pass.js +11 -23
  31. package/dist/adapter/resources/webgpu-compute-pass.js.map +1 -1
  32. package/dist/adapter/resources/webgpu-compute-pipeline.d.ts +3 -3
  33. package/dist/adapter/resources/webgpu-compute-pipeline.d.ts.map +1 -1
  34. package/dist/adapter/resources/webgpu-compute-pipeline.js +3 -7
  35. package/dist/adapter/resources/webgpu-compute-pipeline.js.map +1 -1
  36. package/dist/adapter/resources/webgpu-external-texture.d.ts +4 -4
  37. package/dist/adapter/resources/webgpu-external-texture.d.ts.map +1 -1
  38. package/dist/adapter/resources/webgpu-external-texture.js +2 -9
  39. package/dist/adapter/resources/webgpu-external-texture.js.map +1 -1
  40. package/dist/adapter/resources/webgpu-framebuffer.d.ts +5 -5
  41. package/dist/adapter/resources/webgpu-framebuffer.d.ts.map +1 -1
  42. package/dist/adapter/resources/webgpu-framebuffer.js +12 -30
  43. package/dist/adapter/resources/webgpu-framebuffer.js.map +1 -1
  44. package/dist/adapter/resources/webgpu-query.js.map +1 -1
  45. package/dist/adapter/resources/webgpu-render-pass.d.ts +5 -5
  46. package/dist/adapter/resources/webgpu-render-pass.d.ts.map +1 -1
  47. package/dist/adapter/resources/webgpu-render-pass.js +17 -30
  48. package/dist/adapter/resources/webgpu-render-pass.js.map +1 -1
  49. package/dist/adapter/resources/webgpu-render-pipeline.d.ts +7 -4
  50. package/dist/adapter/resources/webgpu-render-pipeline.d.ts.map +1 -1
  51. package/dist/adapter/resources/webgpu-render-pipeline.js +25 -43
  52. package/dist/adapter/resources/webgpu-render-pipeline.js.map +1 -1
  53. package/dist/adapter/resources/webgpu-sampler.d.ts +3 -3
  54. package/dist/adapter/resources/webgpu-sampler.d.ts.map +1 -1
  55. package/dist/adapter/resources/webgpu-sampler.js +8 -7
  56. package/dist/adapter/resources/webgpu-sampler.js.map +1 -1
  57. package/dist/adapter/resources/webgpu-shader.d.ts +4 -4
  58. package/dist/adapter/resources/webgpu-shader.d.ts.map +1 -1
  59. package/dist/adapter/resources/webgpu-shader.js +2 -16
  60. package/dist/adapter/resources/webgpu-shader.js.map +1 -1
  61. package/dist/adapter/resources/webgpu-texture.d.ts +4 -4
  62. package/dist/adapter/resources/webgpu-texture.d.ts.map +1 -1
  63. package/dist/adapter/resources/webgpu-texture.js +4 -20
  64. package/dist/adapter/resources/webgpu-texture.js.map +1 -1
  65. package/dist/adapter/webgpu-canvas-context.d.ts +5 -7
  66. package/dist/adapter/webgpu-canvas-context.d.ts.map +1 -1
  67. package/dist/adapter/webgpu-canvas-context.js +10 -31
  68. package/dist/adapter/webgpu-canvas-context.js.map +1 -1
  69. package/dist/adapter/webgpu-device.d.ts +19 -19
  70. package/dist/adapter/webgpu-device.d.ts.map +1 -1
  71. package/dist/adapter/webgpu-device.js +42 -71
  72. package/dist/adapter/webgpu-device.js.map +1 -1
  73. package/dist/adapter/webgpu-types.js.map +1 -1
  74. package/dist/dist.dev.js +3060 -0
  75. package/dist/glsl/glsllang.js +0 -1
  76. package/dist/glsl/glsllang.js.map +1 -1
  77. package/dist/index.cjs +1442 -0
  78. package/dist/index.d.ts +5 -7
  79. package/dist/index.d.ts.map +1 -1
  80. package/dist/index.js +5 -7
  81. package/dist/index.js.map +1 -1
  82. package/dist.min.js +17 -0
  83. package/package.json +18 -9
  84. package/src/.DS_Store +0 -0
  85. package/src/adapter/.DS_Store +0 -0
  86. package/src/adapter/helpers/generate-mipmaps.ts +1 -1
  87. package/src/adapter/helpers/get-bind-group.ts +4 -4
  88. package/src/adapter/helpers/get-vertex-buffer-layout.ts +3 -3
  89. package/src/adapter/helpers/webgpu-parameters.ts +55 -46
  90. package/src/adapter/resources/webgpu-buffer.ts +6 -10
  91. package/src/adapter/resources/webgpu-command-encoder.ts +22 -20
  92. package/src/adapter/resources/webgpu-compute-pass.ts +12 -12
  93. package/src/adapter/resources/webgpu-compute-pipeline.ts +5 -4
  94. package/src/adapter/resources/webgpu-external-texture.ts +4 -4
  95. package/src/adapter/resources/webgpu-framebuffer.ts +18 -18
  96. package/src/adapter/resources/webgpu-query.ts +2 -2
  97. package/src/adapter/resources/webgpu-render-pass.ts +15 -12
  98. package/src/adapter/resources/webgpu-render-pipeline.ts +32 -15
  99. package/src/adapter/resources/webgpu-sampler.ts +11 -4
  100. package/src/adapter/resources/webgpu-shader.ts +7 -5
  101. package/src/adapter/resources/webgpu-texture.ts +7 -6
  102. package/src/adapter/webgpu-canvas-context.ts +16 -12
  103. package/src/adapter/webgpu-device.ts +63 -50
  104. package/src/index.ts +6 -9
  105. package/dist/bundle.d.ts +0 -2
  106. package/dist/bundle.d.ts.map +0 -1
  107. package/dist/bundle.js +0 -5
  108. package/dist/bundle.js.map +0 -1
  109. package/dist/init.d.ts +0 -2
  110. package/dist/init.d.ts.map +0 -1
  111. package/dist/init.js +0 -4
  112. package/dist/init.js.map +0 -1
  113. package/src/bundle.ts +0 -4
  114. package/src/init.ts +0 -4
package/dist/index.d.ts CHANGED
@@ -1,8 +1,6 @@
1
- import '@luma.gl/api';
2
- import './init';
3
- export { default as WebGPUDevice } from './adapter/webgpu-device';
4
- export { default as WebGPUBuffer } from './adapter/resources/webgpu-buffer';
5
- export { default as WebGPUTexture } from './adapter/resources/webgpu-texture';
6
- export { default as WebGPUSampler } from './adapter/resources/webgpu-sampler';
7
- export { default as WebGPUShader } from './adapter/resources/webgpu-shader';
1
+ export { WebGPUDevice } from './adapter/webgpu-device';
2
+ export { WebGPUBuffer } from './adapter/resources/webgpu-buffer';
3
+ export { WebGPUTexture } from './adapter/resources/webgpu-texture';
4
+ export { WebGPUSampler } from './adapter/resources/webgpu-sampler';
5
+ export { WebGPUShader } from './adapter/resources/webgpu-shader';
8
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,cAAc,CAAC;AACtB,OAAO,QAAQ,CAAA;AAGf,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,yBAAyB,CAAC;AAGhE,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAC,OAAO,IAAI,aAAa,EAAC,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAC,OAAO,IAAI,aAAa,EAAC,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AAGrD,OAAO,EAAC,YAAY,EAAC,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAC,aAAa,EAAC,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAC,aAAa,EAAC,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAC,YAAY,EAAC,MAAM,mCAAmC,CAAC"}
package/dist/index.js CHANGED
@@ -1,8 +1,6 @@
1
- import '@luma.gl/api';
2
- import './init';
3
- export { default as WebGPUDevice } from './adapter/webgpu-device';
4
- export { default as WebGPUBuffer } from './adapter/resources/webgpu-buffer';
5
- export { default as WebGPUTexture } from './adapter/resources/webgpu-texture';
6
- export { default as WebGPUSampler } from './adapter/resources/webgpu-sampler';
7
- export { default as WebGPUShader } from './adapter/resources/webgpu-shader';
1
+ export { WebGPUDevice } from "./adapter/webgpu-device.js";
2
+ export { WebGPUBuffer } from "./adapter/resources/webgpu-buffer.js";
3
+ export { WebGPUTexture } from "./adapter/resources/webgpu-texture.js";
4
+ export { WebGPUSampler } from "./adapter/resources/webgpu-sampler.js";
5
+ export { WebGPUShader } from "./adapter/resources/webgpu-shader.js";
8
6
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["default","WebGPUDevice","WebGPUBuffer","WebGPUTexture","WebGPUSampler","WebGPUShader"],"mappings":"AAEA,OAAO,cAAP;AACA,OAAO,QAAP;AAGA,SAAQA,OAAO,IAAIC,YAAnB,QAAsC,yBAAtC;AAGA,SAAQD,OAAO,IAAIE,YAAnB,QAAsC,mCAAtC;AACA,SAAQF,OAAO,IAAIG,aAAnB,QAAuC,oCAAvC;AACA,SAAQH,OAAO,IAAII,aAAnB,QAAuC,oCAAvC;AACA,SAAQJ,OAAO,IAAIK,YAAnB,QAAsC,mCAAtC","sourcesContent":["\n// Initialize any global state\nimport '@luma.gl/api';\nimport './init'\n\n// WEBGPU ADAPTER\nexport {default as WebGPUDevice} from './adapter/webgpu-device';\n\n// WEBGPU CLASSES (typically not accessed directly)\nexport {default as WebGPUBuffer} from './adapter/resources/webgpu-buffer';\nexport {default as WebGPUTexture} from './adapter/resources/webgpu-texture';\nexport {default as WebGPUSampler} from './adapter/resources/webgpu-sampler';\nexport {default as WebGPUShader} from './adapter/resources/webgpu-shader';\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["WebGPUDevice","WebGPUBuffer","WebGPUTexture","WebGPUSampler","WebGPUShader"],"sources":["../src/index.ts"],"sourcesContent":["// luma.gl, MIT license\n\n// WEBGPU ADAPTER\nexport {WebGPUDevice} from './adapter/webgpu-device';\n\n// WEBGPU CLASSES (typically not accessed directly)\nexport {WebGPUBuffer} from './adapter/resources/webgpu-buffer';\nexport {WebGPUTexture} from './adapter/resources/webgpu-texture';\nexport {WebGPUSampler} from './adapter/resources/webgpu-sampler';\nexport {WebGPUShader} from './adapter/resources/webgpu-shader';\n"],"mappings":"SAGQA,YAAY;AAAA,SAGZC,YAAY;AAAA,SACZC,aAAa;AAAA,SACbC,aAAa;AAAA,SACbC,YAAY"}
package/dist.min.js ADDED
@@ -0,0 +1,17 @@
1
+ (function webpackUniversalModuleDefinition(root, factory) {
2
+ if (typeof exports === 'object' && typeof module === 'object')
3
+ module.exports = factory();
4
+ else if (typeof define === 'function' && define.amd) define([], factory);
5
+ else if (typeof exports === 'object') exports['luma'] = factory();
6
+ else root['luma'] = factory();})(globalThis, function () {
7
+ var __exports__=(()=>{var Cr=Object.create;var xe=Object.defineProperty;var Er=Object.getOwnPropertyDescriptor;var Tr=Object.getOwnPropertyNames;var Ar=Object.getPrototypeOf,kr=Object.prototype.hasOwnProperty;var He=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),Br=(t,n)=>{for(var e in n)xe(t,e,{get:n[e],enumerable:!0})},lt=(t,n,e,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of Tr(n))!kr.call(t,o)&&o!==e&&xe(t,o,{get:()=>n[o],enumerable:!(r=Er(n,o))||r.enumerable});return t};var Ve=(t,n,e)=>(e=t!=null?Cr(Ar(t)):{},lt(n||!t||!t.__esModule?xe(e,"default",{value:t,enumerable:!0}):e,t)),Dr=t=>lt(xe({},"__esModule",{value:!0}),t);var ht=He((Uo,$)=>{function Ye(t){return $.exports=Ye=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(n){return typeof n}:function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},$.exports.__esModule=!0,$.exports.default=$.exports,Ye(t)}$.exports=Ye,$.exports.__esModule=!0,$.exports.default=$.exports});var mt=He((Mo,q)=>{var jr=ht().default;function dt(){"use strict";q.exports=dt=function(){return t},q.exports.__esModule=!0,q.exports.default=q.exports;var t={},n=Object.prototype,e=n.hasOwnProperty,r=Object.defineProperty||function(h,l,p){h[l]=p.value},o=typeof Symbol=="function"?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function u(h,l,p){return Object.defineProperty(h,l,{value:p,enumerable:!0,configurable:!0,writable:!0}),h[l]}try{u({},"")}catch{u=function(p,b,O){return p[b]=O}}function m(h,l,p,b){var O=l&&l.prototype instanceof R?l:R,_=Object.create(O.prototype),T=new ge(b||[]);return r(_,"_invoke",{value:We(h,p,T)}),_}function S(h,l,p){try{return{type:"normal",arg:h.call(l,p)}}catch(b){return{type:"throw",arg:b}}}t.wrap=m;var y={};function R(){}function C(){}function E(){}var z={};u(z,i,function(){return this});var W=Object.getPrototypeOf,K=W&&W(W(se([])));K&&K!==n&&e.call(K,i)&&(z=K);var I=E.prototype=R.prototype=Object.create(z);function H(h){["next","throw","return"].forEach(function(l){u(h,l,function(p){return this._invoke(l,p)})})}function Q(h,l){function p(O,_,T,G){var L=S(h[O],h,_);if(L.type!=="throw"){var Z=L.arg,X=Z.value;return X&&jr(X)=="object"&&e.call(X,"__await")?l.resolve(X.__await).then(function(ee){p("next",ee,T,G)},function(ee){p("throw",ee,T,G)}):l.resolve(X).then(function(ee){Z.value=ee,T(Z)},function(ee){return p("throw",ee,T,G)})}G(L.arg)}var b;r(this,"_invoke",{value:function(_,T){function G(){return new l(function(L,Z){p(_,T,L,Z)})}return b=b?b.then(G,G):G()}})}function We(h,l,p){var b="suspendedStart";return function(O,_){if(b==="executing")throw new Error("Generator is already running");if(b==="completed"){if(O==="throw")throw _;return Oe()}for(p.method=O,p.arg=_;;){var T=p.delegate;if(T){var G=me(T,p);if(G){if(G===y)continue;return G}}if(p.method==="next")p.sent=p._sent=p.arg;else if(p.method==="throw"){if(b==="suspendedStart")throw b="completed",p.arg;p.dispatchException(p.arg)}else p.method==="return"&&p.abrupt("return",p.arg);b="executing";var L=S(h,l,p);if(L.type==="normal"){if(b=p.done?"completed":"suspendedYield",L.arg===y)continue;return{value:L.arg,done:p.done}}L.type==="throw"&&(b="completed",p.method="throw",p.arg=L.arg)}}}function me(h,l){var p=l.method,b=h.iterator[p];if(b===void 0)return l.delegate=null,p==="throw"&&h.iterator.return&&(l.method="return",l.arg=void 0,me(h,l),l.method==="throw")||p!=="return"&&(l.method="throw",l.arg=new TypeError("The iterator does not provide a '"+p+"' method")),y;var O=S(b,h.iterator,l.arg);if(O.type==="throw")return l.method="throw",l.arg=O.arg,l.delegate=null,y;var _=O.arg;return _?_.done?(l[h.resultName]=_.value,l.next=h.nextLoc,l.method!=="return"&&(l.method="next",l.arg=void 0),l.delegate=null,y):_:(l.method="throw",l.arg=new TypeError("iterator result is not an object"),l.delegate=null,y)}function ze(h){var l={tryLoc:h[0]};1 in h&&(l.catchLoc=h[1]),2 in h&&(l.finallyLoc=h[2],l.afterLoc=h[3]),this.tryEntries.push(l)}function ae(h){var l=h.completion||{};l.type="normal",delete l.arg,h.completion=l}function ge(h){this.tryEntries=[{tryLoc:"root"}],h.forEach(ze,this),this.reset(!0)}function se(h){if(h){var l=h[i];if(l)return l.call(h);if(typeof h.next=="function")return h;if(!isNaN(h.length)){var p=-1,b=function O(){for(;++p<h.length;)if(e.call(h,p))return O.value=h[p],O.done=!1,O;return O.value=void 0,O.done=!0,O};return b.next=b}}return{next:Oe}}function Oe(){return{value:void 0,done:!0}}return C.prototype=E,r(I,"constructor",{value:E,configurable:!0}),r(E,"constructor",{value:C,configurable:!0}),C.displayName=u(E,c,"GeneratorFunction"),t.isGeneratorFunction=function(h){var l=typeof h=="function"&&h.constructor;return!!l&&(l===C||(l.displayName||l.name)==="GeneratorFunction")},t.mark=function(h){return Object.setPrototypeOf?Object.setPrototypeOf(h,E):(h.__proto__=E,u(h,c,"GeneratorFunction")),h.prototype=Object.create(I),h},t.awrap=function(h){return{__await:h}},H(Q.prototype),u(Q.prototype,a,function(){return this}),t.AsyncIterator=Q,t.async=function(h,l,p,b,O){O===void 0&&(O=Promise);var _=new Q(m(h,l,p,b),O);return t.isGeneratorFunction(l)?_:_.next().then(function(T){return T.done?T.value:_.next()})},H(I),u(I,c,"Generator"),u(I,i,function(){return this}),u(I,"toString",function(){return"[object Generator]"}),t.keys=function(h){var l=Object(h),p=[];for(var b in l)p.push(b);return p.reverse(),function O(){for(;p.length;){var _=p.pop();if(_ in l)return O.value=_,O.done=!1,O}return O.done=!0,O}},t.values=se,ge.prototype={constructor:ge,reset:function(l){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(ae),!l)for(var p in this)p.charAt(0)==="t"&&e.call(this,p)&&!isNaN(+p.slice(1))&&(this[p]=void 0)},stop:function(){this.done=!0;var l=this.tryEntries[0].completion;if(l.type==="throw")throw l.arg;return this.rval},dispatchException:function(l){if(this.done)throw l;var p=this;function b(Z,X){return T.type="throw",T.arg=l,p.next=Z,X&&(p.method="next",p.arg=void 0),!!X}for(var O=this.tryEntries.length-1;O>=0;--O){var _=this.tryEntries[O],T=_.completion;if(_.tryLoc==="root")return b("end");if(_.tryLoc<=this.prev){var G=e.call(_,"catchLoc"),L=e.call(_,"finallyLoc");if(G&&L){if(this.prev<_.catchLoc)return b(_.catchLoc,!0);if(this.prev<_.finallyLoc)return b(_.finallyLoc)}else if(G){if(this.prev<_.catchLoc)return b(_.catchLoc,!0)}else{if(!L)throw new Error("try statement without catch or finally");if(this.prev<_.finallyLoc)return b(_.finallyLoc)}}}},abrupt:function(l,p){for(var b=this.tryEntries.length-1;b>=0;--b){var O=this.tryEntries[b];if(O.tryLoc<=this.prev&&e.call(O,"finallyLoc")&&this.prev<O.finallyLoc){var _=O;break}}_&&(l==="break"||l==="continue")&&_.tryLoc<=p&&p<=_.finallyLoc&&(_=null);var T=_?_.completion:{};return T.type=l,T.arg=p,_?(this.method="next",this.next=_.finallyLoc,y):this.complete(T)},complete:function(l,p){if(l.type==="throw")throw l.arg;return l.type==="break"||l.type==="continue"?this.next=l.arg:l.type==="return"?(this.rval=this.arg=l.arg,this.method="return",this.next="end"):l.type==="normal"&&p&&(this.next=p),y},finish:function(l){for(var p=this.tryEntries.length-1;p>=0;--p){var b=this.tryEntries[p];if(b.finallyLoc===l)return this.complete(b.completion,b.afterLoc),ae(b),y}},catch:function(l){for(var p=this.tryEntries.length-1;p>=0;--p){var b=this.tryEntries[p];if(b.tryLoc===l){var O=b.completion;if(O.type==="throw"){var _=O.arg;ae(b)}return _}}throw new Error("illegal catch attempt")},delegateYield:function(l,p,b){return this.delegate={iterator:se(l),resultName:p,nextLoc:b},this.method==="next"&&(this.arg=void 0),y}},t}q.exports=dt,q.exports.__esModule=!0,q.exports.default=q.exports});var Ce=He((Fo,gt)=>{var Re=mt()();gt.exports=Re;try{regeneratorRuntime=Re}catch{typeof globalThis=="object"?globalThis.regeneratorRuntime=Re:Function("r","regeneratorRuntime = r")(Re)}});var vo={};Br(vo,{WebGPUBuffer:()=>Ne,WebGPUDevice:()=>ct,WebGPUSampler:()=>M,WebGPUShader:()=>Ue,WebGPUTexture:()=>ie});function ft(t,n,e,r,o,i,a){try{var c=t[i](a),u=c.value}catch(m){e(m);return}c.done?n(u):Promise.resolve(u).then(r,o)}function Y(t){return function(){var n=this,e=arguments;return new Promise(function(r,o){var i=t.apply(n,e);function a(u){ft(i,r,o,a,c,"next",u)}function c(u){ft(i,r,o,a,c,"throw",u)}a(void 0)})}}function g(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}function V(t){return V=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(n){return typeof n}:function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},V(t)}function Ke(t,n){if(V(t)!=="object"||t===null)return t;var e=t[Symbol.toPrimitive];if(e!==void 0){var r=e.call(t,n||"default");if(V(r)!=="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(n==="string"?String:Number)(t)}function ve(t){var n=Ke(t,"string");return V(n)==="symbol"?n:String(n)}function pt(t,n){for(var e=0;e<n.length;e++){var r=n[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,ve(r.key),r)}}function v(t,n,e){return n&&pt(t.prototype,n),e&&pt(t,e),Object.defineProperty(t,"prototype",{writable:!1}),t}function f(t){if(t===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function ye(t,n){return ye=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,o){return r.__proto__=o,r},ye(t,n)}function P(t,n){if(typeof n!="function"&&n!==null)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(n&&n.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),n&&ye(t,n)}function w(t,n){if(n&&(V(n)==="object"||typeof n=="function"))return n;if(n!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return f(t)}function d(t){return d=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},d(t)}function s(t,n,e){return n=ve(n),n in t?Object.defineProperty(t,n,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[n]=e,t}var Se=Ve(Ce(),1);function $e(t){if(typeof window<"u"&&typeof window.process=="object"&&window.process.type==="renderer"||typeof process<"u"&&typeof process.versions=="object"&&Boolean(process.versions.electron))return!0;let n=typeof navigator=="object"&&typeof navigator.userAgent=="string"&&navigator.userAgent,e=t||n;return!!(e&&e.indexOf("Electron")>=0)}function D(){return!(typeof process=="object"&&String(process)==="[object process]"&&!process.browser)||$e()}var Ir=globalThis.self||globalThis.window||globalThis.global,ue=globalThis.window||globalThis.self||globalThis.global,Gr=globalThis.document||{},te=globalThis.process||{},Lr=globalThis.console,Vo=globalThis.navigator||{};var Ee=typeof __VERSION__<"u"?__VERSION__:"untranspiled source",$o=D();function Nr(t){try{let n=window[t],e="__storage_test__";return n.setItem(e,e),n.removeItem(e),n}catch{return null}}var Te=class{constructor(n,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"sessionStorage";s(this,"storage",void 0),s(this,"id",void 0),s(this,"config",void 0),this.storage=Nr(r),this.id=n,this.config=e,this._loadConfiguration()}getConfiguration(){return this.config}setConfiguration(n){if(Object.assign(this.config,n),this.storage){let e=JSON.stringify(this.config);this.storage.setItem(this.id,e)}}_loadConfiguration(){let n={};if(this.storage){let e=this.storage.getItem(this.id);n=e?JSON.parse(e):{}}return Object.assign(this.config,n),this}};function vt(t){let n;return t<10?n="".concat(t.toFixed(2),"ms"):t<100?n="".concat(t.toFixed(1),"ms"):t<1e3?n="".concat(t.toFixed(0),"ms"):n="".concat((t/1e3).toFixed(2),"s"),n}function yt(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:8,e=Math.max(n-t.length,0);return"".concat(" ".repeat(e)).concat(t)}function Ae(t,n,e){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:600,o=t.src.replace(/\(/g,"%28").replace(/\)/g,"%29");t.width>r&&(e=Math.min(e,r/t.width));let i=t.width*e,a=t.height*e,c=["font-size:1px;","padding:".concat(Math.floor(a/2),"px ").concat(Math.floor(i/2),"px;"),"line-height:".concat(a,"px;"),"background:url(".concat(o,");"),"background-size:".concat(i,"px ").concat(a,"px;"),"color:transparent;"].join("");return["".concat(n," %c+"),c]}var ke;(function(t){t[t.BLACK=30]="BLACK",t[t.RED=31]="RED",t[t.GREEN=32]="GREEN",t[t.YELLOW=33]="YELLOW",t[t.BLUE=34]="BLUE",t[t.MAGENTA=35]="MAGENTA",t[t.CYAN=36]="CYAN",t[t.WHITE=37]="WHITE",t[t.BRIGHT_BLACK=90]="BRIGHT_BLACK",t[t.BRIGHT_RED=91]="BRIGHT_RED",t[t.BRIGHT_GREEN=92]="BRIGHT_GREEN",t[t.BRIGHT_YELLOW=93]="BRIGHT_YELLOW",t[t.BRIGHT_BLUE=94]="BRIGHT_BLUE",t[t.BRIGHT_MAGENTA=95]="BRIGHT_MAGENTA",t[t.BRIGHT_CYAN=96]="BRIGHT_CYAN",t[t.BRIGHT_WHITE=97]="BRIGHT_WHITE"})(ke||(ke={}));var Ur=10;function bt(t){return typeof t!="string"?t:(t=t.toUpperCase(),ke[t]||ke.WHITE)}function _t(t,n,e){if(!D&&typeof t=="string"){if(n){let r=bt(n);t="\x1B[".concat(r,"m").concat(t,"\x1B[39m")}if(e){let r=bt(e);t="\x1B[".concat(r+Ur,"m").concat(t,"\x1B[49m")}}return t}function Pt(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:["constructor"],e=Object.getPrototypeOf(t),r=Object.getOwnPropertyNames(e),o=t;for(let i of r){let a=o[i];typeof a=="function"&&(n.find(c=>i===c)||(o[i]=a.bind(t)))}}function ce(t,n){if(!t)throw new Error(n||"Assertion failed")}function re(){let t;if(D()&&ue.performance){var n,e;t=ue===null||ue===void 0||(n=ue.performance)===null||n===void 0||(e=n.now)===null||e===void 0?void 0:e.call(n)}else if("hrtime"in te){var r;let o=te===null||te===void 0||(r=te.hrtime)===null||r===void 0?void 0:r.call(te);t=o[0]*1e3+o[1]/1e6}else t=Date.now();return t}var le={debug:D()&&console.debug||console.log,log:console.log,info:console.info,warn:console.warn,error:console.error},Mr={enabled:!0,level:0};function U(){}var wt={},St={once:!0},J=class{constructor(){let{id:n}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{id:""};s(this,"id",void 0),s(this,"VERSION",Ee),s(this,"_startTs",re()),s(this,"_deltaTs",re()),s(this,"_storage",void 0),s(this,"userData",{}),s(this,"LOG_THROTTLE_TIMEOUT",0),this.id=n,this.userData={},this._storage=new Te("__probe-".concat(this.id,"__"),Mr),this.timeStamp("".concat(this.id," started")),Pt(this),Object.seal(this)}set level(n){this.setLevel(n)}get level(){return this.getLevel()}isEnabled(){return this._storage.config.enabled}getLevel(){return this._storage.config.level}getTotal(){return Number((re()-this._startTs).toPrecision(10))}getDelta(){return Number((re()-this._deltaTs).toPrecision(10))}set priority(n){this.level=n}get priority(){return this.level}getPriority(){return this.level}enable(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return this._storage.setConfiguration({enabled:n}),this}setLevel(n){return this._storage.setConfiguration({level:n}),this}get(n){return this._storage.config[n]}set(n,e){this._storage.setConfiguration({[n]:e})}settings(){console.table?console.table(this._storage.config):console.log(this._storage.config)}assert(n,e){ce(n,e)}warn(n){return this._getLogFunction(0,n,le.warn,arguments,St)}error(n){return this._getLogFunction(0,n,le.error,arguments)}deprecated(n,e){return this.warn("`".concat(n,"` is deprecated and will be removed in a later version. Use `").concat(e,"` instead"))}removed(n,e){return this.error("`".concat(n,"` has been removed. Use `").concat(e,"` instead"))}probe(n,e){return this._getLogFunction(n,e,le.log,arguments,{time:!0,once:!0})}log(n,e){return this._getLogFunction(n,e,le.debug,arguments)}info(n,e){return this._getLogFunction(n,e,console.info,arguments)}once(n,e){return this._getLogFunction(n,e,le.debug||le.info,arguments,St)}table(n,e,r){return e?this._getLogFunction(n,e,console.table||U,r&&[r],{tag:Hr(e)}):U}image(n){let{logLevel:e,priority:r,image:o,message:i="",scale:a=1}=n;return this._shouldLog(e||r)?D()?zr({image:o,message:i,scale:a}):Wr({image:o,message:i,scale:a}):U}time(n,e){return this._getLogFunction(n,e,console.time?console.time:console.info)}timeEnd(n,e){return this._getLogFunction(n,e,console.timeEnd?console.timeEnd:console.info)}timeStamp(n,e){return this._getLogFunction(n,e,console.timeStamp||U)}group(n,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{collapsed:!1},o=Ot({logLevel:n,message:e,opts:r}),{collapsed:i}=r;return o.method=(i?console.groupCollapsed:console.group)||console.info,this._getLogFunction(o)}groupCollapsed(n,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return this.group(n,e,Object.assign({},r,{collapsed:!0}))}groupEnd(n){return this._getLogFunction(n,"",console.groupEnd||U)}withGroup(n,e,r){this.group(n,e)();try{r()}finally{this.groupEnd(n)()}}trace(){console.trace&&console.trace()}_shouldLog(n){return this.isEnabled()&&this.getLevel()>=xt(n)}_getLogFunction(n,e,r,o,i){if(this._shouldLog(n)){i=Ot({logLevel:n,message:e,args:o,opts:i}),r=r||i.method,ce(r),i.total=this.getTotal(),i.delta=this.getDelta(),this._deltaTs=re();let a=i.tag||i.message;if(i.once&&a)if(!wt[a])wt[a]=re();else return U;return e=Fr(this.id,i.message,i),r.bind(console,e,...i.args)}return U}};s(J,"VERSION",Ee);function xt(t){if(!t)return 0;let n;switch(typeof t){case"number":n=t;break;case"object":n=t.logLevel||t.priority||0;break;default:return 0}return ce(Number.isFinite(n)&&n>=0),n}function Ot(t){let{logLevel:n,message:e}=t;t.logLevel=xt(n);let r=t.args?Array.from(t.args):[];for(;r.length&&r.shift()!==e;);switch(typeof n){case"string":case"function":e!==void 0&&r.unshift(e),t.message=n;break;case"object":Object.assign(t,n);break;default:}typeof t.message=="function"&&(t.message=t.message());let o=typeof t.message;return ce(o==="string"||o==="object"),Object.assign(t,{args:r},t.opts)}function Fr(t,n,e){if(typeof n=="string"){let r=e.time?yt(vt(e.total)):"";n=e.time?"".concat(t,": ").concat(r," ").concat(n):"".concat(t,": ").concat(n),n=_t(n,e.color,e.background)}return n}function Wr(t){let{image:n,message:e="",scale:r=1}=t;return console.warn("removed"),U}function zr(t){let{image:n,message:e="",scale:r=1}=t;if(typeof n=="string"){let i=new Image;return i.onload=()=>{let a=Ae(i,e,r);console.log(...a)},i.src=n,U}let o=n.nodeName||"";if(o.toLowerCase()==="img")return console.log(...Ae(n,e,r)),U;if(o.toLowerCase()==="canvas"){let i=new Image;return i.onload=()=>console.log(...Ae(i,e,r)),i.src=n.toDataURL(),U}return U}function Hr(t){for(let n in t)for(let e in t[n])return e||"untitled";return"empty"}var Pi=new J({id:"@probe.gl/log"});var x=new J({id:"luma.gl"});function be(){let t;if(typeof window<"u"&&window.performance)t=window.performance.now();else if(typeof process<"u"&&process.hrtime){let n=process.hrtime();t=n[0]*1e3+n[1]/1e6}else t=Date.now();return t}var ne=class{constructor(n,e){s(this,"name",void 0),s(this,"type",void 0),s(this,"sampleSize",1),s(this,"time",0),s(this,"count",0),s(this,"samples",0),s(this,"lastTiming",0),s(this,"lastSampleTime",0),s(this,"lastSampleCount",0),s(this,"_count",0),s(this,"_time",0),s(this,"_samples",0),s(this,"_startTime",0),s(this,"_timerPending",!1),this.name=n,this.type=e,this.reset()}reset(){return this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this}setSampleSize(n){return this.sampleSize=n,this}incrementCount(){return this.addCount(1),this}decrementCount(){return this.subtractCount(1),this}addCount(n){return this._count+=n,this._samples++,this._checkSampling(),this}subtractCount(n){return this._count-=n,this._samples++,this._checkSampling(),this}addTime(n){return this._time+=n,this.lastTiming=n,this._samples++,this._checkSampling(),this}timeStart(){return this._startTime=be(),this._timerPending=!0,this}timeEnd(){return this._timerPending?(this.addTime(be()-this._startTime),this._timerPending=!1,this._checkSampling(),this):this}getSampleAverageCount(){return this.sampleSize>0?this.lastSampleCount/this.sampleSize:0}getSampleAverageTime(){return this.sampleSize>0?this.lastSampleTime/this.sampleSize:0}getSampleHz(){return this.lastSampleTime>0?this.sampleSize/(this.lastSampleTime/1e3):0}getAverageCount(){return this.samples>0?this.count/this.samples:0}getAverageTime(){return this.samples>0?this.time/this.samples:0}getHz(){return this.time>0?this.samples/(this.time/1e3):0}_checkSampling(){this._samples===this.sampleSize&&(this.lastSampleTime=this._time,this.lastSampleCount=this._count,this.count+=this._count,this.time+=this._time,this.samples+=this._samples,this._time=0,this._count=0,this._samples=0)}};var fe=class{constructor(n){s(this,"id",void 0),s(this,"stats",{}),this.id=n.id,this.stats={},this._initializeStats(n.stats),Object.seal(this)}get(n){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"count";return this._getOrCreate({name:n,type:e})}get size(){return Object.keys(this.stats).length}reset(){for(let n of Object.values(this.stats))n.reset();return this}forEach(n){for(let e of Object.values(this.stats))n(e)}getTable(){let n={};return this.forEach(e=>{n[e.name]={time:e.time||0,count:e.count||0,average:e.getAverageTime()||0,hz:e.getHz()||0}}),n}_initializeStats(){(arguments.length>0&&arguments[0]!==void 0?arguments[0]:[]).forEach(e=>this._getOrCreate(e))}_getOrCreate(n){let{name:e,type:r}=n,o=this.stats[e];return o||(n instanceof ne?o=n:o=new ne(e,r),this.stats[e]=o),o}};var Vr=function(){function t(){g(this,t),s(this,"stats",new Map)}return v(t,[{key:"getStats",value:function(e){return this.get(e)}},{key:"get",value:function(e){return this.stats.has(e)||this.stats.set(e,new fe({id:e})),this.stats.get(e)}}]),t}(),Be=new Vr;function Kr(){var t=typeof __VERSION__<"u"?__VERSION__:"untranspiled source",n="set luma.log.level=1 (or higher) to trace rendering";if(globalThis.luma&&globalThis.luma.VERSION!==t)throw new Error("luma.gl - multiple VERSIONs detected: ".concat(globalThis.luma.VERSION," vs ").concat(t));return globalThis.luma||(D()&&x.log(1,"luma.gl ".concat(t," - ").concat(n))(),globalThis.luma=globalThis.luma||{VERSION:t,version:t,log:x,stats:Be}),t}var Rt=Kr();var qe={};function oe(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"id";qe[t]=qe[t]||1;var n=qe[t]++;return"".concat(t,"-").concat(n)}function De(t){var n=!0;for(var e in t){n=!1;break}return n}function Ct(t,n){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);n&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),e.push.apply(e,r)}return e}function Yr(t){for(var n=1;n<arguments.length;n++){var e=arguments[n]!=null?arguments[n]:{};n%2?Ct(Object(e),!0).forEach(function(r){s(t,r,e[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):Ct(Object(e)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))})}return t}var A={id:"undefined",handle:void 0,userData:{}},k=function(){function t(n,e,r){if(g(this,t),s(this,"id",void 0),s(this,"props",void 0),s(this,"userData",{}),s(this,"device",void 0),s(this,"_device",void 0),s(this,"destroyed",!1),s(this,"allocatedBytes",0),!n)throw new Error("no device");this._device=n,this.props=$r(e,r);var o=this.props.id!=="undefined"?this.props.id:oe(this[Symbol.toStringTag]);this.props.id=o,this.id=o,this.userData=this.props.userData||{},this.addStats()}return v(t,[{key:"destroy",value:function(){this.removeStats()}},{key:"delete",value:function(){return this.destroy(),this}},{key:"toString",value:function(){return"".concat(this[Symbol.toStringTag]||this.constructor.name,"(").concat(this.id,")")}},{key:"getProps",value:function(){return this.props}},{key:"addStats",value:function(){var e=this._device.statsManager.getStats("Resource Counts"),r=this[Symbol.toStringTag];e.get("Resources Created").incrementCount(),e.get("".concat(r,"s Created")).incrementCount(),e.get("".concat(r,"s Active")).incrementCount()}},{key:"removeStats",value:function(){var e=this._device.statsManager.getStats("Resource Counts"),r=this[Symbol.toStringTag];e.get("".concat(r,"s Active")).decrementCount()}},{key:"trackAllocatedMemory",value:function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this[Symbol.toStringTag],o=this._device.statsManager.getStats("Resource Counts");o.get("GPU Memory").addCount(e),o.get("".concat(r," Memory")).addCount(e),this.allocatedBytes=e}},{key:"trackDeallocatedMemory",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this[Symbol.toStringTag],r=this._device.statsManager.getStats("Resource Counts");r.get("GPU Memory").subtractCount(this.allocatedBytes),r.get("".concat(e," Memory")).subtractCount(this.allocatedBytes),this.allocatedBytes=0}}]),t}();function $r(t,n){var e=Yr({},n);for(var r in t)t[r]!==void 0&&(e[r]=t[r]);return e}var Tt;function qr(t){var n=Xr();return function(){var r=d(t),o;if(n){var i=d(this).constructor;o=Reflect.construct(r,arguments,i)}else o=r.apply(this,arguments);return w(this,o)}}function Xr(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Et(t,n){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);n&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),e.push.apply(e,r)}return e}function Xe(t){for(var n=1;n<arguments.length;n++){var e=arguments[n]!=null?arguments[n]:{};n%2?Et(Object(e),!0).forEach(function(r){s(t,r,e[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):Et(Object(e)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))})}return t}var Jr=Xe(Xe({},A),{},{usage:0,byteLength:0,byteOffset:0,data:null,indexType:"uint16",mappedAtCreation:!1});Tt=Symbol.toStringTag;var B=function(t){P(e,t);var n=qr(e);function e(r,o){g(this,e);var i=Xe({},o);return(o.usage||0)&e.INDEX&&!o.indexType&&(o.data instanceof Uint32Array?i.indexType="uint32":o.data instanceof Uint16Array&&(i.indexType="uint16")),n.call(this,r,i,Jr)}return v(e,[{key:Tt,get:function(){return"Buffer"}},{key:"write",value:function(o,i){throw new Error("not implemented")}},{key:"readAsync",value:function(o,i){throw new Error("not implemented")}},{key:"getData",value:function(){throw new Error("not implemented")}}]),e}(k);s(B,"MAP_READ",1);s(B,"MAP_WRITE",2);s(B,"COPY_SRC",4);s(B,"COPY_DST",8);s(B,"INDEX",16);s(B,"VERTEX",32);s(B,"UNIFORM",64);s(B,"STORAGE",128);s(B,"INDIRECT",256);s(B,"QUERY_RESOLVE",512);var Bt;function At(t,n){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);n&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),e.push.apply(e,r)}return e}function kt(t){for(var n=1;n<arguments.length;n++){var e=arguments[n]!=null?arguments[n]:{};n%2?At(Object(e),!0).forEach(function(r){s(t,r,e[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):At(Object(e)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))})}return t}var Qr={id:null,type:"best-available",canvas:null,container:null,webgl2:!0,webgl1:!0,manageState:!0,width:800,height:600,debug:Boolean(x.get("debug")),break:[],gl:null};Bt=Symbol.toStringTag;var je=function(){function t(n){g(this,t),s(this,"id",void 0),s(this,"statsManager",Be),s(this,"props",void 0),s(this,"userData",{}),s(this,"info",void 0),s(this,"lost",void 0),s(this,"canvasContext",void 0),this.props=kt(kt({},Qr),n),this.id=this.props.id||oe(this[Symbol.toStringTag].toLowerCase())}return v(t,[{key:Bt,get:function(){return"Device"}},{key:"createBuffer",value:function(e){return e instanceof ArrayBuffer||ArrayBuffer.isView(e)?this._createBuffer({data:e}):((e.usage||0)&B.INDEX&&!e.indexType&&(e.data instanceof Uint32Array?e.indexType="uint32":e.data instanceof Uint16Array&&(e.indexType="uint16")),this._createBuffer(e))}},{key:"createTexture",value:function(e){return(e instanceof Promise||typeof e=="string")&&(e={data:e}),this._createTexture(e)}}]),t}();s(je,"VERSION",Rt);function Je(t){if(Array.isArray(t))return t}function Qe(t,n){var e=t==null?null:typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(e!=null){var r,o,i,a,c=[],u=!0,m=!1;try{if(i=(e=e.call(t)).next,n===0){if(Object(e)!==e)return;u=!1}else for(;!(u=(r=i.call(e)).done)&&(c.push(r.value),c.length!==n);u=!0);}catch(S){m=!0,o=S}finally{try{if(!u&&e.return!=null&&(a=e.return(),Object(a)!==a))return}finally{if(m)throw o}}return c}}function Ie(t,n){(n==null||n>t.length)&&(n=t.length);for(var e=0,r=new Array(n);e<n;e++)r[e]=t[e];return r}function Ze(t,n){if(t){if(typeof t=="string")return Ie(t,n);var e=Object.prototype.toString.call(t).slice(8,-1);if(e==="Object"&&t.constructor&&(e=t.constructor.name),e==="Map"||e==="Set")return Array.from(t);if(e==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return Ie(t,n)}}function et(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
8
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function j(t,n){return Je(t)||Qe(t,n)||Ze(t,n)||et()}function Zr(t,n){var e=typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(!e){if(Array.isArray(t)||(e=en(t))||n&&t&&typeof t.length=="number"){e&&(t=e);var r=0,o=function(){};return{s:o,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(m){throw m},f:o}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
9
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var i=!0,a=!1,c;return{s:function(){e=e.call(t)},n:function(){var m=e.next();return i=m.done,m},e:function(m){a=!0,c=m},f:function(){try{!i&&e.return!=null&&e.return()}finally{if(a)throw c}}}}function en(t,n){if(t){if(typeof t=="string")return Dt(t,n);var e=Object.prototype.toString.call(t).slice(8,-1);if(e==="Object"&&t.constructor&&(e=t.constructor.name),e==="Map"||e==="Set")return Array.from(t);if(e==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return Dt(t,n)}}function Dt(t,n){(n==null||n>t.length)&&(n=t.length);for(var e=0,r=new Array(n);e<n;e++)r[e]=t[e];return r}function jt(t,n){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);n&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),e.push.apply(e,r)}return e}function It(t){for(var n=1;n<arguments.length;n++){var e=arguments[n]!=null?arguments[n]:{};n%2?jt(Object(e),!0).forEach(function(r){s(t,r,e[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):jt(Object(e)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))})}return t}var tn=D()&&typeof document<"u",Ge=function(){return tn&&document.readyState==="complete"},rn={canvas:null,width:800,height:600,useDevicePixels:!0,autoResize:!0,container:null,visible:!0,colorSpace:"srgb",alphaMode:"opaque"},pe=function(){function t(n){var e=this;if(g(this,t),s(this,"device",void 0),s(this,"id",void 0),s(this,"props",void 0),s(this,"canvas",void 0),s(this,"htmlCanvas",void 0),s(this,"offscreenCanvas",void 0),s(this,"type",void 0),s(this,"width",1),s(this,"height",1),s(this,"resizeObserver",void 0),s(this,"_canvasSizeInfo",{clientWidth:0,clientHeight:0,devicePixelRatio:1}),this.props=It(It({},rn),n),n=this.props,!D()){this.id="node-canvas-context",this.type="node",this.width=this.props.width,this.height=this.props.height,this.canvas=null;return}if(n.canvas)typeof n.canvas=="string"?this.canvas=an(n.canvas):this.canvas=n.canvas;else{var r,o,i=sn(n),a=on(((r=n)===null||r===void 0?void 0:r.container)||null);a.insertBefore(i,a.firstChild),this.canvas=i,(o=n)!==null&&o!==void 0&&o.visible||(this.canvas.style.visibility="hidden")}this.canvas instanceof HTMLCanvasElement?(this.id=this.canvas.id,this.type="html-canvas",this.htmlCanvas=this.canvas):(this.id="offscreen-canvas",this.type="offscreen-canvas",this.offscreenCanvas=this.canvas),this.canvas instanceof HTMLCanvasElement&&n.autoResize&&(this.resizeObserver=new ResizeObserver(function(c){var u=Zr(c),m;try{for(u.s();!(m=u.n()).done;){var S=m.value;S.target===e.canvas&&e.update()}}catch(y){u.e(y)}finally{u.f()}}),this.resizeObserver.observe(this.canvas))}return v(t,[{key:"getDevicePixelRatio",value:function(e){return typeof OffscreenCanvas<"u"&&this.canvas instanceof OffscreenCanvas?1:typeof e=="number"?e>0?e:1:typeof this.props.useDevicePixels=="number"?this.props.useDevicePixels>0?this.props.useDevicePixels:1:(e||this.props.useDevicePixels)&&typeof window<"u"&&window.devicePixelRatio||1}},{key:"getPixelSize",value:function(){switch(this.type){case"node":return[this.width,this.height];case"offscreen-canvas":return[this.canvas.width,this.canvas.height];case"html-canvas":var e=this.getDevicePixelRatio(),r=this.canvas;return r.parentElement?[r.clientWidth*e,r.clientHeight*e]:[this.canvas.width,this.canvas.height];default:throw new Error(this.type)}}},{key:"getAspect",value:function(){var e=this.getPixelSize(),r=j(e,2),o=r[0],i=r[1];return o/i}},{key:"cssToDeviceRatio",value:function(){try{var e=this.getDrawingBufferSize(),r=j(e,1),o=r[0],i=this._canvasSizeInfo.clientWidth;return i?o/i:1}catch{return 1}}},{key:"cssToDevicePixels",value:function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,o=this.cssToDeviceRatio(),i=this.getDrawingBufferSize(),a=j(i,2),c=a[0],u=a[1];return un(e,o,c,u,r)}},{key:"setDevicePixelRatio",value:function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(this.htmlCanvas){var o="width"in r?r.width:this.htmlCanvas.clientWidth,i="height"in r?r.height:this.htmlCanvas.clientHeight;(!o||!i)&&(x.log(1,"Canvas clientWidth/clientHeight is 0")(),e=1,o=this.htmlCanvas.width||1,i=this.htmlCanvas.height||1);var a=this._canvasSizeInfo;if(a.clientWidth!==o||a.clientHeight!==i||a.devicePixelRatio!==e){var c=e,u=Math.floor(o*c),m=Math.floor(i*c);this.htmlCanvas.width=u,this.htmlCanvas.height=m;var S=this.getDrawingBufferSize(),y=j(S,2),R=y[0],C=y[1];(R!==u||C!==m)&&(c=Math.min(R/o,C/i),this.htmlCanvas.width=Math.floor(o*c),this.htmlCanvas.height=Math.floor(i*c),x.warn("Device pixel ratio clamped")()),this._canvasSizeInfo.clientWidth=o,this._canvasSizeInfo.clientHeight=i,this._canvasSizeInfo.devicePixelRatio=e}}}},{key:"getDrawingBufferSize",value:function(){var e=this.device.gl;if(!e)throw new Error("canvas size");return[e.drawingBufferWidth,e.drawingBufferHeight]}},{key:"_setAutoCreatedCanvasId",value:function(e){var r;((r=this.htmlCanvas)===null||r===void 0?void 0:r.id)==="lumagl-auto-created-canvas"&&(this.htmlCanvas.id=e)}}],[{key:"isPageLoaded",get:function(){return Ge()}}]),t}();s(pe,"pageLoaded",nn());function nn(){return Ge()||typeof window>"u"?Promise.resolve():new Promise(function(t){window.addEventListener("load",function(){return t()})})}function on(t){if(typeof t=="string"){var n=document.getElementById(t);if(!n&&!Ge())throw new Error("Accessing '".concat(t,"' before page was loaded"));if(!n)throw new Error("".concat(t," is not an HTML element"));return n}else if(t)return t;return document.body}function an(t){var n=document.getElementById(t);if(!n&&!Ge())throw new Error("Accessing '".concat(t,"' before page was loaded"));if(!(n instanceof HTMLCanvasElement))throw new Error("'".concat(n,"' is not a canvas element"));return n}function sn(t){var n=t.width,e=t.height,r=document.createElement("canvas");return r.id="lumagl-auto-created-canvas",r.width=n||1,r.height=e||1,r.style.width=Number.isFinite(n)?"".concat(n,"px"):"100%",r.style.height=Number.isFinite(e)?"".concat(e,"px"):"100%",r}function un(t,n,e,r,o){var i=t,a=Gt(i[0],n,e),c=Lt(i[1],n,r,o),u=Gt(i[0]+1,n,e),m=u===e-1?u:u-1;u=Lt(i[1]+1,n,r,o);var S;return o?(u=u===0?u:u+1,S=c,c=u):S=u===r-1?u:u-1,{x:a,y:c,width:Math.max(m-a+1,1),height:Math.max(S-c+1,1)}}function Gt(t,n,e){var r=Math.min(Math.round(t*n),e-1);return r}function Lt(t,n,e,r){return r?Math.max(0,e-1-Math.round(t*n)):Math.min(Math.round(t*n),e-1)}var Mt;function cn(t){var n=ln();return function(){var r=d(t),o;if(n){var i=d(this).constructor;o=Reflect.construct(r,arguments,i)}else o=r.apply(this,arguments);return w(this,o)}}function ln(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Nt(t,n){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);n&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),e.push.apply(e,r)}return e}function Ut(t){for(var n=1;n<arguments.length;n++){var e=arguments[n]!=null?arguments[n]:{};n%2?Nt(Object(e),!0).forEach(function(r){s(t,r,e[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):Nt(Object(e)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))})}return t}var fn=Ut(Ut({},A),{},{data:null,dimension:"2d",format:"rgba8unorm",depth:1,mipmaps:!0,sampler:{},compressed:!1,usage:0,parameters:{},pixelStore:{},pixels:null,border:0,recreate:!1});Mt=Symbol.toStringTag;var N=function(t){P(e,t);var n=cn(e);function e(r,o){var i;return g(this,e),i=n.call(this,r,o,fn),s(f(i),"sampler",void 0),i}return v(e,[{key:Mt,get:function(){return"Texture"}}]),e}(k);s(N,"COPY_SRC",1);s(N,"COPY_DST",2);s(N,"TEXTURE_BINDING",4);s(N,"STORAGE_BINDING",8);s(N,"RENDER_ATTACHMENT",16);function pn(t){var n=hn();return function(){var r=d(t),o;if(n){var i=d(this).constructor;o=Reflect.construct(r,arguments,i)}else o=r.apply(this,arguments);return w(this,o)}}function hn(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Ft(t,n){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);n&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),e.push.apply(e,r)}return e}function Wt(t){for(var n=1;n<arguments.length;n++){var e=arguments[n]!=null?arguments[n]:{};n%2?Ft(Object(e),!0).forEach(function(r){s(t,r,e[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):Ft(Object(e)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))})}return t}var dn=Wt(Wt({},A),{},{source:null,colorSpace:"srgb"}),tt=function(t,n){P(r,t);var e=pn(r);function r(o,i){return g(this,r),e.call(this,o,i,dn)}return v(r,[{key:n,get:function(){return"ExternalTexture"}}]),r}(k,Symbol.toStringTag);var Vt;function mn(t){var n=gn();return function(){var r=d(t),o;if(n){var i=d(this).constructor;o=Reflect.construct(r,arguments,i)}else o=r.apply(this,arguments);return w(this,o)}}function gn(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function zt(t,n){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);n&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),e.push.apply(e,r)}return e}function Ht(t){for(var n=1;n<arguments.length;n++){var e=arguments[n]!=null?arguments[n]:{};n%2?zt(Object(e),!0).forEach(function(r){s(t,r,e[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):zt(Object(e)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))})}return t}var vn=Ht(Ht({},A),{},{stage:"vertex",source:"",sourceMap:null,language:"glsl",shaderType:0});Vt=Symbol.toStringTag;var rt=function(t){P(e,t);var n=mn(e);function e(r,o){var i;return g(this,e),i=n.call(this,r,o,vn),s(f(i),"stage",void 0),s(f(i),"source",void 0),i.stage=i.props.stage,i.source=i.props.source,i}return v(e,[{key:Vt,get:function(){return"Shader"}}]),e}(k);function yn(t){var n=bn();return function(){var r=d(t),o;if(n){var i=d(this).constructor;o=Reflect.construct(r,arguments,i)}else o=r.apply(this,arguments);return w(this,o)}}function bn(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Kt(t,n){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);n&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),e.push.apply(e,r)}return e}function Yt(t){for(var n=1;n<arguments.length;n++){var e=arguments[n]!=null?arguments[n]:{};n%2?Kt(Object(e),!0).forEach(function(r){s(t,r,e[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):Kt(Object(e)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))})}return t}var _n=Yt(Yt({},A),{},{type:"color-sampler",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge",addressModeW:"clamp-to-edge",magFilter:"nearest",minFilter:"nearest",mipmapFilter:"nearest",lodMinClamp:0,lodMaxClamp:32,compare:"less-equal",maxAnisotropy:1}),_e=function(t,n){P(r,t);var e=yn(r);function r(o,i){return g(this,r),e.call(this,o,i,_n)}return v(r,[{key:n,get:function(){return"Sampler"}}]),r}(k,Symbol.toStringTag);var Xt;function Pn(t){var n=wn();return function(){var r=d(t),o;if(n){var i=d(this).constructor;o=Reflect.construct(r,arguments,i)}else o=r.apply(this,arguments);return w(this,o)}}function wn(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function $t(t,n){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);n&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),e.push.apply(e,r)}return e}function qt(t){for(var n=1;n<arguments.length;n++){var e=arguments[n]!=null?arguments[n]:{};n%2?$t(Object(e),!0).forEach(function(r){s(t,r,e[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):$t(Object(e)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))})}return t}var Sn=qt(qt({},A),{},{width:1,height:1,colorAttachments:[],depthStencilAttachment:null});Xt=Symbol.toStringTag;var nt=function(t){P(e,t);var n=Pn(e);function e(r){var o,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return g(this,e),o=n.call(this,r,i,Sn),s(f(o),"width",void 0),s(f(o),"height",void 0),s(f(o),"colorAttachments",void 0),s(f(o),"depthStencilAttachment",void 0),o.width=o.props.width,o.height=o.props.height,o}return v(e,[{key:Xt,get:function(){return"Framebuffer"}},{key:"resize",value:function(o){var i=!o||o.height!==this.height||o.width!==this.width;o&&(this.width=o?.width,this.height=o?.height),i&&this._resizeAttachments(this.width,this.height)}}]),e}(k);var Zt;function On(t){var n=xn();return function(){var r=d(t),o;if(n){var i=d(this).constructor;o=Reflect.construct(r,arguments,i)}else o=r.apply(this,arguments);return w(this,o)}}function xn(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Jt(t,n){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);n&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),e.push.apply(e,r)}return e}function Qt(t){for(var n=1;n<arguments.length;n++){var e=arguments[n]!=null?arguments[n]:{};n%2?Jt(Object(e),!0).forEach(function(r){s(t,r,e[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):Jt(Object(e)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))})}return t}var er=Qt(Qt({},A),{},{vs:null,vsEntryPoint:"",vsConstants:{},fs:null,fsEntryPoint:"",fsConstants:{},layout:null,topology:"triangle-list",parameters:{},bufferMap:[],vertexCount:0,instanceCount:0,indices:null,attributes:{},bindings:{},uniforms:{}});Zt=Symbol.toStringTag;var Le=function(t){P(e,t);var n=On(e);function e(r,o){var i;return g(this,e),i=n.call(this,r,o,er),s(f(i),"hash",""),s(f(i),"vs",void 0),s(f(i),"fs",void 0),i}return v(e,[{key:Zt,get:function(){return"RenderPipeline"}}]),e}(k);s(Le,"_DEFAULT_PROPS",er);var nr;function Rn(t){var n=Cn();return function(){var r=d(t),o;if(n){var i=d(this).constructor;o=Reflect.construct(r,arguments,i)}else o=r.apply(this,arguments);return w(this,o)}}function Cn(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function tr(t,n){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);n&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),e.push.apply(e,r)}return e}function rr(t){for(var n=1;n<arguments.length;n++){var e=arguments[n]!=null?arguments[n]:{};n%2?tr(Object(e),!0).forEach(function(r){s(t,r,e[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):tr(Object(e)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))})}return t}var En=rr(rr({},A),{},{csConstants:{},layout:[]});nr=Symbol.toStringTag;var ot=function(t){P(e,t);var n=Rn(e);function e(r,o){var i;return g(this,e),i=n.call(this,r,o,En),s(f(i),"hash",""),i}return v(e,[{key:nr,get:function(){return"ComputePipeline"}}]),e}(k);function Tn(t){var n=An();return function(){var r=d(t),o;if(n){var i=d(this).constructor;o=Reflect.construct(r,arguments,i)}else o=r.apply(this,arguments);return w(this,o)}}function An(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function or(t,n){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);n&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),e.push.apply(e,r)}return e}function ir(t){for(var n=1;n<arguments.length;n++){var e=arguments[n]!=null?arguments[n]:{};n%2?or(Object(e),!0).forEach(function(r){s(t,r,e[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):or(Object(e)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))})}return t}var kn=ir(ir({},A),{},{framebuffer:null,parameters:null}),it=function(t,n){P(r,t);var e=Tn(r);function r(o,i){return g(this,r),e.call(this,o,i,kn)}return v(r,[{key:n,get:function(){return"RenderPass"}}]),r}(k,Symbol.toStringTag);function Bn(t){var n=Dn();return function(){var r=d(t),o;if(n){var i=d(this).constructor;o=Reflect.construct(r,arguments,i)}else o=r.apply(this,arguments);return w(this,o)}}function Dn(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var at=function(t,n){P(r,t);var e=Bn(r);function r(o,i){return g(this,r),e.call(this,o,i,A)}return v(r,[{key:n,get:function(){return"ComputePass"}}]),r}(k,Symbol.toStringTag);function sr(t){var n=ar[t],e=jn(n),r=!t.startsWith("float"),o=t.includes("norm"),i=t.startsWith("s");return{dataType:ar[t],byteLength:e,integer:r,signed:i,normalized:o}}function jn(t){var n=In[t];return n}var ar={uint8:"uint8",sint8:"sint8",unorm8:"uint8",snorm8:"sint8",uint16:"uint16",sint16:"sint16",unorm16:"uint16",snorm16:"sint16",float16:"float16",float32:"float32",uint32:"uint32",sint32:"sint32"},In={uint8:1,sint8:1,uint16:2,sint16:2,float16:2,float32:4,uint32:4,sint32:4};function Pe(t){var n=t.split("x"),e=j(n,2),r=e[0],o=e[1],i=r,a=o?parseInt(o):1,c=sr(i);return{type:i,components:a,byteLength:c.byteLength*a,integer:c.integer,signed:c.signed,normalized:c.normalized}}var st=Ve(Ce(),1);function Gn(t){var n=Ln();return function(){var r=d(t),o;if(n){var i=d(this).constructor;o=Reflect.construct(r,arguments,i)}else o=r.apply(this,arguments);return w(this,o)}}function Ln(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Nn(t){var n;return t.byteLength||((n=t.data)===null||n===void 0?void 0:n.byteLength)||0}var Ne=function(t){P(e,t);var n=Gn(e);function e(r,o){var i;g(this,e),i=n.call(this,r,o),s(f(i),"device",void 0),s(f(i),"handle",void 0),s(f(i),"byteLength",void 0),i.device=r,i.byteLength=Nn(o);var a=Boolean(o.data);return i.handle=i.props.handle||i.device.handle.createBuffer({size:i.byteLength,usage:i.props.usage||GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST,mappedAtCreation:i.props.mappedAtCreation||a,label:i.props.id}),o.data&&i._writeMapped(o.data),a&&!o.mappedAtCreation&&i.handle.unmap(),i}return v(e,[{key:"destroy",value:function(){this.handle.destroy()}},{key:"write",value:function(o){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;this.device.handle.queue.writeBuffer(this.handle,i,o.buffer,o.byteOffset,o.byteLength)}},{key:"readAsync",value:function(){var r=Y(st.default.mark(function i(){var a,c,u,m,S,y=arguments;return st.default.wrap(function(C){for(;;)switch(C.prev=C.next){case 0:return a=y.length>0&&y[0]!==void 0?y[0]:0,c=y.length>1&&y[1]!==void 0?y[1]:this.byteLength,u=new e(this.device,{usage:B.MAP_READ|B.COPY_DST,byteLength:c}),m=this.device.handle.createCommandEncoder(),m.copyBufferToBuffer(this.handle,a,u.handle,0,c),this.device.handle.queue.submit([m.finish()]),C.next=8,u.handle.mapAsync(GPUMapMode.READ,a,c);case 8:return S=u.handle.getMappedRange().slice(0),u.handle.unmap(),u.destroy(),C.abrupt("return",S);case 12:case"end":return C.stop()}},i,this)}));function o(){return r.apply(this,arguments)}return o}()},{key:"_writeMapped",value:function(o){var i=this.handle.getMappedRange();new o.constructor(i).set(o)}},{key:"mapAsync",value:function(o){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2?arguments[2]:void 0;return this.handle.mapAsync(o,i,a)}},{key:"getMappedRange",value:function(){var o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,i=arguments.length>1?arguments[1]:void 0;return this.handle.getMappedRange(o,i)}},{key:"unmap",value:function(){this.handle.unmap()}}]),e}(B);function he(t){if(t.includes("webgl"))throw new Error("webgl-only format");return t}function ur(t,n){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);n&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),e.push.apply(e,r)}return e}function Un(t){for(var n=1;n<arguments.length;n++){var e=arguments[n]!=null?arguments[n]:{};n%2?ur(Object(e),!0).forEach(function(r){s(t,r,e[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):ur(Object(e)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))})}return t}function Mn(t){var n=Fn();return function(){var r=d(t),o;if(n){var i=d(this).constructor;o=Reflect.construct(r,arguments,i)}else o=r.apply(this,arguments);return w(this,o)}}function Fn(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var M=function(t){P(e,t);var n=Mn(e);function e(r,o){var i;g(this,e),i=n.call(this,r,o),s(f(i),"device",void 0),s(f(i),"handle",void 0),i.device=r;var a=Un({},i.props);return a.type!=="comparison-sampler"&&delete a.compare,i.handle=i.handle||i.device.handle.createSampler(a),i.handle.label=i.props.id,i}return v(e,[{key:"destroy",value:function(){}}]),e}(_e);function Wn(t){var n=zn();return function(){var r=d(t),o;if(n){var i=d(this).constructor;o=Reflect.construct(r,arguments,i)}else o=r.apply(this,arguments);return w(this,o)}}function zn(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var Hn={"1d":"1d","2d":"2d","2d-array":"2d",cube:"2d","cube-array":"2d","3d":"3d"},ie=function(t){P(e,t);var n=Wn(e);function e(r,o){var i;if(g(this,e),i=n.call(this,r,o),s(f(i),"device",void 0),s(f(i),"handle",void 0),s(f(i),"view",void 0),s(f(i),"sampler",void 0),typeof i.props.format=="number")throw new Error("number format");return i.device=r,i.handle=i.props.handle||i.createHandle(),i.props.data&&i.setData({data:i.props.data}),i.sampler=o.sampler instanceof M?o.sampler:new M(i.device,o.sampler),i.view=i.handle.createView({}),i}return v(e,[{key:"createHandle",value:function(){var o,i;if(typeof this.props.format=="number")throw new Error("number format");var a=this.props.width||((o=this.props.data)===null||o===void 0?void 0:o.width)||1,c=this.props.height||((i=this.props.data)===null||i===void 0?void 0:i.height)||1;return this.device.handle.createTexture({size:{width:a,height:c,depthOrArrayLayers:this.props.depth},dimension:Hn[this.props.dimension],format:he(this.props.format),usage:this.props.usage,mipLevelCount:this.props.mipLevels,sampleCount:this.props.samples})}},{key:"destroy",value:function(){this.handle.destroy()}},{key:"setSampler",value:function(o){return this.sampler=o instanceof M?o:new M(this.device,o),this}},{key:"setData",value:function(o){return this.setImage({source:o.data})}},{key:"setImage",value:function(o){var i=o.source,a=o.width,c=a===void 0?o.source.width:a,u=o.height,m=u===void 0?o.source.height:u,S=o.depth,y=S===void 0?1:S,R=o.sourceX,C=R===void 0?0:R,E=o.sourceY,z=E===void 0?0:E,W=o.mipLevel,K=W===void 0?0:W,I=o.x,H=I===void 0?0:I,Q=o.y,We=Q===void 0?0:Q,me=o.z,ze=me===void 0?0:me,ae=o.aspect,ge=ae===void 0?"all":ae,se=o.colorSpace,Oe=se===void 0?"srgb":se,h=o.premultipliedAlpha,l=h===void 0?!1:h;return this.device.handle.queue.copyExternalImageToTexture({source:i,origin:[C,z]},{texture:this.handle,origin:[H,We,ze],mipLevel:K,aspect:ge,colorSpace:Oe,premultipliedAlpha:l},[c,m,y]),this}}]),e}(N);function Vn(t){var n=Kn();return function(){var r=d(t),o;if(n){var i=d(this).constructor;o=Reflect.construct(r,arguments,i)}else o=r.apply(this,arguments);return w(this,o)}}function Kn(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var cr=function(t){P(e,t);var n=Vn(e);function e(r,o){var i;return g(this,e),i=n.call(this,r,o),s(f(i),"device",void 0),s(f(i),"handle",void 0),s(f(i),"sampler",void 0),i.device=r,i.handle=i.props.handle||i.device.handle.importExternalTexture({source:o.source,colorSpace:o.colorSpace}),i.sampler=null,i}return v(e,[{key:"destroy",value:function(){}},{key:"setSampler",value:function(o){return this.sampler=o instanceof M?o:new M(this.device,o),this}}]),e}(tt);var we=Ve(Ce(),1);function Yn(t){var n=$n();return function(){var r=d(t),o;if(n){var i=d(this).constructor;o=Reflect.construct(r,arguments,i)}else o=r.apply(this,arguments);return w(this,o)}}function $n(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var Ue=function(t){P(e,t);var n=Yn(e);function e(r,o){var i;return g(this,e),i=n.call(this,r,o),s(f(i),"device",void 0),s(f(i),"handle",void 0),i.device=r,i.device.handle.pushErrorScope("validation"),i.handle=i.props.handle||i.createHandle(),i.handle.label=i.props.id,i._checkCompilationError(i.device.handle.popErrorScope()),i}return v(e,[{key:"_checkCompilationError",value:function(){var r=Y(we.default.mark(function i(a){var c,u;return we.default.wrap(function(S){for(;;)switch(S.prev=S.next){case 0:return S.next=2,a;case 2:if(c=S.sent,!c){S.next=9;break}return S.next=6,this.compilationInfo();case 6:throw u=S.sent,x.error("Shader compilation error: ".concat(c.message),u)(),new Error("Shader compilation error: ".concat(c.message));case 9:case"end":return S.stop()}},i,this)}));function o(i){return r.apply(this,arguments)}return o}()},{key:"destroy",value:function(){}},{key:"createHandle",value:function(){var o=this,i=this.props.source,a=this.props.language;switch(a||(a=i.includes("->")?"wgsl":"glsl"),a){case"wgsl":return this.device.handle.createShaderModule({code:i});case"glsl":return this.device.handle.createShaderModule({code:i,transform:function(u){return o.device.glslang.compileGLSL(u,type)}});default:throw new Error(a)}}},{key:"compilationInfo",value:function(){var r=Y(we.default.mark(function i(){var a;return we.default.wrap(function(u){for(;;)switch(u.prev=u.next){case 0:return u.next=2,this.handle.getCompilationInfo();case 2:return a=u.sent,u.abrupt("return",a.messages);case 4:case"end":return u.stop()}},i,this)}));function o(){return r.apply(this,arguments)}return o}()}]),e}(rt);function lr(t,n){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);n&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),e.push.apply(e,r)}return e}function fr(t){for(var n=1;n<arguments.length;n++){var e=arguments[n]!=null?arguments[n]:{};n%2?lr(Object(e),!0).forEach(function(r){s(t,r,e[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):lr(Object(e)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))})}return t}function F(t){return t.depthStencil=t.depthStencil||{format:"depth24plus",stencilFront:{},stencilBack:{},depthWriteEnabled:void 0,depthCompare:void 0},t.depthStencil}var qn={cullMode:function(n,e,r){r.primitive=r.primitive||{},r.primitive.cullMode=e},frontFace:function(n,e,r){r.primitive=r.primitive||{},r.primitive.frontFace=e},depthWriteEnabled:function(n,e,r){var o=F(r);o.depthWriteEnabled=e},depthCompare:function(n,e,r){var o=F(r);o.depthCompare=e},depthFormat:function(n,e,r){var o=F(r);o.format=e},depthBias:function(n,e,r){var o=F(r);o.depthBias=e},depthBiasSlopeScale:function(n,e,r){var o=F(r);o.depthBiasSlopeScale=e},depthBiasClamp:function(n,e,r){var o=F(r);o.depthBiasClamp=e},stencilReadMask:function(n,e,r){var o=F(r);o.stencilReadMask=e},stencilWriteMask:function(n,e,r){var o=F(r);o.stencilWriteMask=e},stencilCompare:function(n,e,r){var o=F(r);o.stencilFront.compare=e,o.stencilBack.compare=e},stencilPassOperation:function(n,e,r){var o=F(r);o.stencilFront.passOp=e,o.stencilBack.passOp=e},stencilFailOperation:function(n,e,r){var o=F(r);o.stencilFront.failOp=e,o.stencilBack.failOp=e},stencilDepthFailOperation:function(n,e,r){var o=F(r);o.stencilFront.depthFailOp=e,o.stencilBack.depthFailOp=e},sampleCount:function(n,e,r){r.multisample=r.multisample||{},r.multisample.count=e},sampleMask:function(n,e,r){r.multisample=r.multisample||{},r.multisample.mask=e},sampleAlphaToCoverageEnabled:function(n,e,r){r.multisample=r.multisample||{},r.multisample.alphaToCoverageEnabled=e},colorMask:function(n,e,r){var o=pr(r);o[0].writeMask=e},blendColorOperation:function(n,e,r){pr(r)}},Xn={primitive:{cullMode:"back",topology:"triangle-list"},vertex:{module:void 0,entryPoint:"main"},fragment:{module:void 0,entryPoint:"main",targets:[]},layout:"auto"};function hr(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};Object.assign(t,fr(fr({},Xn),t)),Jn(t,n)}function Jn(t,n){for(var e=0,r=Object.entries(n);e<r.length;e++){var o=j(r[e],2),i=o[0],a=o[1],c=qn[i];if(!c)throw new Error("Illegal parameter ".concat(i));c(i,a,t)}}function pr(t){var n,e,r,o,i;if(t.fragment.targets=((n=t.fragment)===null||n===void 0?void 0:n.targets)||[],!Array.isArray((e=t.fragment)===null||e===void 0?void 0:e.targets))throw new Error("colorstate");if(((r=t.fragment)===null||r===void 0||(o=r.targets)===null||o===void 0?void 0:o.length)===0){var a;(a=t.fragment.targets)===null||a===void 0||a.push({})}return(i=t.fragment)===null||i===void 0?void 0:i.targets}function dr(t,n,e,r){var o=Zn(r,e);return t.createBindGroup({layout:n,entries:o})}function Qn(t,n){var e=t.bindings.find(function(r){return r.name===n});return e||x.warn("Binding ".concat(n," not set: Not found in shader layout."))(),e}function Zn(t,n){for(var e=[],r=0,o=Object.entries(t);r<o.length;r++){var i=j(o[r],2),a=i[0],c=i[1],u=Qn(n,a);u&&e.push(eo(c,u.location))}return e}function eo(t,n){if(t instanceof B)return{binding:n,resource:{buffer:t.handle}};if(t instanceof _e)return{binding:n,resource:t.handle};if(t instanceof N)return{binding:n,resource:t.handle.createView()};throw new Error("invalid binding")}function de(t,n){var e=typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(!e){if(Array.isArray(t)||(e=to(t))||n&&t&&typeof t.length=="number"){e&&(t=e);var r=0,o=function(){};return{s:o,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(m){throw m},f:o}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
10
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var i=!0,a=!1,c;return{s:function(){e=e.call(t)},n:function(){var m=e.next();return i=m.done,m},e:function(m){a=!0,c=m},f:function(){try{!i&&e.return!=null&&e.return()}finally{if(a)throw c}}}}function to(t,n){if(t){if(typeof t=="string")return mr(t,n);var e=Object.prototype.toString.call(t).slice(8,-1);if(e==="Object"&&t.constructor&&(e=t.constructor.name),e==="Map"||e==="Set")return Array.from(t);if(e==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return mr(t,n)}}function mr(t,n){(n==null||n>t.length)&&(n=t.length);for(var e=0,r=new Array(n);e<n;e++)r[e]=t[e];return r}function vr(t,n){var e=[],r=new Set,o=de(n),i;try{for(o.s();!(i=o.n()).done;){var a=i.value,c=[],u="vertex",m=0,S=a.byteOffset||0;if("attributes"in a){var y=de(a.attributes),R;try{for(y.s();!(R=y.n()).done;){var C=R.value,E=gr(t,C.name,r);u=E.stepMode||"vertex",c.push({format:E.format,offset:S+m,shaderLocation:E.location}),m+=Pe(E.format).byteLength}}catch(H){y.e(H)}finally{y.f()}}else{var z=gr(t,a.name,r);m=Pe(z.format).byteLength,u=z.stepMode||"vertex",c.push({format:z.format,offset:S,shaderLocation:z.location})}e.push({arrayStride:a.byteStride||m,stepMode:u||"vertex",attributes:c})}}catch(H){o.e(H)}finally{o.f()}var W=de(t.attributes),K;try{for(W.s();!(K=W.n()).done;){var I=K.value;r.has(I.name)||e.push({arrayStride:Pe(I.format).byteLength,stepMode:I.stepMode||"vertex",attributes:[{format:I.format,offset:0,shaderLocation:I.location}]})}}catch(H){W.e(H)}finally{W.f()}return e}function yr(t,n){var e=new Set,r=0,o={},i=de(n),a;try{for(i.s();!(a=i.n()).done;){var c=a.value;if("attributes"in c){var u=de(c.attributes),m;try{for(u.s();!(m=u.n()).done;){var S=m.value;e.add(S.name)}}catch(E){u.e(E)}finally{u.f()}}else e.add(c.name);o[c.name]=r++}}catch(E){i.e(E)}finally{i.f()}var y=de(t.attributes),R;try{for(y.s();!(R=y.n()).done;){var C=R.value;e.has(C.name)||(o[C.name]=r++)}}catch(E){y.e(E)}finally{y.f()}return o}function gr(t,n,e){var r=t.attributes.find(function(o){return o.name===n});if(!r)throw new Error("Unknown attribute ".concat(n));if(e.has(n))throw new Error("Duplicate attribute ".concat(n));return e.add(n),r}function ro(t){var n=no();return function(){var r=d(t),o;if(n){var i=d(this).constructor;o=Reflect.construct(r,arguments,i)}else o=r.apply(this,arguments);return w(this,o)}}function no(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var br=function(t){P(e,t);var n=ro(e);function e(r,o){var i;return g(this,e),i=n.call(this,r,o),s(f(i),"device",void 0),s(f(i),"handle",void 0),s(f(i),"vs",void 0),s(f(i),"fs",null),s(f(i),"_bufferSlots",void 0),s(f(i),"_buffers",void 0),s(f(i),"_indexBuffer",null),s(f(i),"_bindGroupLayout",void 0),s(f(i),"_bindGroup",null),i.device=r,i.handle=i.props.handle||i.createHandle(),i.handle.label=i.props.id,i.vs=o.vs,i.fs=o.fs,i._bufferSlots=yr(i.props.layout,i.props.bufferMap),i._buffers=new Array(Object.keys(i._bufferSlots).length).fill(null),i._bindGroupLayout=i.handle.getBindGroupLayout(0),i}return v(e,[{key:"createHandle",value:function(){var o=this._getRenderPipelineDescriptor(),i=this.device.handle.createRenderPipeline(o);return x.groupCollapsed(1,"new WebGPRenderPipeline(".concat(this.id,")"))(),x.log(1,JSON.stringify(o,null,2))(),x.groupEnd(1)(),i}},{key:"destroy",value:function(){}},{key:"setIndexBuffer",value:function(o){this._indexBuffer=o}},{key:"setAttributes",value:function(o){for(var i=0,a=Object.entries(o);i<a.length;i++){var c=j(a[i],2),u=c[0],m=c[1],S=this._bufferSlots[u];if(S>=0)this._buffers[S]=m;else throw new Error("Setting attribute '".concat(u,"' not listed in shader layout for program ").concat(this.id))}}},{key:"setBindings",value:function(o){De(this.props.bindings)||(Object.assign(this.props.bindings,o),this._bindGroup=dr(this.device.handle,this._bindGroupLayout,this.props.layout,this.props.bindings))}},{key:"setUniforms",value:function(o){if(!De(o))throw new Error("WebGPU does not support uniforms")}},{key:"_getBuffers",value:function(){return this._buffers}},{key:"_getBindGroup",value:function(){return this._bindGroup}},{key:"_getRenderPipelineDescriptor",value:function(){var o={module:this.props.vs.handle,entryPoint:this.props.vsEntryPoint||"main",buffers:vr(this.props.layout,this.props.bufferMap)},i;if(this.props.fs){var a,c;i={module:this.props.fs.handle,entryPoint:this.props.fsEntryPoint||"main",targets:[{format:he((a=this.device)===null||a===void 0||(c=a.canvasContext)===null||c===void 0?void 0:c.format)}]}}switch(this.props.topology){case"triangle-fan":case"line-loop":throw new Error("WebGPU does not support primitive topology ".concat(this.props.topology));default:}var u={vertex:o,fragment:i,primitive:{topology:this.props.topology},layout:"auto"};return hr(u,this.props.parameters),u}},{key:"draw",value:function(o){var i=o.renderPass||this.device.getDefaultRenderPass();i.handle.setPipeline(this.handle);var a=this._getBindGroup();a&&i.handle.setBindGroup(0,a),this._setAttributeBuffers(i),o.indexCount?i.handle.drawIndexed(o.indexCount,o.instanceCount,o.firstIndex,o.baseVertex,o.firstInstance):i.handle.draw(o.vertexCount||0,o.instanceCount,o.firstIndex,o.firstInstance)}},{key:"_setAttributeBuffers",value:function(o){var i=this;this._indexBuffer&&o.handle.setIndexBuffer(this._indexBuffer.handle,this._indexBuffer.props.indexType);for(var a=this._getBuffers(),c=function(S){var y=a[S];if(!y){var R=i.props.layout.attributes.find(function(C){return C.location===S});throw new Error("No buffer provided for attribute '".concat(R?.name||"","' in Model '").concat(i.props.id,"'"))}o.handle.setVertexBuffer(S,y.handle)},u=0;u<a.length;++u)c(u)}}]),e}(Le);function oo(t){var n=io();return function(){var r=d(t),o;if(n){var i=d(this).constructor;o=Reflect.construct(r,arguments,i)}else o=r.apply(this,arguments);return w(this,o)}}function io(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var _r=function(t){P(e,t);var n=oo(e);function e(r,o){var i;g(this,e),i=n.call(this,r,o),s(f(i),"device",void 0),s(f(i),"handle",void 0),i.device=r;var a=i.props.cs.handle;return i.handle=i.props.handle||i.device.handle.createComputePipeline({label:i.props.id,compute:{module:a,entryPoint:i.props.csEntryPoint},layout:"auto"}),i}return v(e,[{key:"_getBindGroupLayout",value:function(){return this.handle.getBindGroupLayout(0)}}]),e}(ot);function ao(t){var n=so();return function(){var r=d(t),o;if(n){var i=d(this).constructor;o=Reflect.construct(r,arguments,i)}else o=r.apply(this,arguments);return w(this,o)}}function so(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var Pr=function(t){P(e,t);var n=ao(e);function e(r){var o,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};g(this,e),o=n.call(this,r,i),s(f(o),"device",void 0),s(f(o),"handle",void 0),s(f(o),"pipeline",null),o.device=r;var a=i.framebuffer||r.canvasContext.getCurrentFramebuffer(),c=a.renderPassDescriptor;return o.handle=o.props.handle||r.commandEncoder.beginRenderPass(c),o.handle.label=o.props.id,o}return v(e,[{key:"destroy",value:function(){}},{key:"end",value:function(){this.handle.end()}},{key:"setPipeline",value:function(o){this.pipeline=o,this.handle.setPipeline(this.pipeline.handle)}},{key:"setBindings",value:function(o){var i,a;(i=this.pipeline)===null||i===void 0||i.setBindings(o);var c=(a=this.pipeline)===null||a===void 0?void 0:a._getBindGroup();c&&this.handle.setBindGroup(0,c)}},{key:"setIndexBuffer",value:function(o,i){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,c=arguments.length>3?arguments[3]:void 0;this.handle.setIndexBuffer(o.handle,i,a,c)}},{key:"setVertexBuffer",value:function(o,i){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;this.handle.setVertexBuffer(o,i.handle,a)}},{key:"draw",value:function(o){o.indexCount?this.handle.drawIndexed(o.indexCount,o.instanceCount,o.firstIndex,o.baseVertex,o.firstInstance):this.handle.draw(o.vertexCount||0,o.instanceCount,o.firstIndex,o.firstInstance)}},{key:"drawIndirect",value:function(){}},{key:"setParameters",value:function(o){var i=o.blendConstant,a=o.stencilReference,c=o.scissorRect,u=o.viewport;i&&this.handle.setBlendConstant(i),a&&this.handle.setStencilReference(a),c&&this.handle.setScissorRect(c[0],c[1],c[2],c[3]),u&&this.handle.setViewport(u[0],u[1],u[2],u[3],u[4],u[5])}},{key:"pushDebugGroup",value:function(o){this.handle.pushDebugGroup(o)}},{key:"popDebugGroup",value:function(){this.handle.popDebugGroup()}},{key:"insertDebugMarker",value:function(o){this.handle.insertDebugMarker(o)}}]),e}(it);function uo(t){var n=co();return function(){var r=d(t),o;if(n){var i=d(this).constructor;o=Reflect.construct(r,arguments,i)}else o=r.apply(this,arguments);return w(this,o)}}function co(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var wr=function(t){P(e,t);var n=uo(e);function e(r,o){var i,a;return g(this,e),a=n.call(this,r,o),s(f(a),"device",void 0),s(f(a),"handle",void 0),s(f(a),"_bindGroupLayout",null),a.device=r,a.handle=a.props.handle||((i=r.commandEncoder)===null||i===void 0?void 0:i.beginComputePass({label:a.props.id})),a}return v(e,[{key:"destroy",value:function(){}},{key:"end",value:function(){this.handle.end()}},{key:"setPipeline",value:function(o){var i=o;this.handle.setPipeline(i.handle),this._bindGroupLayout=i._getBindGroupLayout()}},{key:"setBindings",value:function(o){throw new Error("fix me")}},{key:"dispatch",value:function(o,i,a){this.handle.dispatchWorkgroups(o,i,a)}},{key:"dispatchIndirect",value:function(o){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;this.handle.dispatchWorkgroupsIndirect(o.handle,i)}},{key:"pushDebugGroup",value:function(o){this.handle.pushDebugGroup(o)}},{key:"popDebugGroup",value:function(){this.handle.popDebugGroup()}},{key:"insertDebugMarker",value:function(o){this.handle.insertDebugMarker(o)}}]),e}(at);function Sr(t,n){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);n&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),e.push.apply(e,r)}return e}function Fe(t){for(var n=1;n<arguments.length;n++){var e=arguments[n]!=null?arguments[n]:{};n%2?Sr(Object(e),!0).forEach(function(r){s(t,r,e[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):Sr(Object(e)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))})}return t}function lo(t){var n=fo();return function(){var r=d(t),o;if(n){var i=d(this).constructor;o=Reflect.construct(r,arguments,i)}else o=r.apply(this,arguments);return w(this,o)}}function fo(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var Or=function(t){P(e,t);var n=lo(e);function e(r,o){var i;return g(this,e),i=n.call(this,r,o),s(f(i),"device",void 0),s(f(i),"colorAttachments",[]),s(f(i),"depthStencilAttachment",null),s(f(i),"renderPassDescriptor",{colorAttachments:[]}),i.device=r,o.depthStencilAttachment&&(i.depthStencilAttachment=i.createDepthStencilTexture(o)),o.colorAttachments&&(i.colorAttachments=o.colorAttachments.map(function(a){return i.createColorTexture(i.props,a)})),i.depthStencilAttachment&&(i.renderPassDescriptor.depthStencilAttachment={view:i.depthStencilAttachment.handle.createView(),depthClearValue:1,depthStoreOp:"store",stencilClearValue:0,stencilStoreOp:"store"}),i.colorAttachments.length>0&&(i.renderPassDescriptor.colorAttachments=i.colorAttachments.map(function(a){return{view:a.handle.createView(),loadOp:"clear",loadValue:[0,0,0,0],storeOp:"store"}})),i}return v(e,[{key:"createDepthStencilTexture",value:function(o){if(o.depthStencilAttachment instanceof ie)return o.depthStencilAttachment;if(typeof o.depthStencilAttachment=="string")return this.device._createTexture({id:"depth-stencil-attachment",format:o.depthStencilAttachment,width:o.width,height:o.height,usage:N.RENDER_ATTACHMENT});throw new Error("type")}},{key:"createColorTexture",value:function(o,i){if(i instanceof ie)return i;if(typeof i=="string")return this.device._createTexture({id:"color-attachment",format:i,width:o.width,height:o.height,usage:N.RENDER_ATTACHMENT});throw new Error("type")}},{key:"_resizeAttachments",value:function(o,i){for(var a=0;a<this.colorAttachments.length;++a)if(this.colorAttachments[a]){var c=this.device._createTexture(Fe(Fe({},this.colorAttachments[a].props),{},{width:o,height:i}));this.colorAttachments[a].destroy(),this.colorAttachments[a]=c,this.renderPassDescriptor.colorAttachments[a].view=c.handle.createView()}if(this.depthStencilAttachment){var u=this.device._createTexture(Fe(Fe({},this.depthStencilAttachment.props),{},{width:o,height:i}));this.depthStencilAttachment.destroy(),this.depthStencilAttachment=u,this.renderPassDescriptor.depthStencilAttachment.view=u.handle.createView()}}}]),e}(nt);function po(t){var n=ho();return function(){var r=d(t),o;if(n){var i=d(this).constructor;o=Reflect.construct(r,arguments,i)}else o=r.apply(this,arguments);return w(this,o)}}function ho(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var ut=function(t){P(e,t);var n=po(e);function e(r,o,i){var a;return g(this,e),a=n.call(this,i),s(f(a),"device",void 0),s(f(a),"gpuCanvasContext",void 0),s(f(a),"format",void 0),s(f(a),"depthStencilFormat","depth24plus"),s(f(a),"sampleCount",1),s(f(a),"depthStencilAttachment",null),a.device=r,a.width=-1,a.height=-1,a._setAutoCreatedCanvasId("".concat(a.device.id,"-canvas")),a.gpuCanvasContext=a.canvas.getContext("webgpu"),a.format=a.gpuCanvasContext.getPreferredFormat(o),a}return v(e,[{key:"destroy",value:function(){this.gpuCanvasContext.unconfigure()}},{key:"getCurrentFramebuffer",value:function(){this.update();var o=this.device.createTexture({id:"default-render-target",handle:this.gpuCanvasContext.getCurrentTexture(),format:this.format,width:this.width,height:this.height});return this._createDepthStencilAttachment(),new Or(this.device,{colorAttachments:[o],depthStencilAttachment:this.depthStencilAttachment})}},{key:"update",value:function(){var o=this.getPixelSize(),i=j(o,2),a=i[0],c=i[1],u=a!==this.width||c!==this.height;u&&(this.width=a,this.height=c,this.depthStencilAttachment&&(this.depthStencilAttachment.destroy(),this.depthStencilAttachment=null),this.gpuCanvasContext.configure({device:this.device.handle,format:he(this.format),colorSpace:this.props.colorSpace,alphaMode:this.props.alphaMode}),x.log(1,"Resized to ".concat(this.width,"x").concat(this.height,"px"))())}},{key:"resize",value:function(o){this.update()}},{key:"_createDepthStencilAttachment",value:function(){return this.depthStencilAttachment||(this.depthStencilAttachment=this.device.createTexture({id:"depth-stencil-target",format:this.depthStencilFormat,width:this.width,height:this.height,usage:GPUTextureUsage.RENDER_ATTACHMENT})),this.depthStencilAttachment}}]),e}(pe);function xr(t,n){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);n&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),e.push.apply(e,r)}return e}function Rr(t){for(var n=1;n<arguments.length;n++){var e=arguments[n]!=null?arguments[n]:{};n%2?xr(Object(e),!0).forEach(function(r){s(t,r,e[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):xr(Object(e)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))})}return t}function mo(t){var n=go();return function(){var r=d(t),o;if(n){var i=d(this).constructor;o=Reflect.construct(r,arguments,i)}else o=r.apply(this,arguments);return w(this,o)}}function go(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var ct=function(t){P(e,t);var n=mo(e);function e(r,o,i){var a;return g(this,e),a=n.call(this,Rr(Rr({},i),{},{id:i.id||oe("webgpu-device")})),s(f(a),"handle",void 0),s(f(a),"adapter",void 0),s(f(a),"lost",void 0),s(f(a),"canvasContext",null),s(f(a),"commandEncoder",null),s(f(a),"renderPass",null),s(f(a),"_info",void 0),s(f(a),"_isLost",!1),s(f(a),"features",void 0),a.handle=r,a.adapter=o,a._info={type:"webgpu",vendor:a.adapter.__brand,renderer:"",version:"",gpu:"unknown",shadingLanguages:["glsl","wgsl"],shadingLanguageVersions:{glsl:"450",wgsl:"100"},vendorMasked:"",rendererMasked:""},a.lost=new Promise(function(){var c=Y(Se.default.mark(function u(m){var S;return Se.default.wrap(function(R){for(;;)switch(R.prev=R.next){case 0:return R.next=2,a.handle.lost;case 2:S=R.sent,a._isLost=!0,m({reason:"destroyed",message:S.message});case 5:case"end":return R.stop()}},u)}));return function(u){return c.apply(this,arguments)}}()),i.canvas&&(a.canvasContext=new ut(f(a),a.adapter,{canvas:i.canvas})),a.features=a._getFeatures(),a}return v(e,[{key:"destroy",value:function(){this.handle.destroy()}},{key:"info",get:function(){return this._info}},{key:"limits",get:function(){return this.handle.limits}},{key:"isTextureFormatSupported",value:function(o){return!o.includes("webgl")}},{key:"isTextureFormatFilterable",value:function(o){return this.isTextureFormatSupported(o)}},{key:"isTextureFormatRenderable",value:function(o){return this.isTextureFormatSupported(o)}},{key:"isLost",get:function(){return this._isLost}},{key:"_createBuffer",value:function(o){return new Ne(this,o)}},{key:"_createTexture",value:function(o){return new ie(this,o)}},{key:"createExternalTexture",value:function(o){return new cr(this,o)}},{key:"createShader",value:function(o){return new Ue(this,o)}},{key:"createSampler",value:function(o){return new M(this,o)}},{key:"createRenderPipeline",value:function(o){return new br(this,o)}},{key:"createFramebuffer",value:function(o){throw new Error("Not implemented")}},{key:"createComputePipeline",value:function(o){return new _r(this,o)}},{key:"beginRenderPass",value:function(o){return this.commandEncoder=this.commandEncoder||this.handle.createCommandEncoder(),new Pr(this,o)}},{key:"beginComputePass",value:function(o){return this.commandEncoder=this.commandEncoder||this.handle.createCommandEncoder(),new wr(this,o)}},{key:"createCanvasContext",value:function(o){return new ut(this,this.adapter,o)}},{key:"getDefaultRenderPass",value:function(){var o;return this.renderPass=this.renderPass||this.beginRenderPass({framebuffer:(o=this.canvasContext)===null||o===void 0?void 0:o.getCurrentFramebuffer()}),this.renderPass}},{key:"submit",value:function(){var o,i;(o=this.renderPass)===null||o===void 0||o.end();var a=(i=this.commandEncoder)===null||i===void 0?void 0:i.finish();a&&this.handle.queue.submit([a]),this.commandEncoder=null,this.renderPass=null}},{key:"_getFeatures",value:function(){var o=new Set(this.handle.features);return o.has("depth-clamping")&&(o.delete("depth-clamping"),o.add("depth-clip-control")),o.has("texture-compression-bc")&&o.add("texture-compression-bc5-webgl"),o.add("webgpu"),o.add("timer-query-webgl"),o.add("vertex-array-object-webgl1"),o.add("instanced-rendering-webgl1"),o.add("multiple-render-targets-webgl1"),o.add("index-uint32-webgl1"),o.add("blend-minmax-webgl1"),o.add("texture-blend-float-webgl1"),o.add("texture-formats-srgb-webgl1"),o.add("texture-formats-depth-webgl1"),o.add("texture-formats-float32-webgl1"),o.add("texture-formats-float16-webgl1"),o.add("texture-filter-linear-float32-webgl"),o.add("texture-filter-linear-float16-webgl"),o.add("texture-filter-anisotropic-webgl"),o.add("texture-renderable-rgba32float-webgl"),o.add("texture-renderable-float32-webgl"),o.add("texture-renderable-float16-webgl"),o.add("glsl-frag-data"),o.add("glsl-frag-depth"),o.add("glsl-derivatives"),o.add("glsl-texture-lod"),o}}],[{key:"isSupported",value:function(){return Boolean(typeof navigator<"u"&&navigator.gpu)}},{key:"create",value:function(){var r=Y(Se.default.mark(function i(a){var c,u,m;return Se.default.wrap(function(y){for(;;)switch(y.prev=y.next){case 0:if(navigator.gpu){y.next=2;break}throw new Error("WebGPU not available. Open in Chrome Canary and turn on chrome://flags/#enable-unsafe-webgpu");case 2:return x.groupCollapsed(1,"WebGPUDevice created")(),y.next=5,navigator.gpu.requestAdapter({powerPreference:"high-performance"});case 5:if(c=y.sent,c){y.next=8;break}throw new Error("Failed to request WebGPU adapter");case 8:return x.probe(1,"Adapter available")(),y.next=11,c.requestDevice({requiredFeatures:c.features});case 11:if(u=y.sent,x.probe(1,"GPUDevice available")(),typeof a.canvas!="string"){y.next=17;break}return y.next=16,pe.pageLoaded;case 16:x.probe(1,"DOM is loaded")();case 17:return m=new e(u,c,a),x.probe(1,"Device created",m.info)(),x.table(1,m.info)(),x.groupEnd(1)(),y.abrupt("return",m);case 22:case"end":return y.stop()}},i)}));function o(i){return r.apply(this,arguments)}return o}()}]),e}(je);s(ct,"type","webgpu");return Dr(vo);})();
11
+ /*! Bundled license information:
12
+
13
+ @babel/runtime/helpers/regeneratorRuntime.js:
14
+ (*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE *)
15
+ */
16
+ return __exports__;
17
+ });
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "@luma.gl/webgpu",
3
- "version": "9.0.0-alpha.2",
3
+ "version": "9.0.0-alpha.21",
4
4
  "description": "WebGPU adapter for the luma.gl API",
5
+ "type": "module",
5
6
  "license": "MIT",
6
7
  "repository": {
7
8
  "type": "git",
@@ -13,24 +14,32 @@
13
14
  "animation",
14
15
  "3d"
15
16
  ],
16
- "types": "src/index.ts",
17
- "main": "dist/index.js",
17
+ "types": "dist/index.d.ts",
18
+ "main": "dist/index.cjs",
18
19
  "module": "dist/index.js",
20
+ "exports": {
21
+ ".": {
22
+ "import": "./dist/index.js",
23
+ "require": "./dist/index.cjs",
24
+ "types": "./dist/index.d.ts"
25
+ }
26
+ },
19
27
  "files": [
20
28
  "src",
21
29
  "dist",
30
+ "dist.min.js",
22
31
  "README.md"
23
32
  ],
24
33
  "sideEffects": false,
25
34
  "scripts": {
26
- "pre-build": "npm run build-bundle && npm run build-bundle -- --env.dev",
27
- "build-bundle": "webpack --display=minimal --config ../../scripts/bundle.config.js"
35
+ "build-bundle": "ocular-bundle ./src/index.ts",
36
+ "pre-build": "npm run build-bundle && npm run build-bundle -- --env=dev"
28
37
  },
29
38
  "dependencies": {
30
39
  "@babel/runtime": "^7.0.0",
31
- "@luma.gl/api": "9.0.0-alpha.2",
32
- "@webgpu/types": "^0.1.9",
33
- "probe.gl": "^3.2.1"
40
+ "@luma.gl/api": "9.0.0-alpha.21",
41
+ "@probe.gl/env": "^4.0.2",
42
+ "@webgpu/types": "^0.1.31"
34
43
  },
35
- "gitHead": "81e93840f31f0e32f86dfea6b576acf2c2d9caec"
44
+ "gitHead": "7ee95470a6a2f62753201beb0c36b00e37c70455"
36
45
  }
package/src/.DS_Store ADDED
Binary file
Binary file
@@ -53,7 +53,7 @@ export class WebGPUMipmapGenerator {
53
53
  }
54
54
 
55
55
  generateMipmappedTexture(imageBitmap: ImageBitmap) {
56
- let textureSize = {
56
+ const textureSize = {
57
57
  width: imageBitmap.width,
58
58
  height: imageBitmap.height,
59
59
  depth: 1,
@@ -1,15 +1,15 @@
1
1
  // luma.gl, MIT license
2
2
  import type {ShaderLayout, BindingLayout, Binding} from '@luma.gl/api';
3
3
  import {Buffer, Sampler, Texture, log, cast} from '@luma.gl/api';
4
- import type WebGPUBuffer from '../resources/webgpu-buffer';
5
- import type WebGPUSampler from '../resources/webgpu-sampler';
6
- import type WebGPUTexture from '../resources/webgpu-texture';
4
+ import type {WebGPUBuffer} from '../resources/webgpu-buffer';
5
+ import type {WebGPUSampler} from '../resources/webgpu-sampler';
6
+ import type {WebGPUTexture} from '../resources/webgpu-texture';
7
7
 
8
8
  /**
9
9
  * Create a WebGPU "bind group layout" from an array of luma.gl bindings
10
10
  * @note bind groups can be automatically generated by WebGPU.
11
11
  */
12
- export function makeBindGroupLayout(device: GPUDevice, layout: GPUBindGroupLayout, bindings: Binding[]): GPUBindGroupLayout {
12
+ export function makeBindGroupLayout(device: GPUDevice, layout: GPUBindGroupLayout, bindings: Binding[]): GPUBindGroupLayout {
13
13
  throw new Error('not implemented');
14
14
  // return device.createBindGroupLayout({
15
15
  // layout,
@@ -20,11 +20,11 @@ export function getVertexBufferLayout(layout: ShaderLayout, bufferMap: BufferMap
20
20
  // TODO verify that all stepModes for one buffer are the same
21
21
  let stepMode: 'vertex' | 'instance' = 'vertex';
22
22
  let byteStride = 0;
23
- let byteOffset = mapping.byteOffset || 0;
23
+ const byteOffset = mapping.byteOffset || 0;
24
24
 
25
25
  // interleaved mapping {..., attributes: [{...}, ...]}
26
26
  if ('attributes' in mapping) {
27
- const arrayStride = mapping.byteStride;
27
+ // const arrayStride = mapping.byteStride; TODO
28
28
  for (const interleaved of mapping.attributes) {
29
29
  const attributeLayout = findAttributeLayout(layout, interleaved.name, usedAttributes);
30
30
 
@@ -40,7 +40,7 @@ export function getVertexBufferLayout(layout: ShaderLayout, bufferMap: BufferMap
40
40
  // non-interleaved mapping (just set offset and stride)
41
41
  } else {
42
42
  const attributeLayout = findAttributeLayout(layout, mapping.name, usedAttributes);
43
- byteStride = decodeVertexFormat(attributeLayout.format).byteLength,
43
+ byteStride = decodeVertexFormat(attributeLayout.format).byteLength;
44
44
 
45
45
  stepMode = attributeLayout.stepMode || 'vertex';
46
46
  vertexAttributes.push({
@@ -1,12 +1,16 @@
1
1
  import {Parameters} from '@luma.gl/api';
2
2
 
3
- function addDepthStencil(descriptor: GPURenderPipelineDescriptor): void {
3
+ function addDepthStencil(descriptor: GPURenderPipelineDescriptor): GPUDepthStencilState {
4
4
  descriptor.depthStencil = descriptor.depthStencil || {
5
5
  // required, set something
6
6
  format: 'depth24plus',
7
7
  stencilFront: {},
8
- stencilBack: {}
8
+ stencilBack: {},
9
+ // TODO can this cause trouble? Should we set to WebGPU defaults? Are there defaults?
10
+ depthWriteEnabled: undefined!,
11
+ depthCompare: undefined!
9
12
  };
13
+ return descriptor.depthStencil;
10
14
  }
11
15
 
12
16
  /**
@@ -18,79 +22,81 @@ export const PARAMETER_TABLE: Record<keyof Parameters, Function> = {
18
22
  // RASTERIZATION PARAMETERS
19
23
 
20
24
  cullMode: (parameter: keyof Parameters, value: any, descriptor: GPURenderPipelineDescriptor) => {
25
+ descriptor.primitive = descriptor.primitive || {};
21
26
  descriptor.primitive.cullMode = value;
22
27
  },
23
28
 
24
29
  frontFace: (parameter: keyof Parameters, value: any, descriptor: GPURenderPipelineDescriptor) => {
30
+ descriptor.primitive = descriptor.primitive || {};
25
31
  descriptor.primitive.frontFace = value;
26
32
  },
27
33
 
28
34
  // DEPTH
29
35
 
30
36
  depthWriteEnabled: (parameter: keyof Parameters, value: any, descriptor: GPURenderPipelineDescriptor) => {
31
- addDepthStencil(descriptor);
32
- descriptor.depthStencil.depthWriteEnabled = value;
37
+ const depthStencil = addDepthStencil(descriptor);
38
+ depthStencil.depthWriteEnabled = value;
33
39
  },
34
40
 
35
41
  depthCompare: (parameter: keyof Parameters, value: any, descriptor: GPURenderPipelineDescriptor) => {
36
- addDepthStencil(descriptor);
37
- descriptor.depthStencil.depthCompare = value;
42
+ const depthStencil = addDepthStencil(descriptor);
43
+ depthStencil.depthCompare = value;
38
44
  },
39
45
 
40
46
  depthFormat: (parameter: keyof Parameters, value: any, descriptor: GPURenderPipelineDescriptor) => {
41
- addDepthStencil(descriptor);
42
- descriptor.depthStencil.format = value;
47
+ const depthStencil = addDepthStencil(descriptor);
48
+ depthStencil.format = value;
43
49
  },
44
50
 
45
51
  depthBias: (parameter: keyof Parameters, value: any, descriptor: GPURenderPipelineDescriptor) => {
46
- addDepthStencil(descriptor);
47
- descriptor.depthStencil.depthBias = value;
52
+ const depthStencil = addDepthStencil(descriptor);
53
+ depthStencil.depthBias = value;
48
54
  },
49
55
 
50
56
  depthBiasSlopeScale: (parameter: keyof Parameters, value: any, descriptor: GPURenderPipelineDescriptor) => {
51
- addDepthStencil(descriptor);
52
- descriptor.depthStencil.depthBiasSlopeScale = value;
57
+ const depthStencil = addDepthStencil(descriptor);
58
+ depthStencil.depthBiasSlopeScale = value;
53
59
  },
54
60
 
55
61
  depthBiasClamp: (parameter: keyof Parameters, value: any, descriptor: GPURenderPipelineDescriptor) => {
56
- addDepthStencil(descriptor);
57
- descriptor.depthStencil.depthBiasClamp = value;
62
+ const depthStencil = addDepthStencil(descriptor);
63
+ depthStencil.depthBiasClamp = value;
58
64
  },
59
65
 
60
66
  // STENCIL
61
67
 
62
68
  stencilReadMask: (parameter: keyof Parameters, value: any, descriptor: GPURenderPipelineDescriptor) => {
63
- addDepthStencil(descriptor);
64
- descriptor.depthStencil.stencilReadMask = value;
69
+ const depthStencil = addDepthStencil(descriptor);
70
+ depthStencil.stencilReadMask = value;
65
71
  },
66
72
 
67
73
  stencilWriteMask: (parameter: keyof Parameters, value: any, descriptor: GPURenderPipelineDescriptor) => {
68
- addDepthStencil(descriptor);
69
- descriptor.depthStencil.stencilWriteMask = value;
74
+ const depthStencil = addDepthStencil(descriptor);
75
+ depthStencil.stencilWriteMask = value;
70
76
  },
71
77
 
72
78
  stencilCompare: (parameter: keyof Parameters, value: any, descriptor: GPURenderPipelineDescriptor) => {
73
- addDepthStencil(descriptor);
74
- descriptor.depthStencil.stencilFront.compare = value;
75
- descriptor.depthStencil.stencilBack.compare = value;
79
+ const depthStencil = addDepthStencil(descriptor);
80
+ depthStencil.stencilFront.compare = value;
81
+ depthStencil.stencilBack.compare = value;
76
82
  },
77
83
 
78
84
  stencilPassOperation: (parameter: keyof Parameters, value: any, descriptor: GPURenderPipelineDescriptor) => {
79
- addDepthStencil(descriptor);
80
- descriptor.depthStencil.stencilFront.passOp = value;
81
- descriptor.depthStencil.stencilBack.passOp = value;
85
+ const depthStencil = addDepthStencil(descriptor);
86
+ depthStencil.stencilFront.passOp = value;
87
+ depthStencil.stencilBack.passOp = value;
82
88
  },
83
89
 
84
90
  stencilFailOperation: (parameter: keyof Parameters, value: any, descriptor: GPURenderPipelineDescriptor) => {
85
- addDepthStencil(descriptor);
86
- descriptor.depthStencil.stencilFront.failOp = value;
87
- descriptor.depthStencil.stencilBack.failOp = value;
91
+ const depthStencil = addDepthStencil(descriptor);
92
+ depthStencil.stencilFront.failOp = value;
93
+ depthStencil.stencilBack.failOp = value;
88
94
  },
89
95
 
90
96
  stencilDepthFailOperation: (parameter: keyof Parameters, value: any, descriptor: GPURenderPipelineDescriptor) => {
91
- addDepthStencil(descriptor);
92
- descriptor.depthStencil.stencilFront.depthFailOp = value;
93
- descriptor.depthStencil.stencilBack.depthFailOp = value;
97
+ const depthStencil = addDepthStencil(descriptor);
98
+ depthStencil.stencilFront.depthFailOp = value;
99
+ depthStencil.stencilBack.depthFailOp = value;
94
100
  },
95
101
 
96
102
  // MULTISAMPLE
@@ -113,18 +119,17 @@ export const PARAMETER_TABLE: Record<keyof Parameters, Function> = {
113
119
  // COLOR
114
120
 
115
121
  colorMask: (parameter: keyof Parameters, value: any, descriptor: GPURenderPipelineDescriptor) => {
116
- addColorState(descriptor);
117
- const targets = descriptor.fragment.targets as GPUColorTargetState[];
122
+ const targets = addColorState(descriptor);
118
123
  targets[0].writeMask = value;
119
124
  },
120
125
 
121
126
  blendColorOperation: (parameter: keyof Parameters, value: any, descriptor: GPURenderPipelineDescriptor) => {
122
127
  addColorState(descriptor);
123
- const targets = descriptor.fragment.targets as GPUColorTargetState[];
124
- // @ts-expect-error
125
- targets[0].blend = targets[0].blend || {};
126
- targets[0].blend.color = targets[0].blend.color || {};
127
- targets[0].blend.color.operation = value;
128
+ // const targets = addColorState(descriptor);
129
+ // const target = targets[0];
130
+ // const blend: GPUBlendState = target.blend || {color: {alpha: 0}};
131
+ // blend.color = blend.color || {};
132
+ // target.blend.color.operation = value;
128
133
  }
129
134
 
130
135
  /*
@@ -180,17 +185,19 @@ const DEFAULT_PIPELINE_DESCRIPTOR: GPURenderPipelineDescriptor = {
180
185
  },
181
186
 
182
187
  vertex: {
183
- module: undefined,
188
+ module: undefined!,
184
189
  entryPoint: 'main'
185
190
  },
186
191
 
187
192
  fragment: {
188
- module: undefined,
193
+ module: undefined!,
189
194
  entryPoint: 'main',
190
195
  targets: [
191
196
  // { format: props.color0Format || 'bgra8unorm' }
192
197
  ]
193
- }
198
+ },
199
+
200
+ layout: 'auto'
194
201
  };
195
202
 
196
203
  export function applyParametersToRenderPipelineDescriptor(
@@ -216,11 +223,13 @@ function setParameters(
216
223
  }
217
224
  }
218
225
 
219
- function addColorState(descriptor: GPURenderPipelineDescriptor): void {
220
- descriptor.fragment.targets = descriptor.fragment.targets || [];
221
- // @ts-expect-error
222
- if (descriptor.fragment.targets.length === 0) {
223
- // @ts-expect-error
224
- descriptor.fragment.targets.push({});
226
+ function addColorState(descriptor: GPURenderPipelineDescriptor): GPUColorTargetState[] {
227
+ descriptor.fragment.targets = descriptor.fragment?.targets || [];
228
+ if (!Array.isArray(descriptor.fragment?.targets)) {
229
+ throw new Error('colorstate');
230
+ }
231
+ if (descriptor.fragment?.targets?.length === 0) {
232
+ descriptor.fragment.targets?.push({});
225
233
  }
234
+ return descriptor.fragment?.targets as GPUColorTargetState[];
226
235
  }
@@ -1,12 +1,12 @@
1
1
  // WEBGPU Buffer implementation
2
- import {Buffer, BufferProps, assert} from '@luma.gl/api';
3
- import type WebGPUDevice from '../webgpu-device';
2
+ import {Buffer, BufferProps} from '@luma.gl/api';
3
+ import type {WebGPUDevice} from '../webgpu-device';
4
4
 
5
5
  function getByteLength(props: BufferProps): number {
6
6
  return props.byteLength || props.data?.byteLength || 0;
7
7
  }
8
8
 
9
- export default class WebGPUBuffer extends Buffer {
9
+ export class WebGPUBuffer extends Buffer {
10
10
  readonly device: WebGPUDevice;
11
11
  readonly handle: GPUBuffer;
12
12
  readonly byteLength: number;
@@ -36,16 +36,12 @@ export default class WebGPUBuffer extends Buffer {
36
36
  }
37
37
  }
38
38
 
39
- protected createHandle(mapBuffer: boolean): GPUBuffer {
40
- return
41
- }
42
-
43
- destroy(): void {
39
+ override destroy(): void {
44
40
  this.handle.destroy();
45
41
  }
46
42
 
47
43
  // WebGPU provides multiple ways to write a buffer...
48
- write(data: ArrayBufferView, byteOffset = 0) {
44
+ override write(data: ArrayBufferView, byteOffset = 0) {
49
45
  this.device.handle.queue.writeBuffer(
50
46
  this.handle,
51
47
  byteOffset,
@@ -55,7 +51,7 @@ export default class WebGPUBuffer extends Buffer {
55
51
  );
56
52
  }
57
53
 
58
- async readAsync(byteOffset: number = 0, byteLength: number = this.byteLength): Promise<ArrayBuffer> {
54
+ override async readAsync(byteOffset: number = 0, byteLength: number = this.byteLength): Promise<ArrayBuffer> {
59
55
  // We need MAP_READ flag, but only COPY_DST buffers can have MAP_READ flag, so we need to create a temp buffer
60
56
  const tempBuffer = new WebGPUBuffer(this.device, {usage: Buffer.MAP_READ | Buffer.COPY_DST, byteLength});
61
57