@mateuszjs/magic-render 0.0.1-next.1 → 0.0.1-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/701.53ef6be51135b1f869af.js +1 -0
- package/dist/WebGPU/canvasSizeObserver.d.ts +2 -0
- package/dist/WebGPU/canvasSizeObserver.d.ts.map +1 -0
- package/dist/WebGPU/getDevice.d.ts +2 -0
- package/dist/WebGPU/getDevice.d.ts.map +1 -0
- package/dist/WebGPU/getTexture/createCheckedImageData.d.ts +2 -0
- package/dist/WebGPU/getTexture/createCheckedImageData.d.ts.map +1 -0
- package/dist/WebGPU/getTexture/generateMimapsArray.d.ts +7 -0
- package/dist/WebGPU/getTexture/generateMimapsArray.d.ts.map +1 -0
- package/dist/WebGPU/getTexture/index.d.ts +17 -0
- package/dist/WebGPU/getTexture/index.d.ts.map +1 -0
- package/dist/WebGPU/m3.d.ts +14 -0
- package/dist/WebGPU/m3.d.ts.map +1 -0
- package/dist/WebGPU/programs/blur/getProgram.d.ts +2 -0
- package/dist/WebGPU/programs/blur/getProgram.d.ts.map +1 -0
- package/dist/WebGPU/programs/draw3dModel/getProgram.d.ts +2 -0
- package/dist/WebGPU/programs/draw3dModel/getProgram.d.ts.map +1 -0
- package/dist/WebGPU/programs/draw3dModelLight/getProgram.d.ts +9 -0
- package/dist/WebGPU/programs/draw3dModelLight/getProgram.d.ts.map +1 -0
- package/dist/WebGPU/programs/draw3dModelTexture/getProgram.d.ts +2 -0
- package/dist/WebGPU/programs/draw3dModelTexture/getProgram.d.ts.map +1 -0
- package/dist/WebGPU/programs/drawBezier/getProgram.d.ts +2 -0
- package/dist/WebGPU/programs/drawBezier/getProgram.d.ts.map +1 -0
- package/dist/WebGPU/programs/drawTexture/getProgram.d.ts +2 -0
- package/dist/WebGPU/programs/drawTexture/getProgram.d.ts.map +1 -0
- package/dist/WebGPU/programs/drawTriangle/getProgram.d.ts +2 -0
- package/dist/WebGPU/programs/drawTriangle/getProgram.d.ts.map +1 -0
- package/dist/WebGPU/programs/initPrograms.d.ts +16 -0
- package/dist/WebGPU/programs/initPrograms.d.ts.map +1 -0
- package/dist/__test__/index.test.d.ts +1 -0
- package/dist/__test__/index.test.d.ts.map +1 -0
- package/dist/components/Preview/index.d.ts +1 -0
- package/dist/components/Preview/index.d.ts.map +1 -0
- package/dist/consts.d.ts +16 -0
- package/dist/consts.d.ts.map +1 -0
- package/dist/getCanvasMatrix.d.ts +2 -0
- package/dist/getCanvasMatrix.d.ts.map +1 -0
- package/dist/getCanvasRenderDescriptor.d.ts +2 -0
- package/dist/getCanvasRenderDescriptor.d.ts.map +1 -0
- package/dist/getDepthTexture.d.ts +2 -0
- package/dist/getDepthTexture.d.ts.map +1 -0
- package/dist/getRenderDescriptor.d.ts +2 -0
- package/dist/getRenderDescriptor.d.ts.map +1 -0
- package/dist/index.60c4a3a7fc17987014f5.js +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.html +1 -1
- package/dist/models/Video/MiniatureVideo.d.ts +30 -0
- package/dist/models/Video/MiniatureVideo.d.ts.map +1 -0
- package/dist/run.d.ts +5 -0
- package/dist/run.d.ts.map +1 -0
- package/dist/test-runtime.63d51731843ade072b76.js +1 -0
- package/dist/test.js +1 -1
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/utils/atNormIndex.d.ts +2 -0
- package/dist/utils/atNormIndex.d.ts.map +1 -0
- package/dist/utils/captureCanvasStream.d.ts +2 -0
- package/dist/utils/captureCanvasStream.d.ts.map +1 -0
- package/dist/utils/captureCanvasStreamWasm.d.ts +1 -0
- package/dist/utils/captureCanvasStreamWasm.d.ts.map +1 -0
- package/dist/utils/clamp.d.ts +2 -0
- package/dist/utils/clamp.d.ts.map +1 -0
- package/dist/utils/distancePointToLine.d.ts +3 -0
- package/dist/utils/distancePointToLine.d.ts.map +1 -0
- package/dist/utils/fitCurve.d.ts +19 -0
- package/dist/utils/fitCurve.d.ts.map +1 -0
- package/dist/utils/getAngle.d.ts +3 -0
- package/dist/utils/getAngle.d.ts.map +1 -0
- package/dist/utils/getAngleDiff.d.ts +2 -0
- package/dist/utils/getAngleDiff.d.ts.map +1 -0
- package/dist/utils/getBezierPos.d.ts +3 -0
- package/dist/utils/getBezierPos.d.ts.map +1 -0
- package/dist/utils/getBezierTan.d.ts +3 -0
- package/dist/utils/getBezierTan.d.ts.map +1 -0
- package/dist/utils/getCurveLength.d.ts +3 -0
- package/dist/utils/getCurveLength.d.ts.map +1 -0
- package/dist/utils/getDistance.d.ts +3 -0
- package/dist/utils/getDistance.d.ts.map +1 -0
- package/dist/utils/mat4.d.ts +24 -0
- package/dist/utils/mat4.d.ts.map +1 -0
- package/dist/utils/normalizeVec2.d.ts +3 -0
- package/dist/utils/normalizeVec2.d.ts.map +1 -0
- package/dist/utils/resizeArray.d.ts +2 -0
- package/dist/utils/resizeArray.d.ts.map +1 -0
- package/dist/utils/vec3.d.ts +7 -0
- package/dist/utils/vec3.d.ts.map +1 -0
- package/package.json +7 -4
- package/dist/701.8865a3847df7a00b654f.js +0 -1
- package/dist/index.091b35ccc88a5b66a13d.js +0 -1
- package/dist/runtime.b446baaefd034f2441f4.js +0 -1
- package/dist/test-runtime.b4b1366194213dd85a27.js +0 -1
- package/webpack.config.js +0 -80
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=701,exports.ids=[701],exports.modules={701:(e,t,n)=>{n.a(e,(async(e,_)=>{try{n.r(t),n.d(t,{State:()=>i.Uw,__wbg_error_53abcd6a461f73d8:()=>i.$X,__wbg_new_034f913e7636e987:()=>i.x4,__wbg_new_e69b5f66fda8f13c:()=>i.YV,__wbg_set_20cbc34131e76824:()=>i.H0,__wbg_set_425e70f7c64ac962:()=>i.Ls,__wbg_set_wasm:()=>i.lI,__wbg_stringify_eead5648c09faaf8:()=>i.Yg,__wbindgen_init_externref_table:()=>i.bL,__wbindgen_is_undefined:()=>i.vU,__wbindgen_number_new:()=>i.QR,__wbindgen_string_get:()=>i.qN,__wbindgen_string_new:()=>i.yc,__wbindgen_throw:()=>i.Qn});var r=n(962),i=n(895),o=e([r]);r=(o.then?(await o)():o)[0],(0,i.lI)(r),r.__wbindgen_start(),_()}catch(e){_(e)}}))},895:(e,t,n)=>{let _;function r(e){_=e}n.d(t,{$X:()=>T,H0:()=>m,Ls:()=>I,QR:()=>x,Qn:()=>Q,Uw:()=>b,YV:()=>h,Yg:()=>p,bL:()=>U,lI:()=>r,qN:()=>L,vU:()=>l,x4:()=>v,yc:()=>y});let i=new("undefined"==typeof TextDecoder?(0,module.require)("util").TextDecoder:TextDecoder)("utf-8",{ignoreBOM:!0,fatal:!0});i.decode();let o=null;function s(){return null!==o&&0!==o.byteLength||(o=new Uint8Array(_.memory.buffer)),o}function c(e,t){return e>>>=0,i.decode(s().subarray(e,e+t))}let d=0,u=new("undefined"==typeof TextEncoder?(0,module.require)("util").TextEncoder:TextEncoder)("utf-8");const f="function"==typeof u.encodeInto?function(e,t){return u.encodeInto(e,t)}:function(e,t){const n=u.encode(e);return t.set(n),{read:e.length,written:n.length}};let a=null;function w(){return(null===a||!0===a.buffer.detached||void 0===a.buffer.detached&&a.buffer!==_.memory.buffer)&&(a=new DataView(_.memory.buffer)),a}const g="undefined"==typeof FinalizationRegistry?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>_.__wbg_state_free(e>>>0,1)));class b{static __wrap(e){e>>>=0;const t=Object.create(b.prototype);return t.__wbg_ptr=e,g.register(t,t.__wbg_ptr,t),t}__destroy_into_raw(){const e=this.__wbg_ptr;return this.__wbg_ptr=0,g.unregister(this),e}free(){const e=this.__destroy_into_raw();_.__wbg_state_free(e,0)}static new(e,t){const n=_.state_new(e,t);return b.__wrap(n)}add_texture(e,t){_.state_add_texture(this.__wbg_ptr,e,t)}get_shader_input(e){return _.state_get_shader_input(this.__wbg_ptr,e)}update_points(e,t){_.state_update_points(this.__wbg_ptr,e,t)}}function l(e){return void 0===e}function p(){return function(e,t){try{return e.apply(this,t)}catch(e){const t=function(e){const t=_.__externref_table_alloc();return _.__wbindgen_export_2.set(t,e),t}(e);_.__wbindgen_exn_store(t)}}((function(e){return JSON.stringify(e)}),arguments)}function y(e,t){return c(e,t)}function h(){return new Object}function x(e){return e}function m(e,t,n){e[t]=n}function v(){return new Array}function I(e,t,n){e[t>>>0]=n}function L(e,t){const n="string"==typeof t?t:void 0;var r=null==n?0:function(e,t,n){if(void 0===n){const n=u.encode(e),_=t(n.length,1)>>>0;return s().subarray(_,_+n.length).set(n),d=n.length,_}let _=e.length,r=t(_,1)>>>0;const i=s();let o=0;for(;o<_;o++){const t=e.charCodeAt(o);if(t>127)break;i[r+o]=t}if(o!==_){0!==o&&(e=e.slice(o)),r=n(r,_,_=o+3*e.length,1)>>>0;const t=s().subarray(r+o,r+_);o+=f(e,t).written,r=n(r,_,o,1)>>>0}return d=o,r}(n,_.__wbindgen_malloc,_.__wbindgen_realloc),i=d;w().setInt32(e+4,i,!0),w().setInt32(e+0,r,!0)}function Q(e,t){throw new Error(c(e,t))}const T="function"==typeof console.error?console.error:()=>{throw new Error("console.error is not defined")};function U(){const e=_.__wbindgen_export_2,t=e.grow(4);e.set(0,void 0),e.set(t+0,void 0),e.set(t+1,null),e.set(t+2,!0),e.set(t+3,!1)}},962:(e,t,n)=>{var _=n(895);e.exports=n.v(t,e.id,"2e9c8dbbfc49aa9c830e",{"./index_bg.js":{__wbindgen_is_undefined:_.vU,__wbg_stringify_eead5648c09faaf8:_.Yg,__wbindgen_string_new:_.yc,__wbg_new_e69b5f66fda8f13c:_.YV,__wbindgen_number_new:_.QR,__wbg_set_20cbc34131e76824:_.H0,__wbg_new_034f913e7636e987:_.x4,__wbg_set_425e70f7c64ac962:_.Ls,__wbindgen_string_get:_.qN,__wbindgen_throw:_.Qn,__wbg_error_53abcd6a461f73d8:_.$X,__wbindgen_init_externref_table:_.bL}})}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canvasSizeObserver.d.ts","sourceRoot":"","sources":["../../src/WebGPU/canvasSizeObserver.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,OAAO,UAAU,kBAAkB,CACxC,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,YAAY,QAgBvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getDevice.d.ts","sourceRoot":"","sources":["../../src/WebGPU/getDevice.ts"],"names":[],"mappings":"AAAA,wBAA8B,SAAS,uBAuBtC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createCheckedImageData.d.ts","sourceRoot":"","sources":["../../../src/WebGPU/getTexture/createCheckedImageData.ts"],"names":[],"mappings":"AAiBA,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAwBrF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
interface TextureOptions {
|
|
2
|
+
baseArrayLayer: GPUIntegerCoordinate;
|
|
3
|
+
arrayLayerCount: 1;
|
|
4
|
+
}
|
|
5
|
+
export default function generateMips(device: GPUDevice, texture: GPUTexture, textureOptions: TextureOptions): void;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=generateMimapsArray.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateMimapsArray.d.ts","sourceRoot":"","sources":["../../../src/WebGPU/getTexture/generateMimapsArray.ts"],"names":[],"mappings":"AAIA,UAAU,cAAc;IACtB,cAAc,EAAE,oBAAoB,CAAC;IACrC,eAAe,EAAE,CAAC,CAAC;CACpB;AAED,MAAM,CAAC,OAAO,UAAU,YAAY,CAClC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,UAAU,EACnB,cAAc,EAAE,cAAc,QAuH/B"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
interface Options {
|
|
2
|
+
mips?: boolean;
|
|
3
|
+
flipY?: boolean;
|
|
4
|
+
depthOrArrayLayers?: number;
|
|
5
|
+
}
|
|
6
|
+
type TextureSource = ImageBitmap | HTMLVideoElement | HTMLCanvasElement | HTMLImageElement | OffscreenCanvas;
|
|
7
|
+
export interface TextureSlice {
|
|
8
|
+
source: GPUCopyExternalImageSource;
|
|
9
|
+
fakeMipmaps: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare function createTextureArray(device: GPUDevice, width: number, height: number, slices: number): GPUTexture;
|
|
12
|
+
export declare function attachSlice(device: GPUDevice, textue2dArray: GPUTexture, width: number, height: number, source: GPUCopyExternalImageSource, sliceIndex: number, options?: Options): void;
|
|
13
|
+
export declare function createTextureFromSource(device: GPUDevice, source: TextureSource, options?: Options): GPUTexture;
|
|
14
|
+
export declare function loadImageBitmap(url: string): Promise<ImageBitmap>;
|
|
15
|
+
export declare function createTextureFromImage(device: GPUDevice, url: string, options: Options): Promise<GPUTexture>;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/WebGPU/getTexture/index.ts"],"names":[],"mappings":"AAGA,UAAU,OAAO;IACf,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,KAAK,aAAa,GAChB,WAAW,GACX,gBAAgB,GAChB,iBAAiB,GACjB,gBAAgB,GAChB,eAAe,CAAC;AAOlB,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,0BAA0B,CAAA;IAClC,WAAW,EAAE,OAAO,CAAA;CACrB;AAgCD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,cAUlG;AAGD,wBAAgB,WAAW,CACzB,MAAM,EAAE,SAAS,EACjB,aAAa,EAAE,UAAU,EACzB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,0BAA0B,EAClC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,OAAY,QA0BtB;AAGD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAE,OAAY,cAWtG;AAiBD,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,wBAIhD;AAED,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,uBAG5F"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
declare const mat3: {
|
|
2
|
+
fromMat4(m: Float32Array, dst?: Float32Array<ArrayBuffer>): Float32Array<ArrayBuffer>;
|
|
3
|
+
projection(width: number, height: number, dst?: Float32Array<ArrayBuffer>): Float32Array<ArrayBuffer>;
|
|
4
|
+
identity(dst?: Float32Array<ArrayBuffer>): Float32Array<ArrayBuffer>;
|
|
5
|
+
multiply(a: Float32Array, b: Float32Array, dst?: Float32Array<ArrayBuffer>): Float32Array<ArrayBuffer>;
|
|
6
|
+
translation([tx, ty]: [number, number], dst?: Float32Array<ArrayBuffer>): Float32Array<ArrayBuffer>;
|
|
7
|
+
rotation(angleInRadians: number, dst?: Float32Array<ArrayBuffer>): Float32Array<ArrayBuffer>;
|
|
8
|
+
scaling([sx, sy]: [number, number], dst?: Float32Array<ArrayBuffer>): Float32Array<ArrayBuffer>;
|
|
9
|
+
translate(m: Float32Array, translation: [number, number], dst?: Float32Array<ArrayBuffer>): Float32Array<ArrayBuffer>;
|
|
10
|
+
rotate(m: Float32Array, angleInRadians: number, dst?: Float32Array<ArrayBuffer>): Float32Array<ArrayBuffer>;
|
|
11
|
+
scale(m: Float32Array, scale: [number, number], dst?: Float32Array<ArrayBuffer>): Float32Array<ArrayBuffer>;
|
|
12
|
+
};
|
|
13
|
+
export default mat3;
|
|
14
|
+
//# sourceMappingURL=m3.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"m3.d.ts","sourceRoot":"","sources":["../../src/WebGPU/m3.ts"],"names":[],"mappings":"AACA,QAAA,MAAM,IAAI;gBACI,YAAY;sBAON,MAAM,UAAU,MAAM;;gBAe5B,YAAY,KAAK,YAAY;0BAmCnB,CAAC,MAAM,EAAE,MAAM,CAAC;6BAOb,MAAM;sBAUb,CAAC,MAAM,EAAE,MAAM,CAAC;iBAOrB,YAAY,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC;cAI9C,YAAY,kBAAkB,MAAM;aAIrC,YAAY,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;CAG/C,CAAA;AAED,eAAe,IAAI,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getProgram.d.ts","sourceRoot":"","sources":["../../../../src/WebGPU/programs/blur/getProgram.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,MAAM,EAAE,SAAS,IAehD,SAAS,UAAU,EACnB,gBAAgB,iBAAiB,KAChC,UAAU,CA2Kd"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getProgram.d.ts","sourceRoot":"","sources":["../../../../src/WebGPU/programs/draw3dModel/getProgram.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,gBAAgB,IAwCtF,MAAM,oBAAoB,EAC1B,QAAQ,YAAY,EACpB,YAAY,YAAY,EACxB,WAAW,WAAW,UAmDzB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
interface Uniforms {
|
|
2
|
+
worldViewProjection: Float32Array;
|
|
3
|
+
normalMatrix: Float32Array;
|
|
4
|
+
lightColor: Float32Array;
|
|
5
|
+
lightDirection: Float32Array;
|
|
6
|
+
}
|
|
7
|
+
export default function getProgram(device: GPUDevice, presentationFormat: GPUTextureFormat): (pass: GPURenderPassEncoder, uniform: Uniforms, vertexData: Float32Array, indexData: Uint32Array) => void;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=getProgram.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getProgram.d.ts","sourceRoot":"","sources":["../../../../src/WebGPU/programs/draw3dModelLight/getProgram.ts"],"names":[],"mappings":"AAEA,UAAU,QAAQ;IAChB,mBAAmB,EAAE,YAAY,CAAC;IAClC,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,YAAY,CAAC;IACzB,cAAc,EAAE,YAAY,CAAA;CAC7B;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,gBAAgB,IAyCtF,MAAM,oBAAoB,EAC1B,SAAS,QAAQ,EACjB,YAAY,YAAY,EACxB,WAAW,WAAW,UAqEzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getProgram.d.ts","sourceRoot":"","sources":["../../../../src/WebGPU/programs/draw3dModelTexture/getProgram.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,gBAAgB,IAoCtF,MAAM,oBAAoB,EAC1B,QAAQ,YAAY,EACpB,SAAS,UAAU,EACnB,YAAY,YAAY,EACxB,WAAW,WAAW,UAwDzB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export default function getProgram(device: GPUDevice, presentationFormat: GPUTextureFormat): (pass: GPURenderPassEncoder, matrix: Float32Array, pointsData: Float32Array, tData: Float32Array, dirData: Float32Array, segmentIndexData: Uint32Array, zoom: number) => void;
|
|
2
|
+
//# sourceMappingURL=getProgram.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getProgram.d.ts","sourceRoot":"","sources":["../../../../src/WebGPU/programs/drawBezier/getProgram.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,gBAAgB,IAiDtF,MAAM,oBAAoB,EAC1B,QAAQ,YAAY,EACpB,YAAY,YAAY,EACxB,OAAO,YAAY,EACnB,SAAS,YAAY,EACrB,kBAAkB,WAAW,EAC7B,MAAM,MAAM,UAoFf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getProgram.d.ts","sourceRoot":"","sources":["../../../../src/WebGPU/programs/drawTexture/getProgram.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,OAAO,UAAU,UAAU,CAChC,MAAM,EAAE,SAAS,EACjB,kBAAkB,EAAE,gBAAgB,IAqElC,MAAM,oBAAoB,EAC1B,uBAAuB,YAAY,EACnC,YAAY,YAAY,CAAC,eAAe,CAAC,EACzC,SAAS,UAAU,UAkCtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getProgram.d.ts","sourceRoot":"","sources":["../../../../src/WebGPU/programs/drawTriangle/getProgram.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,gBAAgB,IA8CtF,MAAM,oBAAoB,EAC1B,QAAQ,YAAY,EACpB,GAAG,MAAM,UAkEZ"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import getDrawTriangle from "./drawTriangle/getProgram";
|
|
2
|
+
import getDrawBezier from "./drawBezier/getProgram";
|
|
3
|
+
import getDraw3dModelTexture from "./draw3dModelTexture/getProgram";
|
|
4
|
+
import getDraw3dModel from "./draw3dModel/getProgram";
|
|
5
|
+
import getDraw3dModelLight from "./draw3dModelLight/getProgram";
|
|
6
|
+
import getBlur from "./blur/getProgram";
|
|
7
|
+
import getDrawtexture from "./drawTexture/getProgram";
|
|
8
|
+
export declare let drawTriangle: ReturnType<typeof getDrawTriangle>;
|
|
9
|
+
export declare let drawBezier: ReturnType<typeof getDrawBezier>;
|
|
10
|
+
export declare let draw3dModel: ReturnType<typeof getDraw3dModel>;
|
|
11
|
+
export declare let draw3dModelTexture: ReturnType<typeof getDraw3dModelTexture>;
|
|
12
|
+
export declare let draw3dModelLight: ReturnType<typeof getDraw3dModelLight>;
|
|
13
|
+
export declare let drawBlur: ReturnType<typeof getBlur>;
|
|
14
|
+
export declare let drawTexture: ReturnType<typeof getDrawtexture>;
|
|
15
|
+
export default function initPrograms(device: GPUDevice, presentationFormat: GPUTextureFormat): void;
|
|
16
|
+
//# sourceMappingURL=initPrograms.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initPrograms.d.ts","sourceRoot":"","sources":["../../../src/WebGPU/programs/initPrograms.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,2BAA2B,CAAA;AACvD,OAAO,aAAa,MAAM,yBAAyB,CAAA;AACnD,OAAO,qBAAqB,MAAM,iCAAiC,CAAA;AACnE,OAAO,cAAc,MAAM,0BAA0B,CAAA;AACrD,OAAO,mBAAmB,MAAM,+BAA+B,CAAA;AAC/D,OAAO,OAAO,MAAM,mBAAmB,CAAA;AACvC,OAAO,cAAc,MAAM,0BAA0B,CAAA;AAErD,eAAO,IAAI,YAAY,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,CAAA;AAC3D,eAAO,IAAI,UAAU,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAA;AACvD,eAAO,IAAI,WAAW,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;AACzD,eAAO,IAAI,kBAAkB,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAA;AACvE,eAAO,IAAI,gBAAgB,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAA;AACnE,eAAO,IAAI,QAAQ,EAAE,UAAU,CAAC,OAAO,OAAO,CAAC,CAAA;AAC/C,eAAO,IAAI,WAAW,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;AAEzD,MAAM,CAAC,OAAO,UAAU,YAAY,CAClC,MAAM,EAAE,SAAS,EACjB,kBAAkB,EAAE,gBAAgB,QASrC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=index.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../src/__test__/index.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Preview/index.ts"],"names":[],"mappings":""}
|
package/dist/consts.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
declare global {
|
|
2
|
+
interface Window {
|
|
3
|
+
DocumentTouch: any;
|
|
4
|
+
msMaxTouchPoints: number;
|
|
5
|
+
}
|
|
6
|
+
interface Navigator {
|
|
7
|
+
msMaxTouchPoints: number;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export declare const isMobile: boolean;
|
|
11
|
+
export declare const MINI_SIZE: number;
|
|
12
|
+
export declare const MS_PER_PIXEL = 5;
|
|
13
|
+
export declare const MS_PER_MINI: number;
|
|
14
|
+
export declare const isTouchCapable: any;
|
|
15
|
+
export declare const dpr: number;
|
|
16
|
+
//# sourceMappingURL=consts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,aAAa,EAAE,GAAG,CAAC;QACnB,gBAAgB,EAAE,MAAM,CAAC;KAC1B;IAED,UAAU,SAAS;QACjB,gBAAgB,EAAE,MAAM,CAAC;KAC1B;CACF;AAED,eAAO,MAAM,QAAQ,SAGlB,CAAA;AAEH,eAAO,MAAM,SAAS,QAAsB,CAAA;AAC5C,eAAO,MAAM,YAAY,IAAI,CAAA;AAC7B,eAAO,MAAM,WAAW,QAA2B,CAAA;AAEnD,eAAO,MAAM,cAAc,KAIY,CAAA;AAEvC,eAAO,MAAM,GAAG,QAA0B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getCanvasMatrix.d.ts","sourceRoot":"","sources":["../src/getCanvasMatrix.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,MAAM,EAAE,iBAAiB,6BAWhE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getCanvasRenderDescriptor.d.ts","sourceRoot":"","sources":["../src/getCanvasRenderDescriptor.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,2BAwB7F"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getDepthTexture.d.ts","sourceRoot":"","sources":["../src/getDepthTexture.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,cAcvF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getRenderDescriptor.d.ts","sourceRoot":"","sources":["../src/getRenderDescriptor.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,mBAAmB,CACzC,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,SAAS,GAChB,uBAAuB,CAkCzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.YourLibraryName=t():e.YourLibraryName=t()}(this,(()=>(()=>{"use strict";var e,t,r,n,o,a={},i={};function u(e){var t=i[e];if(void 0!==t)return t.exports;var r=i[e]={id:e,exports:{}};return a[e](r,r.exports,u),r.exports}u.m=a,e="function"==typeof Symbol?Symbol("webpack queues"):"__webpack_queues__",t="function"==typeof Symbol?Symbol("webpack exports"):"__webpack_exports__",r="function"==typeof Symbol?Symbol("webpack error"):"__webpack_error__",n=e=>{e&&e.d<1&&(e.d=1,e.forEach((e=>e.r--)),e.forEach((e=>e.r--?e.r++:e())))},u.a=(o,a,i)=>{var u;i&&((u=[]).d=-1);var s,f,l,c=new Set,d=o.exports,p=new Promise(((e,t)=>{l=t,f=e}));p[t]=d,p[e]=e=>(u&&e(u),c.forEach(e),p.catch((e=>{}))),o.exports=p,a((o=>{var a;s=(o=>o.map((o=>{if(null!==o&&"object"==typeof o){if(o[e])return o;if(o.then){var a=[];a.d=0,o.then((e=>{i[t]=e,n(a)}),(e=>{i[r]=e,n(a)}));var i={};return i[e]=e=>e(a),i}}var u={};return u[e]=e=>{},u[t]=o,u})))(o);var i=()=>s.map((e=>{if(e[r])throw e[r];return e[t]})),f=new Promise((t=>{(a=()=>t(i)).r=0;var r=e=>e!==u&&!c.has(e)&&(c.add(e),e&&!e.d&&(a.r++,e.push(a)));s.map((t=>t[e](r)))}));return a.r?f:i()}),(e=>(e?l(p[r]=e):f(d),n(u)))),u&&u.d<0&&(u.d=0)},u.d=(e,t)=>{for(var r in t)u.o(t,r)&&!u.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},u.f={},u.e=e=>Promise.all(Object.keys(u.f).reduce(((t,r)=>(u.f[r](e,t),t)),[])),u.u=e=>e+".53ef6be51135b1f869af.js",u.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),u.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},u.v=(e,t,r,n)=>new Promise((function(e,t){try{var{readFile:n}=require("fs"),{join:o}=require("path");n(o(__dirname,r+".module.wasm"),(function(r,n){if(r)return t(r);e({arrayBuffer:()=>n})}))}catch(e){t(e)}})).then((e=>e.arrayBuffer())).then((e=>WebAssembly.instantiate(e,n))).then((t=>Object.assign(e,t.instance.exports))),o={57:1},u.f.require=(e,t)=>{o[e]||(e=>{var t=e.modules,r=e.ids,n=e.runtime;for(var a in t)u.o(t,a)&&(u.m[a]=t[a]);n&&n(u);for(var i=0;i<r.length;i++)o[r[i]]=1})(require("./"+u.u(e)))};var s={};function f(e,t,r,n){e.width=Math.max(1,Math.min(t,n.limits.maxTextureDimension2D)),e.height=Math.max(1,Math.min(r,n.limits.maxTextureDimension2D))}u.r(s),u.d(s,{default:()=>C});var l=function(e,t,r,n){return new(r||(r=Promise))((function(o,a){function i(e){try{s(n.next(e))}catch(e){a(e)}}function u(e){try{s(n.throw(e))}catch(e){a(e)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,u)}s((n=n.apply(e,t||[])).next())}))};const c={fromMat4:(e,t=new Float32Array(12))=>(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[8]=e[8],t[9]=e[9],t[10]=e[10],t),projection:(e,t,r=new Float32Array(12))=>(r[0]=2/e,r[1]=0,r[2]=0,r[4]=0,r[5]=-2/t,r[6]=0,r[8]=-1,r[9]=1,r[10]=1,r),identity:(e=new Float32Array(12))=>(e[0]=1,e[1]=0,e[2]=0,e[4]=0,e[5]=1,e[6]=0,e[8]=0,e[9]=0,e[10]=1,e),multiply(e,t,r=new Float32Array(12)){r=r||new Float32Array(12);const n=e[0],o=e[1],a=e[2],i=e[4],u=e[5],s=e[6],f=e[8],l=e[9],c=e[10],d=t[0],p=t[1],m=t[2],g=t[4],h=t[5],v=t[6],b=t[8],x=t[9],y=t[10];return r[0]=d*n+p*i+m*f,r[1]=d*o+p*u+m*l,r[2]=d*a+p*s+m*c,r[4]=g*n+h*i+v*f,r[5]=g*o+h*u+v*l,r[6]=g*a+h*s+v*c,r[8]=b*n+x*i+y*f,r[9]=b*o+x*u+y*l,r[10]=b*a+x*s+y*c,r},translation:([e,t],r=new Float32Array(12))=>(r[0]=1,r[1]=0,r[2]=0,r[4]=0,r[5]=1,r[6]=0,r[8]=e,r[9]=t,r[10]=1,r),rotation(e,t=new Float32Array(12)){const r=Math.cos(e),n=Math.sin(e);return t[0]=r,t[1]=n,t[2]=0,t[4]=-n,t[5]=r,t[6]=0,t[8]=0,t[9]=0,t[10]=1,t},scaling:([e,t],r=new Float32Array(12))=>(r[0]=e,r[1]=0,r[2]=0,r[4]=0,r[5]=t,r[6]=0,r[8]=0,r[9]=0,r[10]=1,r),translate:(e,t,r=new Float32Array(12))=>c.multiply(e,c.translation(t),r),rotate:(e,t,r=new Float32Array(12))=>c.multiply(e,c.rotation(t),r),scale:(e,t,r=new Float32Array(12))=>c.multiply(e,c.scaling(t),r)},d=c,p="struct Uniforms {\n color: vec4f,\n matrix: mat3x3f,\n};\n\nstruct Vertex {\n @location(0) position: vec2f,\n};\n\nstruct VSOutput {\n @builtin(position) position: vec4f,\n};\n\n@group(0) @binding(0) var<uniform> uni: Uniforms;\n\n@vertex fn vs(vert: Vertex) -> VSOutput {\n var vsOut: VSOutput;\n\n let clipSpace = (uni.matrix * vec3f(vert.position, 1)).xy;\n vsOut.position = vec4f(clipSpace, 0.0, 1.0);\n return vsOut;\n}\n\n@fragment fn fs(vsOut: VSOutput) -> @location(0) vec4f {\n return uni.color;\n}\n",m="struct Uniforms {\n matrix: mat4x4f,\n zoom: f32,\n};\n\nstruct Vertex {\n @location(0) t: f32,\n @location(1) dir: f32,\n @location(2) segmentIndex: u32,\n};\n\n@group(0) @binding(0) var<uniform> u: Uniforms;\n\n@group(0) @binding(1) var<storage> points: array<vec2f>;\n\nstruct VSOutput {\n @builtin(position) position: vec4f,\n @location(0) color: vec4f,\n};\n\n@vertex fn vs(vert: Vertex) -> VSOutput {\n var vsOut: VSOutput;\n \n let p1 = points[vert.segmentIndex * 4 + 0];\n let p2 = points[vert.segmentIndex * 4 + 1];\n let p3 = points[vert.segmentIndex * 4 + 2];\n let p4 = points[vert.segmentIndex * 4 + 3];\n\n let t2 = vert.t * vert.t;\n let one_minus_t = 1.0 - vert.t;\n let one_minus_t2 = one_minus_t * one_minus_t;\n let pos = p1 * one_minus_t2 * one_minus_t + p2 * 3.0 * vert.t * one_minus_t2 + p3 * 3.0 * t2 * one_minus_t + p4 * t2 * vert.t;\n\n let angle = one_minus_t2 * (p2 - p1) + 2.0 * vert.t * one_minus_t * (p3 - p2) + t2 * (p4 - p3);\n let angleNorm = normalize(angle) * 5 / u.zoom;\n let transPos = vec2(pos.x - angleNorm.y * vert.dir, pos.y + angleNorm.x * vert.dir);\n let clipSpace = (u.matrix * vec4f(transPos, 1, 1));\n vsOut.position = clipSpace;\n vsOut.color = vec4f(f32(vert.segmentIndex) % 3, (f32(vert.segmentIndex) + 1) % 3, (f32(vert.segmentIndex) + 2) % 3, 1);\n\n return vsOut;\n}\n\n@fragment fn fs(vsOut: VSOutput) -> @location(0) vec4f {\n return vsOut.color;\n}\n",g="struct Uniforms {\n matrix: mat4x4f,\n};\n\nstruct Vertex {\n @location(0) position: vec4f,\n @location(1) texcoord: vec2f,\n};\n\nstruct VSOutput {\n @builtin(position) position: vec4f,\n @location(0) texcoord: vec2f,\n};\n\n@group(0) @binding(0) var<uniform> uni: Uniforms;\n\n@vertex fn vs(vert: Vertex) -> VSOutput {\n var vsOut: VSOutput;\n vsOut.position = uni.matrix * vert.position;\n vsOut.texcoord = vert.texcoord;\n return vsOut;\n}\n\n@group(0) @binding(1) var ourSampler: sampler;\n@group(0) @binding(2) var ourTexture: texture_2d<f32>;\n\n@fragment fn fs(vsOut: VSOutput) -> @location(0) vec4f {\n return textureSample(ourTexture, ourSampler, vsOut.texcoord);\n}\n",h="struct Uniforms {\n matrix: mat4x4f,\n};\n\nstruct Vertex {\n @location(0) position: vec4f,\n};\n\nstruct VSOutput {\n @builtin(position) position: vec4f,\n @location(0) color: vec4f,\n};\n\n@group(0) @binding(0) var<uniform> uni: Uniforms;\n\n@vertex fn vs(\n vert: Vertex,\n @builtin(vertex_index) vertexIndex : u32,\n // @builtin(instance_index) instanceIndex: u32\n ) -> VSOutput {\n var vsOut: VSOutput;\n vsOut.position = uni.matrix * vert.position;\n vsOut.color = vec4f(f32(vertexIndex) % 3, (f32(vertexIndex) + 1) % 3, (f32(vertexIndex) + 2) % 3, 1);\n return vsOut;\n}\n\n\n@fragment fn fs(vsOut: VSOutput) -> @location(0) vec4f {\n return vsOut.color;\n}\n",v="struct Uniforms {\n normalMatrix: mat3x3f,\n worldViewProjection: mat4x4f,\n lightColor: vec4f,\n lightDirection: vec3f,\n};\n\nstruct Vertex {\n @location(0) position: vec4f,\n @location(1) normal: vec3f,\n};\n\nstruct VSOutput {\n @builtin(position) position: vec4f,\n @location(0) color: vec4f,\n @location(1) normal: vec3f,\n};\n\n@group(0) @binding(0) var<uniform> uni: Uniforms;\n\n@vertex fn vs(\n vert: Vertex,\n @builtin(vertex_index) vertexIndex : u32,\n // @builtin(instance_index) instanceIndex: u32\n ) -> VSOutput {\n var vsOut: VSOutput;\n vsOut.position = uni.worldViewProjection * vert.position;\n vsOut.normal = uni.normalMatrix * vert.normal;\n vsOut.color = vec4f(f32(vertexIndex) % 3, (f32(vertexIndex) + 1) % 3, (f32(vertexIndex) + 2) % 3, 1);\n\n return vsOut;\n}\n\n\n@fragment fn fs(vsOut: VSOutput) -> @location(0) vec4f {\n // Because vsOut.normal is an inter-stage variable \n // it's interpolated so it will not be a unit vector.\n // Normalizing it will make it a unit vector again\n let normal = normalize(vsOut.normal);\n \n // Compute the light by taking the dot product\n // of the normal to the light's reverse direction\n let light = dot(normal, -uni.lightDirection);\n \n // Lets multiply just the color portion (not the alpha)\n // by the light\n let color = vec3f(0.23) + uni.lightColor.rgb * light;\n // let color = vsOut.color.rgb * 0.5 + uni.lightColor.rgb * light;\n return vec4f(color, vsOut.color.a);\n}\n",b="struct Params {\n filterDim : i32,\n blockDim : u32,\n}\n\n@group(0) @binding(0) var samp : sampler;\n@group(0) @binding(1) var<uniform> params : Params;\n@group(1) @binding(1) var inputTex : texture_2d<f32>;\n@group(1) @binding(2) var outputTex : texture_storage_2d<rgba8unorm, write>;\n\nstruct Flip {\n value : u32,\n}\n@group(1) @binding(3) var<uniform> flip : Flip;\n\n// This shader blurs the input texture in one direction, depending on whether\n// |flip.value| is 0 or 1.\n// It does so by running (128 / 4) threads per workgroup to load 128\n// texels into 4 rows of shared memory. Each thread loads a\n// 4 x 4 block of texels to take advantage of the texture sampling\n// hardware.\n// Then, each thread computes the blur result by averaging the adjacent texel values\n// in shared memory.\n// Because we're operating on a subset of the texture, we cannot compute all of the\n// results since not all of the neighbors are available in shared memory.\n// Specifically, with 128 x 128 tiles, we can only compute and write out\n// square blocks of size 128 - (filterSize - 1). We compute the number of blocks\n// needed in Javascript and dispatch that amount.\n\n// 128/4 = 32 -> number of threads per working group\n// does it in 4x4 block of texels(takes advantage of texture sampling hardware)\n// with this beign said, we don't have all the neighbours, only this block\n// That's why we can only compute & write out blocks of size 128 - (filterSize - 1)\nvar<workgroup> tile : array<array<vec3<f32>, 128>, 4>;\n\n@compute @workgroup_size(32, 1, 1)\nfn main(\n @builtin(workgroup_id) WorkGroupID : vec3<u32>,\n @builtin(local_invocation_id) LocalInvocationID : vec3<u32>\n) {\n let filterOffset = (params.filterDim - 1) / 2;\n let dims = vec2<i32>(textureDimensions(inputTex, 0));\n let baseIndex = vec2<i32>(WorkGroupID.xy * vec2(params.blockDim, 4) + // it's just the index of the first texel in a group\n LocalInvocationID.xy * vec2(4, 1)) // <0, 128>\n - vec2(filterOffset, 0);\n // baseIndex = xy of first texel of group\n for (var r = 0; r < 4; r++) {\n for (var c = 0; c < 4; c++) {\n var loadIndex = baseIndex + vec2(c, r);\n if (flip.value != 0) {\n loadIndex = loadIndex.yx;\n }\n\n tile[r][4 * LocalInvocationID.x + u32(c)] = textureSampleLevel(\n inputTex,\n samp,\n (vec2<f32>(loadIndex) + vec2<f32>(0.25, 0.25)) / vec2<f32>(dims),\n 0.0\n ).rgb;\n }\n }\n\n workgroupBarrier();\n // helps coordinate access to read-write memory\n // so all threads(32) will wait to hit this barrer, and then start form here together\n\n for (var r = 0; r < 4; r++) {\n for (var c = 0; c < 4; c++) {\n var writeIndex = baseIndex + vec2(c, r);\n if (flip.value != 0) {\n writeIndex = writeIndex.yx;\n }\n\n let center = i32(4 * LocalInvocationID.x) + c;\n if (center >= filterOffset &&\n center < 128 - filterOffset &&\n all(writeIndex < dims)) {\n var acc = vec3(0.0, 0.0, 0.0);\n for (var f = 0; f < params.filterDim; f++) {\n var i = center + f - filterOffset;\n acc = acc + (1.0 / f32(params.filterDim)) * tile[r][i];\n }\n textureStore(outputTex, writeIndex, vec4(acc, 1.0));\n }\n }\n }\n}\n",x=128,y=[4,4],w="struct Vertex {\n @location(0) position: vec4f,\n @location(1) uv: vec2f,\n};\n\nstruct Uniforms {\n worldViewProjection: mat4x4f,\n};\n\nstruct VertexOutput {\n @builtin(position) position: vec4f,\n @location(0) texCoord: vec2f,\n};\n\n@group(0) @binding(0) var<uniform> u: Uniforms;\n@group(0) @binding(1) var ourSampler: sampler;\n@group(0) @binding(2) var ourTexture: texture_2d<f32>;\n\n@vertex fn vs(vert: Vertex) -> VertexOutput {\n var out: VertexOutput;\n // maybe we should pass offsets from the position instead of... position?\n out.position = u.worldViewProjection * vert.position;\n out.texCoord = vert.uv;\n \n return out;\n}\n\n@fragment fn fs(in: VertexOutput) -> @location(0) vec4f {\n let texel = textureSample(ourTexture, ourSampler, in.texCoord);\n return texel;\n}\n",B=6;let U,P,O,S,G,_,I,T;const V={cross(e,t,r=new Float32Array(3)){const n=e[1]*t[2]-e[2]*t[1],o=e[2]*t[0]-e[0]*t[2],a=e[0]*t[1]-e[1]*t[0];return r[0]=n,r[1]=o,r[2]=a,r},subtract:(e,t,r=new Float32Array(3))=>(r[0]=e[0]-t[0],r[1]=e[1]-t[1],r[2]=e[2]-t[2],r),normalize(e,t=new Float32Array(3)){const r=Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]);return r>1e-5?(t[0]=e[0]/r,t[1]=e[1]/r,t[2]=e[2]/r):(t[0]=0,t[1]=0,t[2]=0),t}},A={projection:(e,t,r,n)=>A.ortho(0,e,t,0,r,-r,n),perspective(e,t,r,n,o=new Float32Array(16)){const a=Math.tan(.5*Math.PI-.5*e),i=1/(r-n);return o[0]=a/t,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=a,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=n*i,o[11]=-1,o[12]=0,o[13]=0,o[14]=r*n*i,o[15]=0,o},ortho:(e,t,r,n,o,a,i=new Float32Array(16))=>(i[0]=2/(t-e),i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=2/(n-r),i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=1/(o-a),i[11]=0,i[12]=(t+e)/(e-t),i[13]=(n+r)/(r-n),i[14]=o/(o-a),i[15]=1,i),identity:(e=new Float32Array(16))=>(e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e),multiply(e,t,r=new Float32Array(16)){const n=t[0],o=t[1],a=t[2],i=t[3],u=t[4],s=t[5],f=t[6],l=t[7],c=t[8],d=t[9],p=t[10],m=t[11],g=t[12],h=t[13],v=t[14],b=t[15],x=e[0],y=e[1],w=e[2],B=e[3],U=e[4],P=e[5],O=e[6],S=e[7],G=e[8],_=e[9],I=e[10],T=e[11],V=e[12],A=e[13],M=e[14],F=e[15];return r[0]=n*x+o*U+a*G+i*V,r[1]=n*y+o*P+a*_+i*A,r[2]=n*w+o*O+a*I+i*M,r[3]=n*B+o*S+a*T+i*F,r[4]=u*x+s*U+f*G+l*V,r[5]=u*y+s*P+f*_+l*A,r[6]=u*w+s*O+f*I+l*M,r[7]=u*B+s*S+f*T+l*F,r[8]=c*x+d*U+p*G+m*V,r[9]=c*y+d*P+p*_+m*A,r[10]=c*w+d*O+p*I+m*M,r[11]=c*B+d*S+p*T+m*F,r[12]=g*x+h*U+v*G+b*V,r[13]=g*y+h*P+v*_+b*A,r[14]=g*w+h*O+v*I+b*M,r[15]=g*B+h*S+v*T+b*F,r},cameraAim(e,t,r,n=new Float32Array(16)){const o=V.normalize(V.subtract(e,t)),a=V.normalize(V.cross(r,o)),i=V.normalize(V.cross(o,a));return n[0]=a[0],n[1]=a[1],n[2]=a[2],n[3]=0,n[4]=i[0],n[5]=i[1],n[6]=i[2],n[7]=0,n[8]=o[0],n[9]=o[1],n[10]=o[2],n[11]=0,n[12]=e[0],n[13]=e[1],n[14]=e[2],n[15]=1,n},inverse(e,t=new Float32Array(16)){const r=e[0],n=e[1],o=e[2],a=e[3],i=e[4],u=e[5],s=e[6],f=e[7],l=e[8],c=e[9],d=e[10],p=e[11],m=e[12],g=e[13],h=e[14],v=e[15],b=d*v,x=h*p,y=s*v,w=h*f,B=s*p,U=d*f,P=o*v,O=h*a,S=o*p,G=d*a,_=o*f,I=s*a,T=l*g,V=m*c,A=i*g,M=m*u,F=i*c,z=l*u,D=r*g,C=m*n,E=r*c,L=l*n,k=r*u,R=i*n,q=b*u+w*c+B*g-(x*u+y*c+U*g),N=x*n+P*c+G*g-(b*n+O*c+S*g),Y=y*n+O*u+_*g-(w*n+P*u+I*g),j=U*n+S*u+I*c-(B*n+G*u+_*c),W=1/(r*q+i*N+l*Y+m*j);return t[0]=W*q,t[1]=W*N,t[2]=W*Y,t[3]=W*j,t[4]=W*(x*i+y*l+U*m-(b*i+w*l+B*m)),t[5]=W*(b*r+O*l+S*m-(x*r+P*l+G*m)),t[6]=W*(w*r+P*i+I*m-(y*r+O*i+_*m)),t[7]=W*(B*r+G*i+_*l-(U*r+S*i+I*l)),t[8]=W*(T*f+M*p+F*v-(V*f+A*p+z*v)),t[9]=W*(V*a+D*p+L*v-(T*a+C*p+E*v)),t[10]=W*(A*a+C*f+k*v-(M*a+D*f+R*v)),t[11]=W*(z*a+E*f+R*p-(F*a+L*f+k*p)),t[12]=W*(A*d+z*h+V*s-(F*h+T*s+M*d)),t[13]=W*(E*h+T*o+C*d-(D*d+L*h+V*o)),t[14]=W*(D*s+R*h+M*o-(k*h+A*o+C*s)),t[15]=W*(k*d+F*o+L*s-(E*s+R*d+z*o)),t},transpose:(e,t=new Float32Array(16))=>(t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15],t),aim(e,t,r,n=new Float32Array(16)){const o=V.normalize(V.subtract(t,e)),a=V.normalize(V.cross(r,o)),i=V.normalize(V.cross(o,a));return n[0]=a[0],n[1]=a[1],n[2]=a[2],n[3]=0,n[4]=i[0],n[5]=i[1],n[6]=i[2],n[7]=0,n[8]=o[0],n[9]=o[1],n[10]=o[2],n[11]=0,n[12]=e[0],n[13]=e[1],n[14]=e[2],n[15]=1,n},lookAt:(e,t,r,n)=>A.inverse(A.cameraAim(e,t,r,n),n),translation:([e,t,r],n=new Float32Array(16))=>(n[0]=1,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=1,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=1,n[11]=0,n[12]=e,n[13]=t,n[14]=r,n[15]=1,n),rotationX(e,t=new Float32Array(16)){const r=Math.cos(e),n=Math.sin(e);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=r,t[6]=n,t[7]=0,t[8]=0,t[9]=-n,t[10]=r,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},rotationY(e,t=new Float32Array(16)){const r=Math.cos(e),n=Math.sin(e);return t[0]=r,t[1]=0,t[2]=-n,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=n,t[9]=0,t[10]=r,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},rotationZ(e,t=new Float32Array(16)){const r=Math.cos(e),n=Math.sin(e);return t[0]=r,t[1]=n,t[2]=0,t[3]=0,t[4]=-n,t[5]=r,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},scaling:([e,t,r],n=new Float32Array(16))=>(n[0]=e,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=t,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=r,n[11]=0,n[12]=0,n[13]=0,n[14]=0,n[15]=1,n),translate:(e,t,r)=>A.multiply(e,A.translation(t),r),rotateX:(e,t,r)=>A.multiply(e,A.rotationX(t),r),rotateY:(e,t,r)=>A.multiply(e,A.rotationY(t),r),rotateZ:(e,t,r)=>A.multiply(e,A.rotationZ(t),r),scale:(e,t,r)=>A.multiply(e,A.scaling(t),r)},M=A;new Float32Array;const F=(...e)=>{const t=Math.max(...e);return 1+Math.log2(t)|0};function z(e,t,r){return Math.min(r,Math.max(t,e))}var D=function(e,t,r,n){return new(r||(r=Promise))((function(o,a){function i(e){try{s(n.next(e))}catch(e){a(e)}}function u(e){try{s(n.throw(e))}catch(e){a(e)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,u)}s((n=n.apply(e,t||[])).next())}))};function C(e){return D(this,void 0,void 0,(function*(){const t=yield function(){return l(this,void 0,void 0,(function*(){if(!navigator.gpu)throw Error("this browser does not support WebGPU");const e=yield navigator.gpu.requestAdapter();if(!e)throw Error("this browser supports webgpu but it appears disabled");const t=yield e.requestDevice();return t.lost.then((e=>{console.error(`WebGPU device was lost: ${e.message}`),e.reason})),t}))}(),{State:r}=yield u.e(701).then(u.bind(u,701)),n=r.new(300,300),o=e.getContext("webgpu");if(!o)throw Error("WebGPU from canvas needs to be always provided");const a=navigator.gpu.getPreferredCanvasFormat();o.configure({device:t,format:a}),function(e,t){new ResizeObserver((e=>{for(const r of e)f(r.target,0|r.contentBoxSize[0].inlineSize,0|r.contentBoxSize[0].blockSize,t)})).observe(e),f(e,e.clientWidth,e.clientHeight,t)}(e,t),function(e,t){U=function(e,t){const r=e.createShaderModule({label:"triangle shader module",code:p}),n=e.createRenderPipeline({label:"triangle pipline",layout:"auto",vertex:{module:r,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:r,entryPoint:"fs",targets:[{format:t}]},depthStencil:{depthWriteEnabled:!1,depthCompare:"always",format:"depth24plus"}});return function(t,r,o){const a=e.createBuffer({label:"uniforms",size:64,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),i=new Float32Array(16),u=i.subarray(0,4),s=i.subarray(4,16);u.set([Math.random(),Math.random(),Math.random(),1]);const f=new Float32Array([500,100,800,400,200,400]),l=new Uint32Array([0,1,2]),c=e.createBuffer({label:"vertex buffer vertices",size:f.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(c,0,f);const p=e.createBuffer({label:"index buffer",size:l.byteLength,usage:GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(p,0,l);const m=e.createBindGroup({label:"bind group for object",layout:n.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:a}}]});t.setPipeline(n),t.setVertexBuffer(0,c),t.setIndexBuffer(p,"uint32"),s.set(r),d.translate(s,[o,0],s),e.queue.writeBuffer(a,0,i),t.setBindGroup(0,m),t.drawIndexed(3)}}(e,t),P=function(e,t){const r=e.createShaderModule({label:"bezier shader module",code:m}),n=e.createRenderPipeline({label:"bezier pipline",layout:"auto",primitive:{topology:"triangle-strip"},vertex:{module:r,entryPoint:"vs",buffers:[{arrayStride:4,attributes:[{shaderLocation:0,offset:0,format:"float32"}]},{arrayStride:4,attributes:[{shaderLocation:1,offset:0,format:"float32"}]},{arrayStride:4,attributes:[{shaderLocation:2,offset:0,format:"uint32"}]}]},fragment:{module:r,entryPoint:"fs",targets:[{format:t}]},depthStencil:{depthWriteEnabled:!1,depthCompare:"always",format:"depth24plus"}});return function(t,r,o,a,i,u,s){const f=4*o.length,l=e.createBuffer({label:"storage points",size:f,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),c=e.createBuffer({label:"uniforms",size:80,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),d=new Float32Array(20),p=d.subarray(0,16),m=d.subarray(16,17),g=e.createBindGroup({label:"bezier bind group for object",layout:n.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:c}},{binding:1,resource:{buffer:l}}]}),h=e.createBuffer({label:"bezier vertex buffer vertices",size:a.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(h,0,a);const v=e.createBuffer({label:"bezier vertex buffer vertices",size:i.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(v,0,i);const b=e.createBuffer({label:"bezier vertex buffer vertices",size:u.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(b,0,u),t.setPipeline(n),t.setVertexBuffer(0,h),t.setVertexBuffer(1,v),t.setVertexBuffer(2,b),p.set(r),m.set(new Float32Array([s])),e.queue.writeBuffer(c,0,d),e.queue.writeBuffer(l,0,o),t.setBindGroup(0,g),t.draw(a.length)}}(e,t),S=function(e,t){const r=e.createShaderModule({label:"3d model texture shader module",code:g}),n=e.createRenderPipeline({label:"3d model texture pipline",layout:"auto",vertex:{module:r,entryPoint:"vs",buffers:[{arrayStride:20,attributes:[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x2"}]}]},fragment:{module:r,entryPoint:"fs",targets:[{format:t}]},depthStencil:{depthWriteEnabled:!1,depthCompare:"always",format:"depth24plus"}});return function(t,r,o,a,i){const u=e.createSampler({magFilter:"linear",minFilter:"linear"}),s=e.createBuffer({label:"uniforms",size:64,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),f=new Float32Array(16),l=f.subarray(0,16),c=i.length,d=e.createBuffer({label:"3d model texture vertex buffer vertices",size:a.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(d,0,a);const p=e.createBuffer({label:"3d model texture index buffer",size:i.byteLength,usage:GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(p,0,i);const m=e.createBindGroup({label:"3d model texture bind group for object",layout:n.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:s}},{binding:1,resource:u},{binding:2,resource:o.createView()}]});t.setPipeline(n),t.setVertexBuffer(0,d),t.setIndexBuffer(p,"uint32"),l.set(r),e.queue.writeBuffer(s,0,f),t.setBindGroup(0,m),t.drawIndexed(c)}}(e,t),O=function(e,t){const r=e.createShaderModule({label:"3d model shader module",code:h}),n=e.createRenderPipeline({label:"3d model pipline",layout:"auto",vertex:{module:r,entryPoint:"vs",buffers:[{arrayStride:12,attributes:[{shaderLocation:0,offset:0,format:"float32x3"}]}]},fragment:{module:r,entryPoint:"fs",targets:[{format:t}]},primitive:{cullMode:"back"},depthStencil:{depthWriteEnabled:!0,depthCompare:"less",format:"depth24plus"}});return function(t,r,o,a){const i=e.createBuffer({label:"uniforms",size:64,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),u=new Float32Array(16),s=u.subarray(0,16),f=a.length,l=e.createBuffer({label:"vertex buffer vertices",size:o.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(l,0,o);const c=e.createBuffer({label:"index buffer",size:a.byteLength,usage:GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(c,0,a);const d=e.createBindGroup({label:"bind group for object",layout:n.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:i}}]});t.setPipeline(n),t.setVertexBuffer(0,l),t.setIndexBuffer(c,"uint32"),s.set(r),e.queue.writeBuffer(i,0,u),t.setBindGroup(0,d),t.drawIndexed(f)}}(e,t),G=function(e,t){const r=e.createShaderModule({label:"3d model light shader module",code:v}),n=e.createRenderPipeline({label:"3d model light pipline",layout:"auto",vertex:{module:r,entryPoint:"vs",buffers:[{arrayStride:24,attributes:[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x3"}]}]},fragment:{module:r,entryPoint:"fs",targets:[{format:t}]},primitive:{cullMode:"back"},depthStencil:{depthWriteEnabled:!0,depthCompare:"less",format:"depth24plus"}});return function(t,r,o,a){const{worldViewProjection:i,normalMatrix:u,lightColor:s,lightDirection:f}=r,l=e.createBuffer({label:"uniforms",size:144,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),c=new Float32Array(36),d=c.subarray(0,12),p=c.subarray(12,28),m=c.subarray(28,32),g=c.subarray(32,35),h=e.createBindGroup({label:"bind group for object",layout:n.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:l}}]}),v=a.length,b=e.createBuffer({label:"vertex buffer vertices",size:o.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(b,0,o);const x=e.createBuffer({label:"index buffer",size:a.byteLength,usage:GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(x,0,a),t.setPipeline(n),t.setVertexBuffer(0,b),t.setIndexBuffer(x,"uint32"),d.set(u),p.set(i),m.set(s),g.set(f),e.queue.writeBuffer(l,0,c),t.setBindGroup(0,h),t.drawIndexed(v)}}(e,t),_=function(e){const t=e.createShaderModule({label:"blur shader module",code:b}),r=e.createComputePipeline({layout:"auto",compute:{module:t,entryPoint:"main"}});return function(t,n){const o=[0,1].map((()=>e.createTexture({size:{width:t.width,height:t.height},format:"rgba8unorm",usage:GPUTextureUsage.COPY_DST|GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING}))),a=(()=>{const t=e.createBuffer({size:4,mappedAtCreation:!0,usage:GPUBufferUsage.UNIFORM});return new Uint32Array(t.getMappedRange())[0]=0,t.unmap(),t})(),i=(()=>{const t=e.createBuffer({size:4,mappedAtCreation:!0,usage:GPUBufferUsage.UNIFORM});return new Uint32Array(t.getMappedRange())[0]=1,t.unmap(),t})(),u=e.createBuffer({size:8,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.UNIFORM}),s=e.createSampler({magFilter:"linear",minFilter:"linear"}),f=e.createBindGroup({layout:r.getBindGroupLayout(0),entries:[{binding:0,resource:s},{binding:1,resource:{buffer:u}}]}),l=e.createBindGroup({layout:r.getBindGroupLayout(1),entries:[{binding:1,resource:t.createView()},{binding:2,resource:o[0].createView()},{binding:3,resource:{buffer:a}}]}),c=e.createBindGroup({layout:r.getBindGroupLayout(1),entries:[{binding:1,resource:o[0].createView()},{binding:2,resource:o[1].createView()},{binding:3,resource:{buffer:i}}]}),d=e.createBindGroup({layout:r.getBindGroupLayout(1),entries:[{binding:1,resource:o[1].createView()},{binding:2,resource:o[0].createView()},{binding:3,resource:{buffer:a}}]}),p=x-14;e.queue.writeBuffer(u,0,new Uint32Array([15,p]));const m=n.beginComputePass();m.setPipeline(r),m.setBindGroup(0,f),m.setBindGroup(1,l),m.dispatchWorkgroups(Math.ceil(t.width/p),Math.ceil(t.height/y[1])),m.setBindGroup(1,c),m.dispatchWorkgroups(Math.ceil(t.height/p),Math.ceil(t.width/y[1]));for(let e=0;e<1;++e)m.setBindGroup(1,d),m.dispatchWorkgroups(Math.ceil(t.width/p),Math.ceil(t.height/y[1])),m.setBindGroup(1,c),m.dispatchWorkgroups(Math.ceil(t.height/p),Math.ceil(t.width/y[1]));return m.end(),o[1]}}(e),I=function(e,t){const r=e.createShaderModule({label:"texture module",code:w}),n=e.createSampler({minFilter:"linear",magFilter:"linear"}),o=e.createRenderPipeline({label:"texture pipeline",layout:"auto",vertex:{module:r,entryPoint:"vs",buffers:[{arrayStride:4*B,attributes:[{shaderLocation:0,offset:0,format:"float32x4"},{shaderLocation:1,offset:16,format:"float32x2"}]}]},fragment:{module:r,entryPoint:"fs",targets:[{format:t}]}}),a=e.createBuffer({label:"uniforms",size:64,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),i=new Float32Array(16),u=i.subarray(0,16);return function(t,r,s,f){const l=Math.round(s.length/B),c=e.createBuffer({label:"vertex buffer vertices",size:s.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(c,0,s);const d=e.createBindGroup({layout:o.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:a}},{binding:1,resource:n},{binding:2,resource:f.createView()}]});t.setPipeline(o),t.setVertexBuffer(0,c),u.set(r),e.queue.writeBuffer(a,0,i),t.setBindGroup(0,d),t.draw(l)}}(e,t)}(t,a);const i=[];return function(e,t,r,n,o,a){const i=function(e){return M.ortho(0,e.clientWidth,e.clientHeight,0,1,-1)}(t);requestAnimationFrame((function t(o){const u=n.createCommandEncoder(),s=function(e,t){const r=e.getCurrentTexture();return function(e,t,r){T&&T.width===t&&T.height===r||(null==T||T.destroy(),T=e.createTexture({size:[t,r],format:"depth24plus",usage:GPUTextureUsage.RENDER_ATTACHMENT}))}(t,r.width,r.height),{label:"our render to canvas renderPass",colorAttachments:[{view:r.createView(),clearValue:[0,0,0,1],loadOp:"clear",storeOp:"store"}]}}(r,n),f=u.beginRenderPass(s);let l=!1,c=0;for(;!l;){const{texture_id:t,vertex_data:r}=e.get_shader_input(c);c++,l=0===r.length,l||I(f,i,new Float32Array(r),a[t])}f.end();const d=u.finish();n.queue.submit([d]),requestAnimationFrame(t)}))}(n,e,o,t,0,i),{addImage:r=>{const o=i.length;i.push(function(e,t,r={}){const n=e.createTexture({format:"rgba8unorm",mipLevelCount:r.mips?F(t.width,t.height):1,size:[t.width,t.height],usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT});return function(e,t,r,{flipY:n,depthOrArrayLayers:o}={}){e.queue.copyExternalImageToTexture({source:r,flipY:n},{texture:t},{width:r.width,height:r.height,depthOrArrayLayers:o})}(e,n,t,r),n}(t,r)),console.log("env",r.width,e.width);const a=function(e,t){if(t.height-e.height<t.width-e.width)return z(e.height,.2*t.height,.8*t.height)/e.height;return z(e.width,.2*t.width,.8*t.width)/e.width}(r,e),u=r.width*a,s=r.height*a,f=.5*(e.width-u),l=.5*(e.height-s);n.add_texture([{x:f,y:l,u:0,v:0},{x:f+u,y:l,u:1,v:0},{x:f+u,y:l+s,u:1,v:1},{x:f,y:l+s,u:0,v:1}],o)},updatePoints:(e,t)=>{n.update_points(e,t)}}}))}return s})()));
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Point } from "types";
|
|
2
|
+
interface CreatorAPI {
|
|
3
|
+
addImage: (img: HTMLImageElement) => void;
|
|
4
|
+
updatePoints: (textureId: number, points: Point[]) => void;
|
|
5
|
+
}
|
|
6
|
+
export default function initCreator(canvas: HTMLCanvasElement): Promise<CreatorAPI>;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAE7B,UAAU,UAAU;IAClB,QAAQ,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,IAAI,CAAA;IACzC,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,IAAI,CAAA;CAC3D;AAED,wBAA8B,WAAW,CACvC,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,UAAU,CAAC,CAmDrB"}
|
package/dist/index.html
CHANGED
|
@@ -10,4 +10,4 @@
|
|
|
10
10
|
body {
|
|
11
11
|
display: grid;
|
|
12
12
|
grid-template-columns: 100px minmax(0, 1fr);
|
|
13
|
-
}</style><script defer="defer" src="test-runtime.
|
|
13
|
+
}</style><script defer="defer" src="test-runtime.63d51731843ade072b76.js"></script><script defer="defer" src="test.js"></script></head><body><aside><input type="file"/> <button id="img-position">Update image position</button></aside><canvas></canvas></body>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export default class MiniatureVideo {
|
|
2
|
+
private getCurrTime;
|
|
3
|
+
private device;
|
|
4
|
+
private _width?;
|
|
5
|
+
private _height?;
|
|
6
|
+
private _duration?;
|
|
7
|
+
html: HTMLVideoElement;
|
|
8
|
+
isReady: boolean;
|
|
9
|
+
private requestedFrames;
|
|
10
|
+
textureArray: GPUTexture;
|
|
11
|
+
private fetchedFramesMs;
|
|
12
|
+
isPlaying: boolean;
|
|
13
|
+
private texWidth;
|
|
14
|
+
private texHeight;
|
|
15
|
+
constructor(url: string, cbOnReady: (video: MiniatureVideo) => void, getCurrTime: () => number, onVideoEnd: VoidFunction, device: GPUDevice);
|
|
16
|
+
set currTime(time: number);
|
|
17
|
+
get currTime(): number;
|
|
18
|
+
get duration(): number;
|
|
19
|
+
get width(): number;
|
|
20
|
+
get height(): number;
|
|
21
|
+
private requestVideoFrame;
|
|
22
|
+
private getVideoData;
|
|
23
|
+
private fetchNextFrame;
|
|
24
|
+
private addFrameToQueue;
|
|
25
|
+
triggerRequest(): void;
|
|
26
|
+
requestFrame(msOffset: number, callback: VoidFunction, cache: boolean): boolean;
|
|
27
|
+
play(time: number): void;
|
|
28
|
+
pause: () => void;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=MiniatureVideo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MiniatureVideo.d.ts","sourceRoot":"","sources":["../../../src/models/Video/MiniatureVideo.ts"],"names":[],"mappings":"AAgBA,MAAM,CAAC,OAAO,OAAO,cAAc;IAgB/B,OAAO,CAAC,WAAW;IAEnB,OAAO,CAAC,MAAM;IAjBhB,OAAO,CAAC,MAAM,CAAC,CAAQ;IACvB,OAAO,CAAC,OAAO,CAAC,CAAQ;IACxB,OAAO,CAAC,SAAS,CAAC,CAAQ;IACnB,IAAI,EAAE,gBAAgB,CAAA;IACtB,OAAO,EAAE,OAAO,CAAA;IACvB,OAAO,CAAC,eAAe,CAAgB;IAChC,YAAY,EAAE,UAAU,CAAA;IAC/B,OAAO,CAAC,eAAe,CAAU;IAC1B,SAAS,EAAE,OAAO,CAAA;IACzB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,SAAS,CAAQ;gBAGvB,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,EAClC,WAAW,EAAE,MAAM,MAAM,EACjC,UAAU,EAAE,YAAY,EAChB,MAAM,EAAE,SAAS;IAoD3B,IAAI,QAAQ,CAAC,IAAI,EAAE,MAAM,EAExB;IAED,IAAI,QAAQ,IAJO,MAAM,CAMxB;IAGD,IAAI,QAAQ,WAQX;IAED,IAAI,KAAK,WAQR;IAED,IAAI,MAAM,WAQT;IAED,OAAO,CAAC,iBAAiB;IAiEzB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,eAAe;IAoBhB,cAAc;IAUd,YAAY,CACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,OAAO,GACb,OAAO;IAaH,IAAI,CAAC,IAAI,EAAE,MAAM;IAMjB,KAAK,aAGX;CACF"}
|
package/dist/run.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { State } from "../crate/pkg";
|
|
2
|
+
export declare const transformMatrix: Float32Array<ArrayBuffer>;
|
|
3
|
+
export declare const MAP_BACKGROUND_SCALE = 1000;
|
|
4
|
+
export default function runCreator(state: State, canvas: HTMLCanvasElement, context: GPUCanvasContext, device: GPUDevice, presentationFormat: GPUTextureFormat, textures: GPUTexture[]): void;
|
|
5
|
+
//# sourceMappingURL=run.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAGpC,eAAO,MAAM,eAAe,2BAAqB,CAAA;AACjD,eAAO,MAAM,oBAAoB,OAAO,CAAA;AAMxC,MAAM,CAAC,OAAO,UAAU,UAAU,CAChC,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,SAAS,EACjB,kBAAkB,EAAE,gBAAgB,EACpC,QAAQ,EAAE,UAAU,EAAE,QAmCvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(()=>{"use strict";var e,r,t,o,a,n,i={},u={};function f(e){var r=u[e];if(void 0!==r)return r.exports;var t=u[e]={id:e,exports:{}};return i[e](t,t.exports,f),t.exports}f.m=i,e="function"==typeof Symbol?Symbol("webpack queues"):"__webpack_queues__",r="function"==typeof Symbol?Symbol("webpack exports"):"__webpack_exports__",t="function"==typeof Symbol?Symbol("webpack error"):"__webpack_error__",o=e=>{e&&e.d<1&&(e.d=1,e.forEach((e=>e.r--)),e.forEach((e=>e.r--?e.r++:e())))},f.a=(a,n,i)=>{var u;i&&((u=[]).d=-1);var f,s,p,c=new Set,d=a.exports,m=new Promise(((e,r)=>{p=r,s=e}));m[r]=d,m[e]=e=>(u&&e(u),c.forEach(e),m.catch((e=>{}))),a.exports=m,n((a=>{var n;f=(a=>a.map((a=>{if(null!==a&&"object"==typeof a){if(a[e])return a;if(a.then){var n=[];n.d=0,a.then((e=>{i[r]=e,o(n)}),(e=>{i[t]=e,o(n)}));var i={};return i[e]=e=>e(n),i}}var u={};return u[e]=e=>{},u[r]=a,u})))(a);var i=()=>f.map((e=>{if(e[t])throw e[t];return e[r]})),s=new Promise((r=>{(n=()=>r(i)).r=0;var t=e=>e!==u&&!c.has(e)&&(c.add(e),e&&!e.d&&(n.r++,e.push(n)));f.map((r=>r[e](t)))}));return n.r?s:i()}),(e=>(e?p(m[t]=e):s(d),o(u)))),u&&u.d<0&&(u.d=0)},f.d=(e,r)=>{for(var t in r)f.o(r,t)&&!f.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},f.f={},f.e=e=>Promise.all(Object.keys(f.f).reduce(((r,t)=>(f.f[t](e,r),r)),[])),f.u=e=>e+".53ef6be51135b1f869af.js",f.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),f.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.X=(e,r,t)=>{var o=r;t||(r=e,t=()=>f(f.s=o)),r.map(f.e,f);var a=t();return void 0===a?e:a},f.v=(e,r,t,o)=>new Promise((function(e,r){try{var{readFile:o}=require("fs"),{join:a}=require("path");o(a(__dirname,t+".module.wasm"),(function(t,o){if(t)return r(t);e({arrayBuffer:()=>o})}))}catch(e){r(e)}})).then((e=>e.arrayBuffer())).then((e=>WebAssembly.instantiate(e,o))).then((r=>Object.assign(e,r.instance.exports))),a={356:1},n=e=>{var r=e.modules,t=e.ids,o=e.runtime;for(var n in r)f.o(r,n)&&(f.m[n]=r[n]);o&&o(f);for(var i=0;i<t.length;i++)a[t[i]]=1},f.f.require=(e,r)=>{a[e]||(356!=e?n(require("./"+f.u(e))):a[e]=1)},module.exports=f,f.C=n})();
|
package/dist/test.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_mateuszjs_magic_render=self.webpackChunk_mateuszjs_magic_render||[]).push([[57,423],{848:(e,t,r)=>{var n=r(845);!function(){var e,t,r,o;e=this,t=void 0,o=function*(){const e=document.querySelector("canvas"),t=yield(0,n.A)(e);document.querySelector("input").addEventListener("change",(e=>{const{files:r}=e.target;if(!r)return;const n=new Image;n.src=URL.createObjectURL(r[0]),n.onload=()=>{t.addImage(n)}}));let r=100;document.querySelector("#img-position").addEventListener("click",(()=>{t.updatePoints(0,[{x:r,y:r},{x:r+400,y:r},{x:r+400,y:r+400},{x:r,y:r+400}]),r+=10}))},new((r=void 0)||(r=Promise))((function(n,i){function a(e){try{s(o.next(e))}catch(e){i(e)}}function u(e){try{s(o.throw(e))}catch(e){i(e)}}function s(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,u)}s((o=o.apply(e,t||[])).next())}))}()},214:(e,t,r)=>{function n(e,t,r,n){e.width=Math.max(1,Math.min(t,n.limits.maxTextureDimension2D)),e.height=Math.max(1,Math.min(r,n.limits.maxTextureDimension2D))}function o(e,t,r){new ResizeObserver((e=>{for(const o of e)n(o.target,0|o.contentBoxSize[0].inlineSize,0|o.contentBoxSize[0].blockSize,t),r()})).observe(e),n(e,e.clientWidth,e.clientHeight,t)}r.d(t,{A:()=>o})},773:(e,t,r)=>{let n;function o(e,t){const r=e.getCurrentTexture();return function(e,t,r){n&&n.width===t&&n.height===r||(null==n||n.destroy(),n=e.createTexture({size:[t,r],format:"depth24plus",usage:GPUTextureUsage.RENDER_ATTACHMENT}))}(t,r.width,r.height),{label:"our render to canvas renderPass",colorAttachments:[{view:r.createView(),clearValue:[0,0,0,1],loadOp:"clear",storeOp:"store"}]}}r.d(t,{A:()=>o})},845:(e,t,r)=>{r.d(t,{A:()=>A});var n=r(214),o=function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{s(n.next(e))}catch(e){i(e)}}function u(e){try{s(n.throw(e))}catch(e){i(e)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,u)}s((n=n.apply(e,t||[])).next())}))};const i={fromMat4:(e,t=new Float32Array(12))=>(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[8]=e[8],t[9]=e[9],t[10]=e[10],t),projection:(e,t,r=new Float32Array(12))=>(r[0]=2/e,r[1]=0,r[2]=0,r[4]=0,r[5]=-2/t,r[6]=0,r[8]=-1,r[9]=1,r[10]=1,r),identity:(e=new Float32Array(12))=>(e[0]=1,e[1]=0,e[2]=0,e[4]=0,e[5]=1,e[6]=0,e[8]=0,e[9]=0,e[10]=1,e),multiply(e,t,r=new Float32Array(12)){r=r||new Float32Array(12);const n=e[0],o=e[1],i=e[2],a=e[4],u=e[5],s=e[6],l=e[8],f=e[9],c=e[10],d=t[0],p=t[1],g=t[2],m=t[4],h=t[5],v=t[6],b=t[8],x=t[9],y=t[10];return r[0]=d*n+p*a+g*l,r[1]=d*o+p*u+g*f,r[2]=d*i+p*s+g*c,r[4]=m*n+h*a+v*l,r[5]=m*o+h*u+v*f,r[6]=m*i+h*s+v*c,r[8]=b*n+x*a+y*l,r[9]=b*o+x*u+y*f,r[10]=b*i+x*s+y*c,r},translation:([e,t],r=new Float32Array(12))=>(r[0]=1,r[1]=0,r[2]=0,r[4]=0,r[5]=1,r[6]=0,r[8]=e,r[9]=t,r[10]=1,r),rotation(e,t=new Float32Array(12)){const r=Math.cos(e),n=Math.sin(e);return t[0]=r,t[1]=n,t[2]=0,t[4]=-n,t[5]=r,t[6]=0,t[8]=0,t[9]=0,t[10]=1,t},scaling:([e,t],r=new Float32Array(12))=>(r[0]=e,r[1]=0,r[2]=0,r[4]=0,r[5]=t,r[6]=0,r[8]=0,r[9]=0,r[10]=1,r),translate:(e,t,r=new Float32Array(12))=>i.multiply(e,i.translation(t),r),rotate:(e,t,r=new Float32Array(12))=>i.multiply(e,i.rotation(t),r),scale:(e,t,r=new Float32Array(12))=>i.multiply(e,i.scaling(t),r)},a=i,u="struct Uniforms {\n color: vec4f,\n matrix: mat3x3f,\n};\n\nstruct Vertex {\n @location(0) position: vec2f,\n};\n\nstruct VSOutput {\n @builtin(position) position: vec4f,\n};\n\n@group(0) @binding(0) var<uniform> uni: Uniforms;\n\n@vertex fn vs(vert: Vertex) -> VSOutput {\n var vsOut: VSOutput;\n\n let clipSpace = (uni.matrix * vec3f(vert.position, 1)).xy;\n vsOut.position = vec4f(clipSpace, 0.0, 1.0);\n return vsOut;\n}\n\n@fragment fn fs(vsOut: VSOutput) -> @location(0) vec4f {\n return uni.color;\n}\n",s="struct Uniforms {\n matrix: mat4x4f,\n zoom: f32,\n};\n\nstruct Vertex {\n @location(0) t: f32,\n @location(1) dir: f32,\n @location(2) segmentIndex: u32,\n};\n\n@group(0) @binding(0) var<uniform> u: Uniforms;\n\n@group(0) @binding(1) var<storage> points: array<vec2f>;\n\nstruct VSOutput {\n @builtin(position) position: vec4f,\n @location(0) color: vec4f,\n};\n\n@vertex fn vs(vert: Vertex) -> VSOutput {\n var vsOut: VSOutput;\n \n let p1 = points[vert.segmentIndex * 4 + 0];\n let p2 = points[vert.segmentIndex * 4 + 1];\n let p3 = points[vert.segmentIndex * 4 + 2];\n let p4 = points[vert.segmentIndex * 4 + 3];\n\n let t2 = vert.t * vert.t;\n let one_minus_t = 1.0 - vert.t;\n let one_minus_t2 = one_minus_t * one_minus_t;\n let pos = p1 * one_minus_t2 * one_minus_t + p2 * 3.0 * vert.t * one_minus_t2 + p3 * 3.0 * t2 * one_minus_t + p4 * t2 * vert.t;\n\n let angle = one_minus_t2 * (p2 - p1) + 2.0 * vert.t * one_minus_t * (p3 - p2) + t2 * (p4 - p3);\n let angleNorm = normalize(angle) * 5 / u.zoom;\n let transPos = vec2(pos.x - angleNorm.y * vert.dir, pos.y + angleNorm.x * vert.dir);\n let clipSpace = (u.matrix * vec4f(transPos, 1, 1));\n vsOut.position = clipSpace;\n vsOut.color = vec4f(f32(vert.segmentIndex) % 3, (f32(vert.segmentIndex) + 1) % 3, (f32(vert.segmentIndex) + 2) % 3, 1);\n\n return vsOut;\n}\n\n@fragment fn fs(vsOut: VSOutput) -> @location(0) vec4f {\n return vsOut.color;\n}\n",l="struct Uniforms {\n matrix: mat4x4f,\n};\n\nstruct Vertex {\n @location(0) position: vec4f,\n @location(1) texcoord: vec2f,\n};\n\nstruct VSOutput {\n @builtin(position) position: vec4f,\n @location(0) texcoord: vec2f,\n};\n\n@group(0) @binding(0) var<uniform> uni: Uniforms;\n\n@vertex fn vs(vert: Vertex) -> VSOutput {\n var vsOut: VSOutput;\n vsOut.position = uni.matrix * vert.position;\n vsOut.texcoord = vert.texcoord;\n return vsOut;\n}\n\n@group(0) @binding(1) var ourSampler: sampler;\n@group(0) @binding(2) var ourTexture: texture_2d<f32>;\n\n@fragment fn fs(vsOut: VSOutput) -> @location(0) vec4f {\n return textureSample(ourTexture, ourSampler, vsOut.texcoord);\n}\n",f="struct Uniforms {\n matrix: mat4x4f,\n};\n\nstruct Vertex {\n @location(0) position: vec4f,\n};\n\nstruct VSOutput {\n @builtin(position) position: vec4f,\n @location(0) color: vec4f,\n};\n\n@group(0) @binding(0) var<uniform> uni: Uniforms;\n\n@vertex fn vs(\n vert: Vertex,\n @builtin(vertex_index) vertexIndex : u32,\n // @builtin(instance_index) instanceIndex: u32\n ) -> VSOutput {\n var vsOut: VSOutput;\n vsOut.position = uni.matrix * vert.position;\n vsOut.color = vec4f(f32(vertexIndex) % 3, (f32(vertexIndex) + 1) % 3, (f32(vertexIndex) + 2) % 3, 1);\n return vsOut;\n}\n\n\n@fragment fn fs(vsOut: VSOutput) -> @location(0) vec4f {\n return vsOut.color;\n}\n",c="struct Uniforms {\n normalMatrix: mat3x3f,\n worldViewProjection: mat4x4f,\n lightColor: vec4f,\n lightDirection: vec3f,\n};\n\nstruct Vertex {\n @location(0) position: vec4f,\n @location(1) normal: vec3f,\n};\n\nstruct VSOutput {\n @builtin(position) position: vec4f,\n @location(0) color: vec4f,\n @location(1) normal: vec3f,\n};\n\n@group(0) @binding(0) var<uniform> uni: Uniforms;\n\n@vertex fn vs(\n vert: Vertex,\n @builtin(vertex_index) vertexIndex : u32,\n // @builtin(instance_index) instanceIndex: u32\n ) -> VSOutput {\n var vsOut: VSOutput;\n vsOut.position = uni.worldViewProjection * vert.position;\n vsOut.normal = uni.normalMatrix * vert.normal;\n vsOut.color = vec4f(f32(vertexIndex) % 3, (f32(vertexIndex) + 1) % 3, (f32(vertexIndex) + 2) % 3, 1);\n\n return vsOut;\n}\n\n\n@fragment fn fs(vsOut: VSOutput) -> @location(0) vec4f {\n // Because vsOut.normal is an inter-stage variable \n // it's interpolated so it will not be a unit vector.\n // Normalizing it will make it a unit vector again\n let normal = normalize(vsOut.normal);\n \n // Compute the light by taking the dot product\n // of the normal to the light's reverse direction\n let light = dot(normal, -uni.lightDirection);\n \n // Lets multiply just the color portion (not the alpha)\n // by the light\n let color = vec3f(0.23) + uni.lightColor.rgb * light;\n // let color = vsOut.color.rgb * 0.5 + uni.lightColor.rgb * light;\n return vec4f(color, vsOut.color.a);\n}\n",d="struct Params {\n filterDim : i32,\n blockDim : u32,\n}\n\n@group(0) @binding(0) var samp : sampler;\n@group(0) @binding(1) var<uniform> params : Params;\n@group(1) @binding(1) var inputTex : texture_2d<f32>;\n@group(1) @binding(2) var outputTex : texture_storage_2d<rgba8unorm, write>;\n\nstruct Flip {\n value : u32,\n}\n@group(1) @binding(3) var<uniform> flip : Flip;\n\n// This shader blurs the input texture in one direction, depending on whether\n// |flip.value| is 0 or 1.\n// It does so by running (128 / 4) threads per workgroup to load 128\n// texels into 4 rows of shared memory. Each thread loads a\n// 4 x 4 block of texels to take advantage of the texture sampling\n// hardware.\n// Then, each thread computes the blur result by averaging the adjacent texel values\n// in shared memory.\n// Because we're operating on a subset of the texture, we cannot compute all of the\n// results since not all of the neighbors are available in shared memory.\n// Specifically, with 128 x 128 tiles, we can only compute and write out\n// square blocks of size 128 - (filterSize - 1). We compute the number of blocks\n// needed in Javascript and dispatch that amount.\n\n// 128/4 = 32 -> number of threads per working group\n// does it in 4x4 block of texels(takes advantage of texture sampling hardware)\n// with this beign said, we don't have all the neighbours, only this block\n// That's why we can only compute & write out blocks of size 128 - (filterSize - 1)\nvar<workgroup> tile : array<array<vec3<f32>, 128>, 4>;\n\n@compute @workgroup_size(32, 1, 1)\nfn main(\n @builtin(workgroup_id) WorkGroupID : vec3<u32>,\n @builtin(local_invocation_id) LocalInvocationID : vec3<u32>\n) {\n let filterOffset = (params.filterDim - 1) / 2;\n let dims = vec2<i32>(textureDimensions(inputTex, 0));\n let baseIndex = vec2<i32>(WorkGroupID.xy * vec2(params.blockDim, 4) + // it's just the index of the first texel in a group\n LocalInvocationID.xy * vec2(4, 1)) // <0, 128>\n - vec2(filterOffset, 0);\n // baseIndex = xy of first texel of group\n for (var r = 0; r < 4; r++) {\n for (var c = 0; c < 4; c++) {\n var loadIndex = baseIndex + vec2(c, r);\n if (flip.value != 0) {\n loadIndex = loadIndex.yx;\n }\n\n tile[r][4 * LocalInvocationID.x + u32(c)] = textureSampleLevel(\n inputTex,\n samp,\n (vec2<f32>(loadIndex) + vec2<f32>(0.25, 0.25)) / vec2<f32>(dims),\n 0.0\n ).rgb;\n }\n }\n\n workgroupBarrier();\n // helps coordinate access to read-write memory\n // so all threads(32) will wait to hit this barrer, and then start form here together\n\n for (var r = 0; r < 4; r++) {\n for (var c = 0; c < 4; c++) {\n var writeIndex = baseIndex + vec2(c, r);\n if (flip.value != 0) {\n writeIndex = writeIndex.yx;\n }\n\n let center = i32(4 * LocalInvocationID.x) + c;\n if (center >= filterOffset &&\n center < 128 - filterOffset &&\n all(writeIndex < dims)) {\n var acc = vec3(0.0, 0.0, 0.0);\n for (var f = 0; f < params.filterDim; f++) {\n var i = center + f - filterOffset;\n acc = acc + (1.0 / f32(params.filterDim)) * tile[r][i];\n }\n textureStore(outputTex, writeIndex, vec4(acc, 1.0));\n }\n }\n }\n}\n",p=128,g=[4,4],m="struct Vertex {\n @location(0) position: vec4f,\n @location(1) uv: vec2f,\n};\n\nstruct Uniforms {\n worldViewProjection: mat4x4f,\n};\n\nstruct VertexOutput {\n @builtin(position) position: vec4f,\n @location(0) texCoord: vec2f,\n};\n\n@group(0) @binding(0) var<uniform> u: Uniforms;\n@group(0) @binding(1) var ourSampler: sampler;\n@group(0) @binding(2) var ourTexture: texture_2d<f32>;\n\n@vertex fn vs(vert: Vertex) -> VertexOutput {\n var out: VertexOutput;\n // maybe we should pass offsets from the position instead of... position?\n out.position = u.worldViewProjection * vert.position;\n out.texCoord = vert.uv;\n \n return out;\n}\n\n@fragment fn fs(in: VertexOutput) -> @location(0) vec4f {\n let texel = textureSample(ourTexture, ourSampler, in.texCoord);\n return texel;\n}\n",h=6;let v,b,x,y,w,B,U;var P=r(773);const O={cross(e,t,r=new Float32Array(3)){const n=e[1]*t[2]-e[2]*t[1],o=e[2]*t[0]-e[0]*t[2],i=e[0]*t[1]-e[1]*t[0];return r[0]=n,r[1]=o,r[2]=i,r},subtract:(e,t,r=new Float32Array(3))=>(r[0]=e[0]-t[0],r[1]=e[1]-t[1],r[2]=e[2]-t[2],r),normalize(e,t=new Float32Array(3)){const r=Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]);return r>1e-5?(t[0]=e[0]/r,t[1]=e[1]/r,t[2]=e[2]/r):(t[0]=0,t[1]=0,t[2]=0),t}},G={projection:(e,t,r,n)=>G.ortho(0,e,t,0,r,-r,n),perspective(e,t,r,n,o=new Float32Array(16)){const i=Math.tan(.5*Math.PI-.5*e),a=1/(r-n);return o[0]=i/t,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=i,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=n*a,o[11]=-1,o[12]=0,o[13]=0,o[14]=r*n*a,o[15]=0,o},ortho:(e,t,r,n,o,i,a=new Float32Array(16))=>(a[0]=2/(t-e),a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=2/(n-r),a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=1/(o-i),a[11]=0,a[12]=(t+e)/(e-t),a[13]=(n+r)/(r-n),a[14]=o/(o-i),a[15]=1,a),identity:(e=new Float32Array(16))=>(e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e),multiply(e,t,r=new Float32Array(16)){const n=t[0],o=t[1],i=t[2],a=t[3],u=t[4],s=t[5],l=t[6],f=t[7],c=t[8],d=t[9],p=t[10],g=t[11],m=t[12],h=t[13],v=t[14],b=t[15],x=e[0],y=e[1],w=e[2],B=e[3],U=e[4],P=e[5],O=e[6],G=e[7],S=e[8],I=e[9],_=e[10],T=e[11],A=e[12],V=e[13],F=e[14],M=e[15];return r[0]=n*x+o*U+i*S+a*A,r[1]=n*y+o*P+i*I+a*V,r[2]=n*w+o*O+i*_+a*F,r[3]=n*B+o*G+i*T+a*M,r[4]=u*x+s*U+l*S+f*A,r[5]=u*y+s*P+l*I+f*V,r[6]=u*w+s*O+l*_+f*F,r[7]=u*B+s*G+l*T+f*M,r[8]=c*x+d*U+p*S+g*A,r[9]=c*y+d*P+p*I+g*V,r[10]=c*w+d*O+p*_+g*F,r[11]=c*B+d*G+p*T+g*M,r[12]=m*x+h*U+v*S+b*A,r[13]=m*y+h*P+v*I+b*V,r[14]=m*w+h*O+v*_+b*F,r[15]=m*B+h*G+v*T+b*M,r},cameraAim(e,t,r,n=new Float32Array(16)){const o=O.normalize(O.subtract(e,t)),i=O.normalize(O.cross(r,o)),a=O.normalize(O.cross(o,i));return n[0]=i[0],n[1]=i[1],n[2]=i[2],n[3]=0,n[4]=a[0],n[5]=a[1],n[6]=a[2],n[7]=0,n[8]=o[0],n[9]=o[1],n[10]=o[2],n[11]=0,n[12]=e[0],n[13]=e[1],n[14]=e[2],n[15]=1,n},inverse(e,t=new Float32Array(16)){const r=e[0],n=e[1],o=e[2],i=e[3],a=e[4],u=e[5],s=e[6],l=e[7],f=e[8],c=e[9],d=e[10],p=e[11],g=e[12],m=e[13],h=e[14],v=e[15],b=d*v,x=h*p,y=s*v,w=h*l,B=s*p,U=d*l,P=o*v,O=h*i,G=o*p,S=d*i,I=o*l,_=s*i,T=f*m,A=g*c,V=a*m,F=g*u,M=a*c,z=f*u,D=r*m,C=g*n,L=r*c,E=f*n,R=r*u,k=a*n,q=b*u+w*c+B*m-(x*u+y*c+U*m),N=x*n+P*c+S*m-(b*n+O*c+G*m),Y=y*n+O*u+I*m-(w*n+P*u+_*m),j=U*n+G*u+_*c-(B*n+S*u+I*c),W=1/(r*q+a*N+f*Y+g*j);return t[0]=W*q,t[1]=W*N,t[2]=W*Y,t[3]=W*j,t[4]=W*(x*a+y*f+U*g-(b*a+w*f+B*g)),t[5]=W*(b*r+O*f+G*g-(x*r+P*f+S*g)),t[6]=W*(w*r+P*a+_*g-(y*r+O*a+I*g)),t[7]=W*(B*r+S*a+I*f-(U*r+G*a+_*f)),t[8]=W*(T*l+F*p+M*v-(A*l+V*p+z*v)),t[9]=W*(A*i+D*p+E*v-(T*i+C*p+L*v)),t[10]=W*(V*i+C*l+R*v-(F*i+D*l+k*v)),t[11]=W*(z*i+L*l+k*p-(M*i+E*l+R*p)),t[12]=W*(V*d+z*h+A*s-(M*h+T*s+F*d)),t[13]=W*(L*h+T*o+C*d-(D*d+E*h+A*o)),t[14]=W*(D*s+k*h+F*o-(R*h+V*o+C*s)),t[15]=W*(R*d+M*o+E*s-(L*s+k*d+z*o)),t},transpose:(e,t=new Float32Array(16))=>(t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15],t),aim(e,t,r,n=new Float32Array(16)){const o=O.normalize(O.subtract(t,e)),i=O.normalize(O.cross(r,o)),a=O.normalize(O.cross(o,i));return n[0]=i[0],n[1]=i[1],n[2]=i[2],n[3]=0,n[4]=a[0],n[5]=a[1],n[6]=a[2],n[7]=0,n[8]=o[0],n[9]=o[1],n[10]=o[2],n[11]=0,n[12]=e[0],n[13]=e[1],n[14]=e[2],n[15]=1,n},lookAt:(e,t,r,n)=>G.inverse(G.cameraAim(e,t,r,n),n),translation:([e,t,r],n=new Float32Array(16))=>(n[0]=1,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=1,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=1,n[11]=0,n[12]=e,n[13]=t,n[14]=r,n[15]=1,n),rotationX(e,t=new Float32Array(16)){const r=Math.cos(e),n=Math.sin(e);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=r,t[6]=n,t[7]=0,t[8]=0,t[9]=-n,t[10]=r,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},rotationY(e,t=new Float32Array(16)){const r=Math.cos(e),n=Math.sin(e);return t[0]=r,t[1]=0,t[2]=-n,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=n,t[9]=0,t[10]=r,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},rotationZ(e,t=new Float32Array(16)){const r=Math.cos(e),n=Math.sin(e);return t[0]=r,t[1]=n,t[2]=0,t[3]=0,t[4]=-n,t[5]=r,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},scaling:([e,t,r],n=new Float32Array(16))=>(n[0]=e,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=t,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=r,n[11]=0,n[12]=0,n[13]=0,n[14]=0,n[15]=1,n),translate:(e,t,r)=>G.multiply(e,G.translation(t),r),rotateX:(e,t,r)=>G.multiply(e,G.rotationX(t),r),rotateY:(e,t,r)=>G.multiply(e,G.rotationY(t),r),rotateZ:(e,t,r)=>G.multiply(e,G.rotationZ(t),r),scale:(e,t,r)=>G.multiply(e,G.scaling(t),r)},S=G;new Float32Array;const I=(...e)=>{const t=Math.max(...e);return 1+Math.log2(t)|0};var _=r(253),T=function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{s(n.next(e))}catch(e){i(e)}}function u(e){try{s(n.throw(e))}catch(e){i(e)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,u)}s((n=n.apply(e,t||[])).next())}))};function A(e){return T(this,void 0,void 0,(function*(){const t=yield function(){return o(this,void 0,void 0,(function*(){if(!navigator.gpu)throw Error("this browser does not support WebGPU");const e=yield navigator.gpu.requestAdapter();if(!e)throw Error("this browser supports webgpu but it appears disabled");const t=yield e.requestDevice();return t.lost.then((e=>{console.error(`WebGPU device was lost: ${e.message}`),e.reason})),t}))}(),{State:i}=yield r.e(701).then(r.bind(r,701)),O=i.new(300,300),G=e.getContext("webgpu");if(!G)throw Error("WebGPU from canvas needs to be always provided");const T=navigator.gpu.getPreferredCanvasFormat();G.configure({device:t,format:T}),(0,n.A)(e,t,(()=>{})),function(e,t){v=function(e,t){const r=e.createShaderModule({label:"triangle shader module",code:u}),n=e.createRenderPipeline({label:"triangle pipline",layout:"auto",vertex:{module:r,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:r,entryPoint:"fs",targets:[{format:t}]},depthStencil:{depthWriteEnabled:!1,depthCompare:"always",format:"depth24plus"}});return function(t,r,o){const i=e.createBuffer({label:"uniforms",size:64,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),u=new Float32Array(16),s=u.subarray(0,4),l=u.subarray(4,16);s.set([Math.random(),Math.random(),Math.random(),1]);const f=new Float32Array([500,100,800,400,200,400]),c=new Uint32Array([0,1,2]),d=e.createBuffer({label:"vertex buffer vertices",size:f.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(d,0,f);const p=e.createBuffer({label:"index buffer",size:c.byteLength,usage:GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(p,0,c);const g=e.createBindGroup({label:"bind group for object",layout:n.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:i}}]});t.setPipeline(n),t.setVertexBuffer(0,d),t.setIndexBuffer(p,"uint32"),l.set(r),a.translate(l,[o,0],l),e.queue.writeBuffer(i,0,u),t.setBindGroup(0,g),t.drawIndexed(3)}}(e,t),b=function(e,t){const r=e.createShaderModule({label:"bezier shader module",code:s}),n=e.createRenderPipeline({label:"bezier pipline",layout:"auto",primitive:{topology:"triangle-strip"},vertex:{module:r,entryPoint:"vs",buffers:[{arrayStride:4,attributes:[{shaderLocation:0,offset:0,format:"float32"}]},{arrayStride:4,attributes:[{shaderLocation:1,offset:0,format:"float32"}]},{arrayStride:4,attributes:[{shaderLocation:2,offset:0,format:"uint32"}]}]},fragment:{module:r,entryPoint:"fs",targets:[{format:t}]},depthStencil:{depthWriteEnabled:!1,depthCompare:"always",format:"depth24plus"}});return function(t,r,o,i,a,u,s){const l=4*o.length,f=e.createBuffer({label:"storage points",size:l,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),c=e.createBuffer({label:"uniforms",size:80,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),d=new Float32Array(20),p=d.subarray(0,16),g=d.subarray(16,17),m=e.createBindGroup({label:"bezier bind group for object",layout:n.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:c}},{binding:1,resource:{buffer:f}}]}),h=e.createBuffer({label:"bezier vertex buffer vertices",size:i.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(h,0,i);const v=e.createBuffer({label:"bezier vertex buffer vertices",size:a.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(v,0,a);const b=e.createBuffer({label:"bezier vertex buffer vertices",size:u.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(b,0,u),t.setPipeline(n),t.setVertexBuffer(0,h),t.setVertexBuffer(1,v),t.setVertexBuffer(2,b),p.set(r),g.set(new Float32Array([s])),e.queue.writeBuffer(c,0,d),e.queue.writeBuffer(f,0,o),t.setBindGroup(0,m),t.draw(i.length)}}(e,t),y=function(e,t){const r=e.createShaderModule({label:"3d model texture shader module",code:l}),n=e.createRenderPipeline({label:"3d model texture pipline",layout:"auto",vertex:{module:r,entryPoint:"vs",buffers:[{arrayStride:20,attributes:[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x2"}]}]},fragment:{module:r,entryPoint:"fs",targets:[{format:t}]},depthStencil:{depthWriteEnabled:!1,depthCompare:"always",format:"depth24plus"}});return function(t,r,o,i,a){const u=e.createSampler({magFilter:"linear",minFilter:"linear"}),s=e.createBuffer({label:"uniforms",size:64,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),l=new Float32Array(16),f=l.subarray(0,16),c=a.length,d=e.createBuffer({label:"3d model texture vertex buffer vertices",size:i.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(d,0,i);const p=e.createBuffer({label:"3d model texture index buffer",size:a.byteLength,usage:GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(p,0,a);const g=e.createBindGroup({label:"3d model texture bind group for object",layout:n.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:s}},{binding:1,resource:u},{binding:2,resource:o.createView()}]});t.setPipeline(n),t.setVertexBuffer(0,d),t.setIndexBuffer(p,"uint32"),f.set(r),e.queue.writeBuffer(s,0,l),t.setBindGroup(0,g),t.drawIndexed(c)}}(e,t),x=function(e,t){const r=e.createShaderModule({label:"3d model shader module",code:f}),n=e.createRenderPipeline({label:"3d model pipline",layout:"auto",vertex:{module:r,entryPoint:"vs",buffers:[{arrayStride:12,attributes:[{shaderLocation:0,offset:0,format:"float32x3"}]}]},fragment:{module:r,entryPoint:"fs",targets:[{format:t}]},primitive:{cullMode:"back"},depthStencil:{depthWriteEnabled:!0,depthCompare:"less",format:"depth24plus"}});return function(t,r,o,i){const a=e.createBuffer({label:"uniforms",size:64,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),u=new Float32Array(16),s=u.subarray(0,16),l=i.length,f=e.createBuffer({label:"vertex buffer vertices",size:o.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(f,0,o);const c=e.createBuffer({label:"index buffer",size:i.byteLength,usage:GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(c,0,i);const d=e.createBindGroup({label:"bind group for object",layout:n.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:a}}]});t.setPipeline(n),t.setVertexBuffer(0,f),t.setIndexBuffer(c,"uint32"),s.set(r),e.queue.writeBuffer(a,0,u),t.setBindGroup(0,d),t.drawIndexed(l)}}(e,t),w=function(e,t){const r=e.createShaderModule({label:"3d model light shader module",code:c}),n=e.createRenderPipeline({label:"3d model light pipline",layout:"auto",vertex:{module:r,entryPoint:"vs",buffers:[{arrayStride:24,attributes:[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x3"}]}]},fragment:{module:r,entryPoint:"fs",targets:[{format:t}]},primitive:{cullMode:"back"},depthStencil:{depthWriteEnabled:!0,depthCompare:"less",format:"depth24plus"}});return function(t,r,o,i){const{worldViewProjection:a,normalMatrix:u,lightColor:s,lightDirection:l}=r,f=e.createBuffer({label:"uniforms",size:144,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),c=new Float32Array(36),d=c.subarray(0,12),p=c.subarray(12,28),g=c.subarray(28,32),m=c.subarray(32,35),h=e.createBindGroup({label:"bind group for object",layout:n.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:f}}]}),v=i.length,b=e.createBuffer({label:"vertex buffer vertices",size:o.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(b,0,o);const x=e.createBuffer({label:"index buffer",size:i.byteLength,usage:GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(x,0,i),t.setPipeline(n),t.setVertexBuffer(0,b),t.setIndexBuffer(x,"uint32"),d.set(u),p.set(a),g.set(s),m.set(l),e.queue.writeBuffer(f,0,c),t.setBindGroup(0,h),t.drawIndexed(v)}}(e,t),B=function(e){const t=e.createShaderModule({label:"blur shader module",code:d}),r=e.createComputePipeline({layout:"auto",compute:{module:t,entryPoint:"main"}});return function(t,n){const o=[0,1].map((()=>e.createTexture({size:{width:t.width,height:t.height},format:"rgba8unorm",usage:GPUTextureUsage.COPY_DST|GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING}))),i=(()=>{const t=e.createBuffer({size:4,mappedAtCreation:!0,usage:GPUBufferUsage.UNIFORM});return new Uint32Array(t.getMappedRange())[0]=0,t.unmap(),t})(),a=(()=>{const t=e.createBuffer({size:4,mappedAtCreation:!0,usage:GPUBufferUsage.UNIFORM});return new Uint32Array(t.getMappedRange())[0]=1,t.unmap(),t})(),u=e.createBuffer({size:8,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.UNIFORM}),s=e.createSampler({magFilter:"linear",minFilter:"linear"}),l=e.createBindGroup({layout:r.getBindGroupLayout(0),entries:[{binding:0,resource:s},{binding:1,resource:{buffer:u}}]}),f=e.createBindGroup({layout:r.getBindGroupLayout(1),entries:[{binding:1,resource:t.createView()},{binding:2,resource:o[0].createView()},{binding:3,resource:{buffer:i}}]}),c=e.createBindGroup({layout:r.getBindGroupLayout(1),entries:[{binding:1,resource:o[0].createView()},{binding:2,resource:o[1].createView()},{binding:3,resource:{buffer:a}}]}),d=e.createBindGroup({layout:r.getBindGroupLayout(1),entries:[{binding:1,resource:o[1].createView()},{binding:2,resource:o[0].createView()},{binding:3,resource:{buffer:i}}]}),m=p-14;e.queue.writeBuffer(u,0,new Uint32Array([15,m]));const h=n.beginComputePass();h.setPipeline(r),h.setBindGroup(0,l),h.setBindGroup(1,f),h.dispatchWorkgroups(Math.ceil(t.width/m),Math.ceil(t.height/g[1])),h.setBindGroup(1,c),h.dispatchWorkgroups(Math.ceil(t.height/m),Math.ceil(t.width/g[1]));for(let e=0;e<1;++e)h.setBindGroup(1,d),h.dispatchWorkgroups(Math.ceil(t.width/m),Math.ceil(t.height/g[1])),h.setBindGroup(1,c),h.dispatchWorkgroups(Math.ceil(t.height/m),Math.ceil(t.width/g[1]));return h.end(),o[1]}}(e),U=function(e,t){const r=e.createShaderModule({label:"texture module",code:m}),n=e.createSampler({minFilter:"linear",magFilter:"linear"}),o=e.createRenderPipeline({label:"texture pipeline",layout:"auto",vertex:{module:r,entryPoint:"vs",buffers:[{arrayStride:4*h,attributes:[{shaderLocation:0,offset:0,format:"float32x4"},{shaderLocation:1,offset:16,format:"float32x2"}]}]},fragment:{module:r,entryPoint:"fs",targets:[{format:t}]}}),i=e.createBuffer({label:"uniforms",size:64,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),a=new Float32Array(16),u=a.subarray(0,16);return function(t,r,s,l){const f=Math.round(s.length/h),c=e.createBuffer({label:"vertex buffer vertices",size:s.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(c,0,s);const d=e.createBindGroup({layout:o.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:i}},{binding:1,resource:n},{binding:2,resource:l.createView()}]});t.setPipeline(o),t.setVertexBuffer(0,c),u.set(r),e.queue.writeBuffer(i,0,a),t.setBindGroup(0,d),t.draw(f)}}(e,t)}(t,T);const A=[];return function(e,t,r,n,o,i){const a=function(e){return S.ortho(0,e.clientWidth,e.clientHeight,0,1,-1)}(t);requestAnimationFrame((function t(o){const u=n.createCommandEncoder(),s=(0,P.A)(r,n),l=u.beginRenderPass(s);let f=!1,c=0;for(;!f;){const{texture_id:t,vertex_data:r}=e.get_shader_input(c);c++,f=0===r.length,f||U(l,a,new Float32Array(r),i[t])}l.end();const d=u.finish();n.queue.submit([d]),requestAnimationFrame(t)}))}(O,e,G,t,0,A),{addImage:r=>{const n=A.length;A.push(function(e,t,r={}){const n=e.createTexture({format:"rgba8unorm",mipLevelCount:r.mips?I(t.width,t.height):1,size:[t.width,t.height],usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT});return function(e,t,r,{flipY:n,depthOrArrayLayers:o}={}){e.queue.copyExternalImageToTexture({source:r,flipY:n},{texture:t},{width:r.width,height:r.height,depthOrArrayLayers:o})}(e,n,t,r),n}(t,r)),console.log("env",r.width,e.width);const o=function(e,t){if(t.height-e.height<t.width-e.width)return(0,_.A)(e.height,.2*t.height,.8*t.height)/e.height;return(0,_.A)(e.width,.2*t.width,.8*t.width)/e.width}(r,e),i=r.width*o,a=r.height*o,u=.5*(e.width-i),s=.5*(e.height-a);O.add_texture([{x:u,y:s,u:0,v:0},{x:u+i,y:s,u:1,v:0},{x:u+i,y:s+a,u:1,v:1},{x:u,y:s+a,u:0,v:1}],n)},updatePoints:(e,t)=>{O.update_points(e,t)}}}))}},253:(e,t,r)=>{function n(e,t,r){return Math.min(r,Math.max(t,e))}r.d(t,{A:()=>n})}},e=>{e(e.s=848)}]);
|
|
1
|
+
"use strict";!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.YourLibraryName=t():e.YourLibraryName=t()}(this,(()=>(()=>{var e={id:423,ids:[57,423]};e.modules={848:(e,t,r)=>{r.r(t);var n=r(185);!function(){var e,t,r,o;e=this,t=void 0,o=function*(){const e=document.querySelector("canvas"),t=yield(0,n.default)(e);document.querySelector("input").addEventListener("change",(e=>{const{files:r}=e.target;if(!r)return;const n=new Image;n.src=URL.createObjectURL(r[0]),n.onload=()=>{t.addImage(n)}}));let r=100;document.querySelector("#img-position").addEventListener("click",(()=>{t.updatePoints(0,[{x:r,y:r},{x:r+400,y:r},{x:r+400,y:r+400},{x:r,y:r+400}]),r+=10}))},new((r=void 0)||(r=Promise))((function(n,i){function a(e){try{s(o.next(e))}catch(e){i(e)}}function u(e){try{s(o.throw(e))}catch(e){i(e)}}function s(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,u)}s((o=o.apply(e,t||[])).next())}))}()},185:(e,t,r)=>{function n(e,t,r,n){e.width=Math.max(1,Math.min(t,n.limits.maxTextureDimension2D)),e.height=Math.max(1,Math.min(r,n.limits.maxTextureDimension2D))}r.d(t,{default:()=>_});var o=function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{s(n.next(e))}catch(e){i(e)}}function u(e){try{s(n.throw(e))}catch(e){i(e)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,u)}s((n=n.apply(e,t||[])).next())}))};const i={fromMat4:(e,t=new Float32Array(12))=>(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[8]=e[8],t[9]=e[9],t[10]=e[10],t),projection:(e,t,r=new Float32Array(12))=>(r[0]=2/e,r[1]=0,r[2]=0,r[4]=0,r[5]=-2/t,r[6]=0,r[8]=-1,r[9]=1,r[10]=1,r),identity:(e=new Float32Array(12))=>(e[0]=1,e[1]=0,e[2]=0,e[4]=0,e[5]=1,e[6]=0,e[8]=0,e[9]=0,e[10]=1,e),multiply(e,t,r=new Float32Array(12)){r=r||new Float32Array(12);const n=e[0],o=e[1],i=e[2],a=e[4],u=e[5],s=e[6],f=e[8],l=e[9],c=e[10],d=t[0],p=t[1],g=t[2],m=t[4],h=t[5],v=t[6],b=t[8],x=t[9],y=t[10];return r[0]=d*n+p*a+g*f,r[1]=d*o+p*u+g*l,r[2]=d*i+p*s+g*c,r[4]=m*n+h*a+v*f,r[5]=m*o+h*u+v*l,r[6]=m*i+h*s+v*c,r[8]=b*n+x*a+y*f,r[9]=b*o+x*u+y*l,r[10]=b*i+x*s+y*c,r},translation:([e,t],r=new Float32Array(12))=>(r[0]=1,r[1]=0,r[2]=0,r[4]=0,r[5]=1,r[6]=0,r[8]=e,r[9]=t,r[10]=1,r),rotation(e,t=new Float32Array(12)){const r=Math.cos(e),n=Math.sin(e);return t[0]=r,t[1]=n,t[2]=0,t[4]=-n,t[5]=r,t[6]=0,t[8]=0,t[9]=0,t[10]=1,t},scaling:([e,t],r=new Float32Array(12))=>(r[0]=e,r[1]=0,r[2]=0,r[4]=0,r[5]=t,r[6]=0,r[8]=0,r[9]=0,r[10]=1,r),translate:(e,t,r=new Float32Array(12))=>i.multiply(e,i.translation(t),r),rotate:(e,t,r=new Float32Array(12))=>i.multiply(e,i.rotation(t),r),scale:(e,t,r=new Float32Array(12))=>i.multiply(e,i.scaling(t),r)},a=i,u="struct Uniforms {\n color: vec4f,\n matrix: mat3x3f,\n};\n\nstruct Vertex {\n @location(0) position: vec2f,\n};\n\nstruct VSOutput {\n @builtin(position) position: vec4f,\n};\n\n@group(0) @binding(0) var<uniform> uni: Uniforms;\n\n@vertex fn vs(vert: Vertex) -> VSOutput {\n var vsOut: VSOutput;\n\n let clipSpace = (uni.matrix * vec3f(vert.position, 1)).xy;\n vsOut.position = vec4f(clipSpace, 0.0, 1.0);\n return vsOut;\n}\n\n@fragment fn fs(vsOut: VSOutput) -> @location(0) vec4f {\n return uni.color;\n}\n",s="struct Uniforms {\n matrix: mat4x4f,\n zoom: f32,\n};\n\nstruct Vertex {\n @location(0) t: f32,\n @location(1) dir: f32,\n @location(2) segmentIndex: u32,\n};\n\n@group(0) @binding(0) var<uniform> u: Uniforms;\n\n@group(0) @binding(1) var<storage> points: array<vec2f>;\n\nstruct VSOutput {\n @builtin(position) position: vec4f,\n @location(0) color: vec4f,\n};\n\n@vertex fn vs(vert: Vertex) -> VSOutput {\n var vsOut: VSOutput;\n \n let p1 = points[vert.segmentIndex * 4 + 0];\n let p2 = points[vert.segmentIndex * 4 + 1];\n let p3 = points[vert.segmentIndex * 4 + 2];\n let p4 = points[vert.segmentIndex * 4 + 3];\n\n let t2 = vert.t * vert.t;\n let one_minus_t = 1.0 - vert.t;\n let one_minus_t2 = one_minus_t * one_minus_t;\n let pos = p1 * one_minus_t2 * one_minus_t + p2 * 3.0 * vert.t * one_minus_t2 + p3 * 3.0 * t2 * one_minus_t + p4 * t2 * vert.t;\n\n let angle = one_minus_t2 * (p2 - p1) + 2.0 * vert.t * one_minus_t * (p3 - p2) + t2 * (p4 - p3);\n let angleNorm = normalize(angle) * 5 / u.zoom;\n let transPos = vec2(pos.x - angleNorm.y * vert.dir, pos.y + angleNorm.x * vert.dir);\n let clipSpace = (u.matrix * vec4f(transPos, 1, 1));\n vsOut.position = clipSpace;\n vsOut.color = vec4f(f32(vert.segmentIndex) % 3, (f32(vert.segmentIndex) + 1) % 3, (f32(vert.segmentIndex) + 2) % 3, 1);\n\n return vsOut;\n}\n\n@fragment fn fs(vsOut: VSOutput) -> @location(0) vec4f {\n return vsOut.color;\n}\n",f="struct Uniforms {\n matrix: mat4x4f,\n};\n\nstruct Vertex {\n @location(0) position: vec4f,\n @location(1) texcoord: vec2f,\n};\n\nstruct VSOutput {\n @builtin(position) position: vec4f,\n @location(0) texcoord: vec2f,\n};\n\n@group(0) @binding(0) var<uniform> uni: Uniforms;\n\n@vertex fn vs(vert: Vertex) -> VSOutput {\n var vsOut: VSOutput;\n vsOut.position = uni.matrix * vert.position;\n vsOut.texcoord = vert.texcoord;\n return vsOut;\n}\n\n@group(0) @binding(1) var ourSampler: sampler;\n@group(0) @binding(2) var ourTexture: texture_2d<f32>;\n\n@fragment fn fs(vsOut: VSOutput) -> @location(0) vec4f {\n return textureSample(ourTexture, ourSampler, vsOut.texcoord);\n}\n",l="struct Uniforms {\n matrix: mat4x4f,\n};\n\nstruct Vertex {\n @location(0) position: vec4f,\n};\n\nstruct VSOutput {\n @builtin(position) position: vec4f,\n @location(0) color: vec4f,\n};\n\n@group(0) @binding(0) var<uniform> uni: Uniforms;\n\n@vertex fn vs(\n vert: Vertex,\n @builtin(vertex_index) vertexIndex : u32,\n // @builtin(instance_index) instanceIndex: u32\n ) -> VSOutput {\n var vsOut: VSOutput;\n vsOut.position = uni.matrix * vert.position;\n vsOut.color = vec4f(f32(vertexIndex) % 3, (f32(vertexIndex) + 1) % 3, (f32(vertexIndex) + 2) % 3, 1);\n return vsOut;\n}\n\n\n@fragment fn fs(vsOut: VSOutput) -> @location(0) vec4f {\n return vsOut.color;\n}\n",c="struct Uniforms {\n normalMatrix: mat3x3f,\n worldViewProjection: mat4x4f,\n lightColor: vec4f,\n lightDirection: vec3f,\n};\n\nstruct Vertex {\n @location(0) position: vec4f,\n @location(1) normal: vec3f,\n};\n\nstruct VSOutput {\n @builtin(position) position: vec4f,\n @location(0) color: vec4f,\n @location(1) normal: vec3f,\n};\n\n@group(0) @binding(0) var<uniform> uni: Uniforms;\n\n@vertex fn vs(\n vert: Vertex,\n @builtin(vertex_index) vertexIndex : u32,\n // @builtin(instance_index) instanceIndex: u32\n ) -> VSOutput {\n var vsOut: VSOutput;\n vsOut.position = uni.worldViewProjection * vert.position;\n vsOut.normal = uni.normalMatrix * vert.normal;\n vsOut.color = vec4f(f32(vertexIndex) % 3, (f32(vertexIndex) + 1) % 3, (f32(vertexIndex) + 2) % 3, 1);\n\n return vsOut;\n}\n\n\n@fragment fn fs(vsOut: VSOutput) -> @location(0) vec4f {\n // Because vsOut.normal is an inter-stage variable \n // it's interpolated so it will not be a unit vector.\n // Normalizing it will make it a unit vector again\n let normal = normalize(vsOut.normal);\n \n // Compute the light by taking the dot product\n // of the normal to the light's reverse direction\n let light = dot(normal, -uni.lightDirection);\n \n // Lets multiply just the color portion (not the alpha)\n // by the light\n let color = vec3f(0.23) + uni.lightColor.rgb * light;\n // let color = vsOut.color.rgb * 0.5 + uni.lightColor.rgb * light;\n return vec4f(color, vsOut.color.a);\n}\n",d="struct Params {\n filterDim : i32,\n blockDim : u32,\n}\n\n@group(0) @binding(0) var samp : sampler;\n@group(0) @binding(1) var<uniform> params : Params;\n@group(1) @binding(1) var inputTex : texture_2d<f32>;\n@group(1) @binding(2) var outputTex : texture_storage_2d<rgba8unorm, write>;\n\nstruct Flip {\n value : u32,\n}\n@group(1) @binding(3) var<uniform> flip : Flip;\n\n// This shader blurs the input texture in one direction, depending on whether\n// |flip.value| is 0 or 1.\n// It does so by running (128 / 4) threads per workgroup to load 128\n// texels into 4 rows of shared memory. Each thread loads a\n// 4 x 4 block of texels to take advantage of the texture sampling\n// hardware.\n// Then, each thread computes the blur result by averaging the adjacent texel values\n// in shared memory.\n// Because we're operating on a subset of the texture, we cannot compute all of the\n// results since not all of the neighbors are available in shared memory.\n// Specifically, with 128 x 128 tiles, we can only compute and write out\n// square blocks of size 128 - (filterSize - 1). We compute the number of blocks\n// needed in Javascript and dispatch that amount.\n\n// 128/4 = 32 -> number of threads per working group\n// does it in 4x4 block of texels(takes advantage of texture sampling hardware)\n// with this beign said, we don't have all the neighbours, only this block\n// That's why we can only compute & write out blocks of size 128 - (filterSize - 1)\nvar<workgroup> tile : array<array<vec3<f32>, 128>, 4>;\n\n@compute @workgroup_size(32, 1, 1)\nfn main(\n @builtin(workgroup_id) WorkGroupID : vec3<u32>,\n @builtin(local_invocation_id) LocalInvocationID : vec3<u32>\n) {\n let filterOffset = (params.filterDim - 1) / 2;\n let dims = vec2<i32>(textureDimensions(inputTex, 0));\n let baseIndex = vec2<i32>(WorkGroupID.xy * vec2(params.blockDim, 4) + // it's just the index of the first texel in a group\n LocalInvocationID.xy * vec2(4, 1)) // <0, 128>\n - vec2(filterOffset, 0);\n // baseIndex = xy of first texel of group\n for (var r = 0; r < 4; r++) {\n for (var c = 0; c < 4; c++) {\n var loadIndex = baseIndex + vec2(c, r);\n if (flip.value != 0) {\n loadIndex = loadIndex.yx;\n }\n\n tile[r][4 * LocalInvocationID.x + u32(c)] = textureSampleLevel(\n inputTex,\n samp,\n (vec2<f32>(loadIndex) + vec2<f32>(0.25, 0.25)) / vec2<f32>(dims),\n 0.0\n ).rgb;\n }\n }\n\n workgroupBarrier();\n // helps coordinate access to read-write memory\n // so all threads(32) will wait to hit this barrer, and then start form here together\n\n for (var r = 0; r < 4; r++) {\n for (var c = 0; c < 4; c++) {\n var writeIndex = baseIndex + vec2(c, r);\n if (flip.value != 0) {\n writeIndex = writeIndex.yx;\n }\n\n let center = i32(4 * LocalInvocationID.x) + c;\n if (center >= filterOffset &&\n center < 128 - filterOffset &&\n all(writeIndex < dims)) {\n var acc = vec3(0.0, 0.0, 0.0);\n for (var f = 0; f < params.filterDim; f++) {\n var i = center + f - filterOffset;\n acc = acc + (1.0 / f32(params.filterDim)) * tile[r][i];\n }\n textureStore(outputTex, writeIndex, vec4(acc, 1.0));\n }\n }\n }\n}\n",p=128,g=[4,4],m="struct Vertex {\n @location(0) position: vec4f,\n @location(1) uv: vec2f,\n};\n\nstruct Uniforms {\n worldViewProjection: mat4x4f,\n};\n\nstruct VertexOutput {\n @builtin(position) position: vec4f,\n @location(0) texCoord: vec2f,\n};\n\n@group(0) @binding(0) var<uniform> u: Uniforms;\n@group(0) @binding(1) var ourSampler: sampler;\n@group(0) @binding(2) var ourTexture: texture_2d<f32>;\n\n@vertex fn vs(vert: Vertex) -> VertexOutput {\n var out: VertexOutput;\n // maybe we should pass offsets from the position instead of... position?\n out.position = u.worldViewProjection * vert.position;\n out.texCoord = vert.uv;\n \n return out;\n}\n\n@fragment fn fs(in: VertexOutput) -> @location(0) vec4f {\n let texel = textureSample(ourTexture, ourSampler, in.texCoord);\n return texel;\n}\n",h=6;let v,b,x,y,w,B,U,P;const O={cross(e,t,r=new Float32Array(3)){const n=e[1]*t[2]-e[2]*t[1],o=e[2]*t[0]-e[0]*t[2],i=e[0]*t[1]-e[1]*t[0];return r[0]=n,r[1]=o,r[2]=i,r},subtract:(e,t,r=new Float32Array(3))=>(r[0]=e[0]-t[0],r[1]=e[1]-t[1],r[2]=e[2]-t[2],r),normalize(e,t=new Float32Array(3)){const r=Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]);return r>1e-5?(t[0]=e[0]/r,t[1]=e[1]/r,t[2]=e[2]/r):(t[0]=0,t[1]=0,t[2]=0),t}},G={projection:(e,t,r,n)=>G.ortho(0,e,t,0,r,-r,n),perspective(e,t,r,n,o=new Float32Array(16)){const i=Math.tan(.5*Math.PI-.5*e),a=1/(r-n);return o[0]=i/t,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=i,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=n*a,o[11]=-1,o[12]=0,o[13]=0,o[14]=r*n*a,o[15]=0,o},ortho:(e,t,r,n,o,i,a=new Float32Array(16))=>(a[0]=2/(t-e),a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=2/(n-r),a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=1/(o-i),a[11]=0,a[12]=(t+e)/(e-t),a[13]=(n+r)/(r-n),a[14]=o/(o-i),a[15]=1,a),identity:(e=new Float32Array(16))=>(e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e),multiply(e,t,r=new Float32Array(16)){const n=t[0],o=t[1],i=t[2],a=t[3],u=t[4],s=t[5],f=t[6],l=t[7],c=t[8],d=t[9],p=t[10],g=t[11],m=t[12],h=t[13],v=t[14],b=t[15],x=e[0],y=e[1],w=e[2],B=e[3],U=e[4],P=e[5],O=e[6],G=e[7],S=e[8],I=e[9],T=e[10],V=e[11],_=e[12],A=e[13],F=e[14],M=e[15];return r[0]=n*x+o*U+i*S+a*_,r[1]=n*y+o*P+i*I+a*A,r[2]=n*w+o*O+i*T+a*F,r[3]=n*B+o*G+i*V+a*M,r[4]=u*x+s*U+f*S+l*_,r[5]=u*y+s*P+f*I+l*A,r[6]=u*w+s*O+f*T+l*F,r[7]=u*B+s*G+f*V+l*M,r[8]=c*x+d*U+p*S+g*_,r[9]=c*y+d*P+p*I+g*A,r[10]=c*w+d*O+p*T+g*F,r[11]=c*B+d*G+p*V+g*M,r[12]=m*x+h*U+v*S+b*_,r[13]=m*y+h*P+v*I+b*A,r[14]=m*w+h*O+v*T+b*F,r[15]=m*B+h*G+v*V+b*M,r},cameraAim(e,t,r,n=new Float32Array(16)){const o=O.normalize(O.subtract(e,t)),i=O.normalize(O.cross(r,o)),a=O.normalize(O.cross(o,i));return n[0]=i[0],n[1]=i[1],n[2]=i[2],n[3]=0,n[4]=a[0],n[5]=a[1],n[6]=a[2],n[7]=0,n[8]=o[0],n[9]=o[1],n[10]=o[2],n[11]=0,n[12]=e[0],n[13]=e[1],n[14]=e[2],n[15]=1,n},inverse(e,t=new Float32Array(16)){const r=e[0],n=e[1],o=e[2],i=e[3],a=e[4],u=e[5],s=e[6],f=e[7],l=e[8],c=e[9],d=e[10],p=e[11],g=e[12],m=e[13],h=e[14],v=e[15],b=d*v,x=h*p,y=s*v,w=h*f,B=s*p,U=d*f,P=o*v,O=h*i,G=o*p,S=d*i,I=o*f,T=s*i,V=l*m,_=g*c,A=a*m,F=g*u,M=a*c,z=l*u,D=r*m,L=g*n,C=r*c,E=l*n,R=r*u,q=a*n,k=b*u+w*c+B*m-(x*u+y*c+U*m),N=x*n+P*c+S*m-(b*n+O*c+G*m),Y=y*n+O*u+I*m-(w*n+P*u+T*m),j=U*n+G*u+T*c-(B*n+S*u+I*c),W=1/(r*k+a*N+l*Y+g*j);return t[0]=W*k,t[1]=W*N,t[2]=W*Y,t[3]=W*j,t[4]=W*(x*a+y*l+U*g-(b*a+w*l+B*g)),t[5]=W*(b*r+O*l+G*g-(x*r+P*l+S*g)),t[6]=W*(w*r+P*a+T*g-(y*r+O*a+I*g)),t[7]=W*(B*r+S*a+I*l-(U*r+G*a+T*l)),t[8]=W*(V*f+F*p+M*v-(_*f+A*p+z*v)),t[9]=W*(_*i+D*p+E*v-(V*i+L*p+C*v)),t[10]=W*(A*i+L*f+R*v-(F*i+D*f+q*v)),t[11]=W*(z*i+C*f+q*p-(M*i+E*f+R*p)),t[12]=W*(A*d+z*h+_*s-(M*h+V*s+F*d)),t[13]=W*(C*h+V*o+L*d-(D*d+E*h+_*o)),t[14]=W*(D*s+q*h+F*o-(R*h+A*o+L*s)),t[15]=W*(R*d+M*o+E*s-(C*s+q*d+z*o)),t},transpose:(e,t=new Float32Array(16))=>(t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15],t),aim(e,t,r,n=new Float32Array(16)){const o=O.normalize(O.subtract(t,e)),i=O.normalize(O.cross(r,o)),a=O.normalize(O.cross(o,i));return n[0]=i[0],n[1]=i[1],n[2]=i[2],n[3]=0,n[4]=a[0],n[5]=a[1],n[6]=a[2],n[7]=0,n[8]=o[0],n[9]=o[1],n[10]=o[2],n[11]=0,n[12]=e[0],n[13]=e[1],n[14]=e[2],n[15]=1,n},lookAt:(e,t,r,n)=>G.inverse(G.cameraAim(e,t,r,n),n),translation:([e,t,r],n=new Float32Array(16))=>(n[0]=1,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=1,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=1,n[11]=0,n[12]=e,n[13]=t,n[14]=r,n[15]=1,n),rotationX(e,t=new Float32Array(16)){const r=Math.cos(e),n=Math.sin(e);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=r,t[6]=n,t[7]=0,t[8]=0,t[9]=-n,t[10]=r,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},rotationY(e,t=new Float32Array(16)){const r=Math.cos(e),n=Math.sin(e);return t[0]=r,t[1]=0,t[2]=-n,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=n,t[9]=0,t[10]=r,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},rotationZ(e,t=new Float32Array(16)){const r=Math.cos(e),n=Math.sin(e);return t[0]=r,t[1]=n,t[2]=0,t[3]=0,t[4]=-n,t[5]=r,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},scaling:([e,t,r],n=new Float32Array(16))=>(n[0]=e,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=t,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=r,n[11]=0,n[12]=0,n[13]=0,n[14]=0,n[15]=1,n),translate:(e,t,r)=>G.multiply(e,G.translation(t),r),rotateX:(e,t,r)=>G.multiply(e,G.rotationX(t),r),rotateY:(e,t,r)=>G.multiply(e,G.rotationY(t),r),rotateZ:(e,t,r)=>G.multiply(e,G.rotationZ(t),r),scale:(e,t,r)=>G.multiply(e,G.scaling(t),r)},S=G;new Float32Array;const I=(...e)=>{const t=Math.max(...e);return 1+Math.log2(t)|0};function T(e,t,r){return Math.min(r,Math.max(t,e))}var V=function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{s(n.next(e))}catch(e){i(e)}}function u(e){try{s(n.throw(e))}catch(e){i(e)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,u)}s((n=n.apply(e,t||[])).next())}))};function _(e){return V(this,void 0,void 0,(function*(){const t=yield function(){return o(this,void 0,void 0,(function*(){if(!navigator.gpu)throw Error("this browser does not support WebGPU");const e=yield navigator.gpu.requestAdapter();if(!e)throw Error("this browser supports webgpu but it appears disabled");const t=yield e.requestDevice();return t.lost.then((e=>{console.error(`WebGPU device was lost: ${e.message}`),e.reason})),t}))}(),{State:i}=yield r.e(701).then(r.bind(r,701)),O=i.new(300,300),G=e.getContext("webgpu");if(!G)throw Error("WebGPU from canvas needs to be always provided");const V=navigator.gpu.getPreferredCanvasFormat();G.configure({device:t,format:V}),function(e,t){new ResizeObserver((e=>{for(const r of e)n(r.target,0|r.contentBoxSize[0].inlineSize,0|r.contentBoxSize[0].blockSize,t)})).observe(e),n(e,e.clientWidth,e.clientHeight,t)}(e,t),function(e,t){v=function(e,t){const r=e.createShaderModule({label:"triangle shader module",code:u}),n=e.createRenderPipeline({label:"triangle pipline",layout:"auto",vertex:{module:r,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:r,entryPoint:"fs",targets:[{format:t}]},depthStencil:{depthWriteEnabled:!1,depthCompare:"always",format:"depth24plus"}});return function(t,r,o){const i=e.createBuffer({label:"uniforms",size:64,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),u=new Float32Array(16),s=u.subarray(0,4),f=u.subarray(4,16);s.set([Math.random(),Math.random(),Math.random(),1]);const l=new Float32Array([500,100,800,400,200,400]),c=new Uint32Array([0,1,2]),d=e.createBuffer({label:"vertex buffer vertices",size:l.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(d,0,l);const p=e.createBuffer({label:"index buffer",size:c.byteLength,usage:GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(p,0,c);const g=e.createBindGroup({label:"bind group for object",layout:n.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:i}}]});t.setPipeline(n),t.setVertexBuffer(0,d),t.setIndexBuffer(p,"uint32"),f.set(r),a.translate(f,[o,0],f),e.queue.writeBuffer(i,0,u),t.setBindGroup(0,g),t.drawIndexed(3)}}(e,t),b=function(e,t){const r=e.createShaderModule({label:"bezier shader module",code:s}),n=e.createRenderPipeline({label:"bezier pipline",layout:"auto",primitive:{topology:"triangle-strip"},vertex:{module:r,entryPoint:"vs",buffers:[{arrayStride:4,attributes:[{shaderLocation:0,offset:0,format:"float32"}]},{arrayStride:4,attributes:[{shaderLocation:1,offset:0,format:"float32"}]},{arrayStride:4,attributes:[{shaderLocation:2,offset:0,format:"uint32"}]}]},fragment:{module:r,entryPoint:"fs",targets:[{format:t}]},depthStencil:{depthWriteEnabled:!1,depthCompare:"always",format:"depth24plus"}});return function(t,r,o,i,a,u,s){const f=4*o.length,l=e.createBuffer({label:"storage points",size:f,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),c=e.createBuffer({label:"uniforms",size:80,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),d=new Float32Array(20),p=d.subarray(0,16),g=d.subarray(16,17),m=e.createBindGroup({label:"bezier bind group for object",layout:n.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:c}},{binding:1,resource:{buffer:l}}]}),h=e.createBuffer({label:"bezier vertex buffer vertices",size:i.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(h,0,i);const v=e.createBuffer({label:"bezier vertex buffer vertices",size:a.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(v,0,a);const b=e.createBuffer({label:"bezier vertex buffer vertices",size:u.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(b,0,u),t.setPipeline(n),t.setVertexBuffer(0,h),t.setVertexBuffer(1,v),t.setVertexBuffer(2,b),p.set(r),g.set(new Float32Array([s])),e.queue.writeBuffer(c,0,d),e.queue.writeBuffer(l,0,o),t.setBindGroup(0,m),t.draw(i.length)}}(e,t),y=function(e,t){const r=e.createShaderModule({label:"3d model texture shader module",code:f}),n=e.createRenderPipeline({label:"3d model texture pipline",layout:"auto",vertex:{module:r,entryPoint:"vs",buffers:[{arrayStride:20,attributes:[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x2"}]}]},fragment:{module:r,entryPoint:"fs",targets:[{format:t}]},depthStencil:{depthWriteEnabled:!1,depthCompare:"always",format:"depth24plus"}});return function(t,r,o,i,a){const u=e.createSampler({magFilter:"linear",minFilter:"linear"}),s=e.createBuffer({label:"uniforms",size:64,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),f=new Float32Array(16),l=f.subarray(0,16),c=a.length,d=e.createBuffer({label:"3d model texture vertex buffer vertices",size:i.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(d,0,i);const p=e.createBuffer({label:"3d model texture index buffer",size:a.byteLength,usage:GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(p,0,a);const g=e.createBindGroup({label:"3d model texture bind group for object",layout:n.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:s}},{binding:1,resource:u},{binding:2,resource:o.createView()}]});t.setPipeline(n),t.setVertexBuffer(0,d),t.setIndexBuffer(p,"uint32"),l.set(r),e.queue.writeBuffer(s,0,f),t.setBindGroup(0,g),t.drawIndexed(c)}}(e,t),x=function(e,t){const r=e.createShaderModule({label:"3d model shader module",code:l}),n=e.createRenderPipeline({label:"3d model pipline",layout:"auto",vertex:{module:r,entryPoint:"vs",buffers:[{arrayStride:12,attributes:[{shaderLocation:0,offset:0,format:"float32x3"}]}]},fragment:{module:r,entryPoint:"fs",targets:[{format:t}]},primitive:{cullMode:"back"},depthStencil:{depthWriteEnabled:!0,depthCompare:"less",format:"depth24plus"}});return function(t,r,o,i){const a=e.createBuffer({label:"uniforms",size:64,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),u=new Float32Array(16),s=u.subarray(0,16),f=i.length,l=e.createBuffer({label:"vertex buffer vertices",size:o.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(l,0,o);const c=e.createBuffer({label:"index buffer",size:i.byteLength,usage:GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(c,0,i);const d=e.createBindGroup({label:"bind group for object",layout:n.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:a}}]});t.setPipeline(n),t.setVertexBuffer(0,l),t.setIndexBuffer(c,"uint32"),s.set(r),e.queue.writeBuffer(a,0,u),t.setBindGroup(0,d),t.drawIndexed(f)}}(e,t),w=function(e,t){const r=e.createShaderModule({label:"3d model light shader module",code:c}),n=e.createRenderPipeline({label:"3d model light pipline",layout:"auto",vertex:{module:r,entryPoint:"vs",buffers:[{arrayStride:24,attributes:[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x3"}]}]},fragment:{module:r,entryPoint:"fs",targets:[{format:t}]},primitive:{cullMode:"back"},depthStencil:{depthWriteEnabled:!0,depthCompare:"less",format:"depth24plus"}});return function(t,r,o,i){const{worldViewProjection:a,normalMatrix:u,lightColor:s,lightDirection:f}=r,l=e.createBuffer({label:"uniforms",size:144,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),c=new Float32Array(36),d=c.subarray(0,12),p=c.subarray(12,28),g=c.subarray(28,32),m=c.subarray(32,35),h=e.createBindGroup({label:"bind group for object",layout:n.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:l}}]}),v=i.length,b=e.createBuffer({label:"vertex buffer vertices",size:o.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(b,0,o);const x=e.createBuffer({label:"index buffer",size:i.byteLength,usage:GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(x,0,i),t.setPipeline(n),t.setVertexBuffer(0,b),t.setIndexBuffer(x,"uint32"),d.set(u),p.set(a),g.set(s),m.set(f),e.queue.writeBuffer(l,0,c),t.setBindGroup(0,h),t.drawIndexed(v)}}(e,t),B=function(e){const t=e.createShaderModule({label:"blur shader module",code:d}),r=e.createComputePipeline({layout:"auto",compute:{module:t,entryPoint:"main"}});return function(t,n){const o=[0,1].map((()=>e.createTexture({size:{width:t.width,height:t.height},format:"rgba8unorm",usage:GPUTextureUsage.COPY_DST|GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING}))),i=(()=>{const t=e.createBuffer({size:4,mappedAtCreation:!0,usage:GPUBufferUsage.UNIFORM});return new Uint32Array(t.getMappedRange())[0]=0,t.unmap(),t})(),a=(()=>{const t=e.createBuffer({size:4,mappedAtCreation:!0,usage:GPUBufferUsage.UNIFORM});return new Uint32Array(t.getMappedRange())[0]=1,t.unmap(),t})(),u=e.createBuffer({size:8,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.UNIFORM}),s=e.createSampler({magFilter:"linear",minFilter:"linear"}),f=e.createBindGroup({layout:r.getBindGroupLayout(0),entries:[{binding:0,resource:s},{binding:1,resource:{buffer:u}}]}),l=e.createBindGroup({layout:r.getBindGroupLayout(1),entries:[{binding:1,resource:t.createView()},{binding:2,resource:o[0].createView()},{binding:3,resource:{buffer:i}}]}),c=e.createBindGroup({layout:r.getBindGroupLayout(1),entries:[{binding:1,resource:o[0].createView()},{binding:2,resource:o[1].createView()},{binding:3,resource:{buffer:a}}]}),d=e.createBindGroup({layout:r.getBindGroupLayout(1),entries:[{binding:1,resource:o[1].createView()},{binding:2,resource:o[0].createView()},{binding:3,resource:{buffer:i}}]}),m=p-14;e.queue.writeBuffer(u,0,new Uint32Array([15,m]));const h=n.beginComputePass();h.setPipeline(r),h.setBindGroup(0,f),h.setBindGroup(1,l),h.dispatchWorkgroups(Math.ceil(t.width/m),Math.ceil(t.height/g[1])),h.setBindGroup(1,c),h.dispatchWorkgroups(Math.ceil(t.height/m),Math.ceil(t.width/g[1]));for(let e=0;e<1;++e)h.setBindGroup(1,d),h.dispatchWorkgroups(Math.ceil(t.width/m),Math.ceil(t.height/g[1])),h.setBindGroup(1,c),h.dispatchWorkgroups(Math.ceil(t.height/m),Math.ceil(t.width/g[1]));return h.end(),o[1]}}(e),U=function(e,t){const r=e.createShaderModule({label:"texture module",code:m}),n=e.createSampler({minFilter:"linear",magFilter:"linear"}),o=e.createRenderPipeline({label:"texture pipeline",layout:"auto",vertex:{module:r,entryPoint:"vs",buffers:[{arrayStride:4*h,attributes:[{shaderLocation:0,offset:0,format:"float32x4"},{shaderLocation:1,offset:16,format:"float32x2"}]}]},fragment:{module:r,entryPoint:"fs",targets:[{format:t}]}}),i=e.createBuffer({label:"uniforms",size:64,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),a=new Float32Array(16),u=a.subarray(0,16);return function(t,r,s,f){const l=Math.round(s.length/h),c=e.createBuffer({label:"vertex buffer vertices",size:s.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST});e.queue.writeBuffer(c,0,s);const d=e.createBindGroup({layout:o.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:i}},{binding:1,resource:n},{binding:2,resource:f.createView()}]});t.setPipeline(o),t.setVertexBuffer(0,c),u.set(r),e.queue.writeBuffer(i,0,a),t.setBindGroup(0,d),t.draw(l)}}(e,t)}(t,V);const _=[];return function(e,t,r,n,o,i){const a=function(e){return S.ortho(0,e.clientWidth,e.clientHeight,0,1,-1)}(t);requestAnimationFrame((function t(o){const u=n.createCommandEncoder(),s=function(e,t){const r=e.getCurrentTexture();return function(e,t,r){P&&P.width===t&&P.height===r||(null==P||P.destroy(),P=e.createTexture({size:[t,r],format:"depth24plus",usage:GPUTextureUsage.RENDER_ATTACHMENT}))}(t,r.width,r.height),{label:"our render to canvas renderPass",colorAttachments:[{view:r.createView(),clearValue:[0,0,0,1],loadOp:"clear",storeOp:"store"}]}}(r,n),f=u.beginRenderPass(s);let l=!1,c=0;for(;!l;){const{texture_id:t,vertex_data:r}=e.get_shader_input(c);c++,l=0===r.length,l||U(f,a,new Float32Array(r),i[t])}f.end();const d=u.finish();n.queue.submit([d]),requestAnimationFrame(t)}))}(O,e,G,t,0,_),{addImage:r=>{const n=_.length;_.push(function(e,t,r={}){const n=e.createTexture({format:"rgba8unorm",mipLevelCount:r.mips?I(t.width,t.height):1,size:[t.width,t.height],usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT});return function(e,t,r,{flipY:n,depthOrArrayLayers:o}={}){e.queue.copyExternalImageToTexture({source:r,flipY:n},{texture:t},{width:r.width,height:r.height,depthOrArrayLayers:o})}(e,n,t,r),n}(t,r)),console.log("env",r.width,e.width);const o=function(e,t){if(t.height-e.height<t.width-e.width)return T(e.height,.2*t.height,.8*t.height)/e.height;return T(e.width,.2*t.width,.8*t.width)/e.width}(r,e),i=r.width*o,a=r.height*o,u=.5*(e.width-i),s=.5*(e.height-a);O.add_texture([{x:u,y:s,u:0,v:0},{x:u+i,y:s,u:1,v:0},{x:u+i,y:s+a,u:1,v:1},{x:u,y:s+a,u:0,v:1}],n)},updatePoints:(e,t)=>{O.update_points(e,t)}}}))}}};var t=require("./test-runtime.63d51731843ade072b76.js");t.C(e),t(t.s=848)})()));
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,KAAK;IACpB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAElC,MAAM,WAAW,cAAe,SAAQ,KAAK;IAC3C,MAAM,EAAE,gBAAgB,GAAG,WAAW,CAAC;CACxC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atNormIndex.d.ts","sourceRoot":"","sources":["../../src/utils/atNormIndex.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,UAUnE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"captureCanvasStream.d.ts","sourceRoot":"","sources":["../../src/utils/captureCanvasStream.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,UAAU,EAAE,iBAAiB,cAW5E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=captureCanvasStreamWasm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"captureCanvasStreamWasm.d.ts","sourceRoot":"","sources":["../../src/utils/captureCanvasStreamWasm.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clamp.d.ts","sourceRoot":"","sources":["../../src/utils/clamp.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,UAEpE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"distancePointToLine.d.ts","sourceRoot":"","sources":["../../src/utils/distancePointToLine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAE7B,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,UAKzE"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @preserve JavaScript implementation of
|
|
3
|
+
* Algorithm for Automatically Fitting Digitized Curves
|
|
4
|
+
* by Philip J. Schneider
|
|
5
|
+
* "Graphics Gems", Academic Press, 1990
|
|
6
|
+
*
|
|
7
|
+
* The MIT License (MIT)
|
|
8
|
+
*
|
|
9
|
+
* https://github.com/soswow/fit-curves
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Fit one or more Bezier curves to a set of points.
|
|
13
|
+
*
|
|
14
|
+
* @param {Array<Array<Number>>} points - Array of digitized points, e.g. [[5,5],[5,50],[110,140],[210,160],[320,110]]
|
|
15
|
+
* @param {Number} maxError - Tolerance, squared error between points and fitted curve
|
|
16
|
+
* @returns {Array<Array<Array<Number>>>} Array of Bezier curves, where each element is [first-point, control-point-1, control-point-2, second-point] and points are [x, y]
|
|
17
|
+
*/
|
|
18
|
+
export default function fitCurve(points: Array<Array<number>>, maxError: number): Array<Array<Array<number>>>;
|
|
19
|
+
//# sourceMappingURL=fitCurve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fitCurve.d.ts","sourceRoot":"","sources":["../../src/utils/fitCurve.js"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;GAMG;AAEH,yCALW,KAAK,CAAC,KAAK,QAAQ,CAAC,qBAElB,KAAK,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,CAAC,CAmBvC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAngle.d.ts","sourceRoot":"","sources":["../../src/utils/getAngle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAE7B,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,UAEtD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAngleDiff.d.ts","sourceRoot":"","sources":["../../src/utils/getAngleDiff.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMxE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getBezierPos.d.ts","sourceRoot":"","sources":["../../src/utils/getBezierPos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAE7B,MAAM,CAAC,OAAO,UAAU,YAAY,CAClC,EAAE,EAAE,KAAK,EACT,EAAE,EAAE,KAAK,EACT,EAAE,EAAE,KAAK,EACT,EAAE,EAAE,KAAK,EACT,CAAC,EAAE,MAAM,GACR,KAAK,CAkBP"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getBezierTan.d.ts","sourceRoot":"","sources":["../../src/utils/getBezierTan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAG7B,MAAM,CAAC,OAAO,UAAU,YAAY,CAClC,EAAE,EAAE,KAAK,EACT,EAAE,EAAE,KAAK,EACT,EAAE,EAAE,KAAK,EACT,EAAE,EAAE,KAAK,EACT,CAAC,EAAE,MAAM,GACR,KAAK,CAeP"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getCurveLength.d.ts","sourceRoot":"","sources":["../../src/utils/getCurveLength.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAO7B,MAAM,CAAC,OAAO,UAAU,cAAc,CACpC,EAAE,EAAE,KAAK,EACT,EAAE,EAAE,KAAK,EACT,EAAE,EAAE,KAAK,EACT,EAAE,EAAE,KAAK,EACT,SAAS,EAAE,MAAM,GAChB,MAAM,EAAE,CAYV"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getDistance.d.ts","sourceRoot":"","sources":["../../src/utils/getDistance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAE7B,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,UAEvD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
declare const mat4: {
|
|
2
|
+
projection(width: number, height: number, depth: number, dst: Float32Array): Float32Array<ArrayBuffer>;
|
|
3
|
+
perspective(fieldOfViewYInRadians: number, aspect: number, zNear: number, zFar: number, dst?: Float32Array<ArrayBuffer>): Float32Array<ArrayBuffer>;
|
|
4
|
+
ortho(left: number, right: number, bottom: number, top: number, near: number, far: number, dst?: Float32Array<ArrayBuffer>): Float32Array<ArrayBuffer>;
|
|
5
|
+
identity(dst?: Float32Array<ArrayBuffer>): Float32Array<ArrayBuffer>;
|
|
6
|
+
multiply(a: Float32Array, b: Float32Array, dst?: Float32Array<ArrayBuffer>): Float32Array<ArrayBuffer>;
|
|
7
|
+
cameraAim(eye: number[] | Float32Array, target: number[], up: number[], dst?: Float32Array<ArrayBuffer>): Float32Array<ArrayBuffer>;
|
|
8
|
+
inverse(m: Float32Array, dst?: Float32Array<ArrayBuffer>): Float32Array<ArrayBuffer>;
|
|
9
|
+
transpose(m: Float32Array, dst?: Float32Array<ArrayBuffer>): Float32Array<ArrayBuffer>;
|
|
10
|
+
aim(eye: Float32Array | number[], target: number[], up: number[], dst?: Float32Array<ArrayBuffer>): Float32Array<ArrayBuffer>;
|
|
11
|
+
lookAt(eye: number[] | Float32Array, target: number[], up: number[], dst?: Float32Array): Float32Array<ArrayBuffer>;
|
|
12
|
+
translation([tx, ty, tz]: number[], dst?: Float32Array<ArrayBuffer>): Float32Array<ArrayBuffer>;
|
|
13
|
+
rotationX(angleInRadians: number, dst?: Float32Array<ArrayBuffer>): Float32Array<ArrayBuffer>;
|
|
14
|
+
rotationY(angleInRadians: number, dst?: Float32Array<ArrayBuffer>): Float32Array<ArrayBuffer>;
|
|
15
|
+
rotationZ(angleInRadians: number, dst?: Float32Array<ArrayBuffer>): Float32Array<ArrayBuffer>;
|
|
16
|
+
scaling([sx, sy, sz]: number[], dst?: Float32Array<ArrayBuffer>): Float32Array<ArrayBuffer>;
|
|
17
|
+
translate(m: Float32Array, translation: number[], dst?: Float32Array): Float32Array<ArrayBuffer>;
|
|
18
|
+
rotateX(m: Float32Array, angleInRadians: number, dst?: Float32Array): Float32Array<ArrayBuffer>;
|
|
19
|
+
rotateY(m: Float32Array, angleInRadians: number, dst?: Float32Array): Float32Array<ArrayBuffer>;
|
|
20
|
+
rotateZ(m: Float32Array, angleInRadians: number, dst?: Float32Array): Float32Array<ArrayBuffer>;
|
|
21
|
+
scale(m: Float32Array, scale: number[], dst?: Float32Array): Float32Array<ArrayBuffer>;
|
|
22
|
+
};
|
|
23
|
+
export default mat4;
|
|
24
|
+
//# sourceMappingURL=mat4.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mat4.d.ts","sourceRoot":"","sources":["../../src/utils/mat4.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,IAAI;sBACU,MAAM,UAAU,MAAM,SAAS,MAAM,OAAO,YAAY;uCAKvC,MAAM,UAAU,MAAM,SAAS,MAAM,QAAQ,MAAM;gBA2B1E,MAAM,SAAS,MAAM,UAAU,MAAM,OAAO,MAAM,QAAQ,MAAM,OAAO,MAAM;;gBAgC7E,YAAY,KAAK,YAAY;mBAyD1B,MAAM,EAAE,GAAG,YAAY,UAAU,MAAM,EAAE,MAAM,MAAM,EAAE;eAa3D,YAAY;iBAwFV,YAAY;aAShB,YAAY,GAAG,MAAM,EAAE,UAAU,MAAM,EAAE,MAAM,MAAM,EAAE;gBAapD,MAAM,EAAE,GAAG,YAAY,UAAU,MAAM,EAAE,MAAM,MAAM,EAAE,QAAQ,YAAY;8BAI7D,MAAM,EAAE;8BAQR,MAAM;8BAUN,MAAM;8BAUN,MAAM;0BAUV,MAAM,EAAE;iBAQjB,YAAY,eAAe,MAAM,EAAE,QAAQ,YAAY;eAIzD,YAAY,kBAAkB,MAAM,QAAQ,YAAY;eAIxD,YAAY,kBAAkB,MAAM,QAAQ,YAAY;eAIxD,YAAY,kBAAkB,MAAM,QAAQ,YAAY;aAI1D,YAAY,SAAS,MAAM,EAAE,QAAQ,YAAY;CAG3D,CAAA;AAED,eAAe,IAAI,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalizeVec2.d.ts","sourceRoot":"","sources":["../../src/utils/normalizeVec2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAE7B,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,GAAG,EAAE,KAAK,GAAG,KAAK,CAMvD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resizeArray.d.ts","sourceRoot":"","sources":["../../src/utils/resizeArray.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,YASnE"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
declare const vec3: {
|
|
2
|
+
cross(a: number[] | Float32Array, b: number[] | Float32Array, dst?: Float32Array<ArrayBuffer>): Float32Array<ArrayBuffer>;
|
|
3
|
+
subtract(a: number[] | Float32Array, b: number[] | Float32Array, dst?: Float32Array<ArrayBuffer>): Float32Array<ArrayBuffer>;
|
|
4
|
+
normalize(v: number[] | Float32Array, dst?: Float32Array<ArrayBuffer>): Float32Array<ArrayBuffer>;
|
|
5
|
+
};
|
|
6
|
+
export default vec3;
|
|
7
|
+
//# sourceMappingURL=vec3.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vec3.d.ts","sourceRoot":"","sources":["../../src/utils/vec3.ts"],"names":[],"mappings":"AACA,QAAA,MAAM,IAAI;aACC,MAAM,EAAE,GAAG,YAAY,KAAK,MAAM,EAAE,GAAG,YAAY;gBAYhD,MAAM,EAAE,GAAG,YAAY,KAAK,MAAM,EAAE,GAAG,YAAY;iBAQjD,MAAM,EAAE,GAAG,YAAY;CAetC,CAAA;AAED,eAAe,IAAI,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mateuszjs/magic-render",
|
|
3
3
|
"description": "Initial version of visual editor",
|
|
4
|
-
"version": "0.0.1-next.
|
|
4
|
+
"version": "0.0.1-next.2",
|
|
5
5
|
"author": "Mateusz Walendzik",
|
|
6
6
|
"engines": {
|
|
7
7
|
"node": ">=20.8.1"
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"access": "public",
|
|
11
11
|
"provenance": true
|
|
12
12
|
},
|
|
13
|
+
"typings": "./lib/main.d.ts",
|
|
13
14
|
"release": {
|
|
14
15
|
"branches": [
|
|
15
16
|
"main",
|
|
@@ -21,7 +22,7 @@
|
|
|
21
22
|
},
|
|
22
23
|
"scripts": {
|
|
23
24
|
"start": "export NODE_ENV=development && webpack serve --open",
|
|
24
|
-
"build": "export $(grep -v '^#' .env | xargs) && export NODE_ENV=production && webpack",
|
|
25
|
+
"build": "export $(grep -v '^#' .env | xargs) && export NODE_ENV=production && webpack && tsc --project tsconfig.build.json --emitDeclarationOnly ",
|
|
25
26
|
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
|
|
26
27
|
"test-e2e": "npx playwright test",
|
|
27
28
|
"format": "eslint --fix \"src/**/*.{ts,js}\" \"integration-tests/**/*.{ts,js}\""
|
|
@@ -52,7 +53,9 @@
|
|
|
52
53
|
"dependencies": {
|
|
53
54
|
"@wasm-tool/wasm-pack-plugin": "^1.7.0"
|
|
54
55
|
},
|
|
55
|
-
"
|
|
56
|
+
"types": "dist/index.d.ts",
|
|
57
|
+
"main": "dist/index.js",
|
|
58
|
+
"module": "dist/index.esm.js",
|
|
56
59
|
"repository": {
|
|
57
60
|
"type": "git",
|
|
58
61
|
"url": "git+ssh://git@github.com/mateuszJS/magic-render.git"
|
|
@@ -63,6 +66,6 @@
|
|
|
63
66
|
},
|
|
64
67
|
"homepage": "https://github.com/mateuszJS/magic-render#readme",
|
|
65
68
|
"files": [
|
|
66
|
-
"dist"
|
|
69
|
+
"dist/**/*"
|
|
67
70
|
]
|
|
68
71
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_mateuszjs_magic_render=self.webpackChunk_mateuszjs_magic_render||[]).push([[701],{701:(e,t,n)=>{n.a(e,(async(e,_)=>{try{n.r(t),n.d(t,{State:()=>i.Uw,__wbg_error_53abcd6a461f73d8:()=>i.$X,__wbg_new_034f913e7636e987:()=>i.x4,__wbg_new_e69b5f66fda8f13c:()=>i.YV,__wbg_set_20cbc34131e76824:()=>i.H0,__wbg_set_425e70f7c64ac962:()=>i.Ls,__wbg_set_wasm:()=>i.lI,__wbg_stringify_eead5648c09faaf8:()=>i.Yg,__wbindgen_init_externref_table:()=>i.bL,__wbindgen_is_undefined:()=>i.vU,__wbindgen_number_new:()=>i.QR,__wbindgen_string_get:()=>i.qN,__wbindgen_string_new:()=>i.yc,__wbindgen_throw:()=>i.Qn});var r=n(962),i=n(895),o=e([r]);r=(o.then?(await o)():o)[0],(0,i.lI)(r),r.__wbindgen_start(),_()}catch(e){_(e)}}))},895:(e,t,n)=>{let _;function r(e){_=e}n.d(t,{$X:()=>T,H0:()=>m,Ls:()=>I,QR:()=>x,Qn:()=>Q,Uw:()=>b,YV:()=>y,Yg:()=>h,bL:()=>U,lI:()=>r,qN:()=>L,vU:()=>l,x4:()=>v,yc:()=>p});let i=new("undefined"==typeof TextDecoder?(0,module.require)("util").TextDecoder:TextDecoder)("utf-8",{ignoreBOM:!0,fatal:!0});i.decode();let o=null;function c(){return null!==o&&0!==o.byteLength||(o=new Uint8Array(_.memory.buffer)),o}function s(e,t){return e>>>=0,i.decode(c().subarray(e,e+t))}let u=0,d=new("undefined"==typeof TextEncoder?(0,module.require)("util").TextEncoder:TextEncoder)("utf-8");const a="function"==typeof d.encodeInto?function(e,t){return d.encodeInto(e,t)}:function(e,t){const n=d.encode(e);return t.set(n),{read:e.length,written:n.length}};let f=null;function w(){return(null===f||!0===f.buffer.detached||void 0===f.buffer.detached&&f.buffer!==_.memory.buffer)&&(f=new DataView(_.memory.buffer)),f}const g="undefined"==typeof FinalizationRegistry?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>_.__wbg_state_free(e>>>0,1)));class b{static __wrap(e){e>>>=0;const t=Object.create(b.prototype);return t.__wbg_ptr=e,g.register(t,t.__wbg_ptr,t),t}__destroy_into_raw(){const e=this.__wbg_ptr;return this.__wbg_ptr=0,g.unregister(this),e}free(){const e=this.__destroy_into_raw();_.__wbg_state_free(e,0)}static new(e,t){const n=_.state_new(e,t);return b.__wrap(n)}add_texture(e,t){_.state_add_texture(this.__wbg_ptr,e,t)}get_shader_input(e){return _.state_get_shader_input(this.__wbg_ptr,e)}update_points(e,t){_.state_update_points(this.__wbg_ptr,e,t)}}function l(e){return void 0===e}function h(){return function(e,t){try{return e.apply(this,t)}catch(e){const t=function(e){const t=_.__externref_table_alloc();return _.__wbindgen_export_2.set(t,e),t}(e);_.__wbindgen_exn_store(t)}}((function(e){return JSON.stringify(e)}),arguments)}function p(e,t){return s(e,t)}function y(){return new Object}function x(e){return e}function m(e,t,n){e[t]=n}function v(){return new Array}function I(e,t,n){e[t>>>0]=n}function L(e,t){const n="string"==typeof t?t:void 0;var r=null==n?0:function(e,t,n){if(void 0===n){const n=d.encode(e),_=t(n.length,1)>>>0;return c().subarray(_,_+n.length).set(n),u=n.length,_}let _=e.length,r=t(_,1)>>>0;const i=c();let o=0;for(;o<_;o++){const t=e.charCodeAt(o);if(t>127)break;i[r+o]=t}if(o!==_){0!==o&&(e=e.slice(o)),r=n(r,_,_=o+3*e.length,1)>>>0;const t=c().subarray(r+o,r+_);o+=a(e,t).written,r=n(r,_,o,1)>>>0}return u=o,r}(n,_.__wbindgen_malloc,_.__wbindgen_realloc),i=u;w().setInt32(e+4,i,!0),w().setInt32(e+0,r,!0)}function Q(e,t){throw new Error(s(e,t))}const T="function"==typeof console.error?console.error:()=>{throw new Error("console.error is not defined")};function U(){const e=_.__wbindgen_export_2,t=e.grow(4);e.set(0,void 0),e.set(t+0,void 0),e.set(t+1,null),e.set(t+2,!0),e.set(t+3,!1)}},962:(e,t,n)=>{var _=n(895);e.exports=n.v(t,e.id,"2e9c8dbbfc49aa9c830e",{"./index_bg.js":{__wbindgen_is_undefined:_.vU,__wbg_stringify_eead5648c09faaf8:_.Yg,__wbindgen_string_new:_.yc,__wbg_new_e69b5f66fda8f13c:_.YV,__wbindgen_number_new:_.QR,__wbg_set_20cbc34131e76824:_.H0,__wbg_new_034f913e7636e987:_.x4,__wbg_set_425e70f7c64ac962:_.Ls,__wbindgen_string_get:_.qN,__wbindgen_throw:_.Qn,__wbg_error_53abcd6a461f73d8:_.$X,__wbindgen_init_externref_table:_.bL}})}}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_mateuszjs_magic_render=self.webpackChunk_mateuszjs_magic_render||[]).push([[57],{845:(e,s,a)=>{new Float32Array}},e=>{e(e.s=845)}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(()=>{"use strict";var e,r,t,a,n,o,i,s={},c={};function l(e){var r=c[e];if(void 0!==r)return r.exports;var t=c[e]={id:e,exports:{}};return s[e](t,t.exports,l),t.exports}l.m=s,e="function"==typeof Symbol?Symbol("webpack queues"):"__webpack_queues__",r="function"==typeof Symbol?Symbol("webpack exports"):"__webpack_exports__",t="function"==typeof Symbol?Symbol("webpack error"):"__webpack_error__",a=e=>{e&&e.d<1&&(e.d=1,e.forEach((e=>e.r--)),e.forEach((e=>e.r--?e.r++:e())))},l.a=(n,o,i)=>{var s;i&&((s=[]).d=-1);var c,l,u,p=new Set,f=n.exports,d=new Promise(((e,r)=>{u=r,l=e}));d[r]=f,d[e]=e=>(s&&e(s),p.forEach(e),d.catch((e=>{}))),n.exports=d,o((n=>{var o;c=(n=>n.map((n=>{if(null!==n&&"object"==typeof n){if(n[e])return n;if(n.then){var o=[];o.d=0,n.then((e=>{i[r]=e,a(o)}),(e=>{i[t]=e,a(o)}));var i={};return i[e]=e=>e(o),i}}var s={};return s[e]=e=>{},s[r]=n,s})))(n);var i=()=>c.map((e=>{if(e[t])throw e[t];return e[r]})),l=new Promise((r=>{(o=()=>r(i)).r=0;var t=e=>e!==s&&!p.has(e)&&(p.add(e),e&&!e.d&&(o.r++,e.push(o)));c.map((r=>r[e](t)))}));return o.r?l:i()}),(e=>(e?u(d[t]=e):l(f),a(s)))),s&&s.d<0&&(s.d=0)},n=[],l.O=(e,r,t,a)=>{if(!r){var o=1/0;for(u=0;u<n.length;u++){for(var[r,t,a]=n[u],i=!0,s=0;s<r.length;s++)(!1&a||o>=a)&&Object.keys(l.O).every((e=>l.O[e](r[s])))?r.splice(s--,1):(i=!1,a<o&&(o=a));if(i){n.splice(u--,1);var c=t();void 0!==c&&(e=c)}}return e}a=a||0;for(var u=n.length;u>0&&n[u-1][2]>a;u--)n[u]=n[u-1];n[u]=[r,t,a]},l.d=(e,r)=>{for(var t in r)l.o(r,t)&&!l.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},l.f={},l.e=e=>Promise.all(Object.keys(l.f).reduce(((r,t)=>(l.f[t](e,r),r)),[])),l.u=e=>e+".8865a3847df7a00b654f.js",l.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),l.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),o={},i="@mateuszjs/magic-render:",l.l=(e,r,t,a)=>{if(o[e])o[e].push(r);else{var n,s;if(void 0!==t)for(var c=document.getElementsByTagName("script"),u=0;u<c.length;u++){var p=c[u];if(p.getAttribute("src")==e||p.getAttribute("data-webpack")==i+t){n=p;break}}n||(s=!0,(n=document.createElement("script")).charset="utf-8",n.timeout=120,l.nc&&n.setAttribute("nonce",l.nc),n.setAttribute("data-webpack",i+t),n.src=e),o[e]=[r];var f=(r,t)=>{n.onerror=n.onload=null,clearTimeout(d);var a=o[e];if(delete o[e],n.parentNode&&n.parentNode.removeChild(n),a&&a.forEach((e=>e(t))),r)return r(t)},d=setTimeout(f.bind(null,void 0,{type:"timeout",target:n}),12e4);n.onerror=f.bind(null,n.onerror),n.onload=f.bind(null,n.onload),s&&document.head.appendChild(n)}},l.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.v=(e,r,t,a)=>{var n=fetch(l.p+""+t+".module.wasm"),o=()=>n.then((e=>e.arrayBuffer())).then((e=>WebAssembly.instantiate(e,a))).then((r=>Object.assign(e,r.instance.exports)));return n.then((r=>"function"==typeof WebAssembly.instantiateStreaming?WebAssembly.instantiateStreaming(r,a).then((r=>Object.assign(e,r.instance.exports)),(e=>{if("application/wasm"!==r.headers.get("Content-Type"))return console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",e),o();throw e})):o()))},(()=>{var e;l.g.importScripts&&(e=l.g.location+"");var r=l.g.document;if(!e&&r&&(r.currentScript&&"SCRIPT"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var a=t.length-1;a>-1&&(!e||!/^http(s?):/.test(e));)e=t[a--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),l.p=e})(),(()=>{var e={121:0};l.f.j=(r,t)=>{var a=l.o(e,r)?e[r]:void 0;if(0!==a)if(a)t.push(a[2]);else if(121!=r){var n=new Promise(((t,n)=>a=e[r]=[t,n]));t.push(a[2]=n);var o=l.p+l.u(r),i=new Error;l.l(o,(t=>{if(l.o(e,r)&&(0!==(a=e[r])&&(e[r]=void 0),a)){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;i.message="Loading chunk "+r+" failed.\n("+n+": "+o+")",i.name="ChunkLoadError",i.type=n,i.request=o,a[1](i)}}),"chunk-"+r,r)}else e[r]=0},l.O.j=r=>0===e[r];var r=(r,t)=>{var a,n,[o,i,s]=t,c=0;if(o.some((r=>0!==e[r]))){for(a in i)l.o(i,a)&&(l.m[a]=i[a]);if(s)var u=s(l)}for(r&&r(t);c<o.length;c++)n=o[c],l.o(e,n)&&e[n]&&e[n][0](),e[n]=0;return l.O(u)},t=self.webpackChunk_mateuszjs_magic_render=self.webpackChunk_mateuszjs_magic_render||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})()})();
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(()=>{"use strict";var e,r,t,a,n,o,i,s={},c={};function l(e){var r=c[e];if(void 0!==r)return r.exports;var t=c[e]={id:e,exports:{}};return s[e](t,t.exports,l),t.exports}l.m=s,e="function"==typeof Symbol?Symbol("webpack queues"):"__webpack_queues__",r="function"==typeof Symbol?Symbol("webpack exports"):"__webpack_exports__",t="function"==typeof Symbol?Symbol("webpack error"):"__webpack_error__",a=e=>{e&&e.d<1&&(e.d=1,e.forEach((e=>e.r--)),e.forEach((e=>e.r--?e.r++:e())))},l.a=(n,o,i)=>{var s;i&&((s=[]).d=-1);var c,l,u,p=new Set,f=n.exports,d=new Promise(((e,r)=>{u=r,l=e}));d[r]=f,d[e]=e=>(s&&e(s),p.forEach(e),d.catch((e=>{}))),n.exports=d,o((n=>{var o;c=(n=>n.map((n=>{if(null!==n&&"object"==typeof n){if(n[e])return n;if(n.then){var o=[];o.d=0,n.then((e=>{i[r]=e,a(o)}),(e=>{i[t]=e,a(o)}));var i={};return i[e]=e=>e(o),i}}var s={};return s[e]=e=>{},s[r]=n,s})))(n);var i=()=>c.map((e=>{if(e[t])throw e[t];return e[r]})),l=new Promise((r=>{(o=()=>r(i)).r=0;var t=e=>e!==s&&!p.has(e)&&(p.add(e),e&&!e.d&&(o.r++,e.push(o)));c.map((r=>r[e](t)))}));return o.r?l:i()}),(e=>(e?u(d[t]=e):l(f),a(s)))),s&&s.d<0&&(s.d=0)},n=[],l.O=(e,r,t,a)=>{if(!r){var o=1/0;for(u=0;u<n.length;u++){for(var[r,t,a]=n[u],i=!0,s=0;s<r.length;s++)(!1&a||o>=a)&&Object.keys(l.O).every((e=>l.O[e](r[s])))?r.splice(s--,1):(i=!1,a<o&&(o=a));if(i){n.splice(u--,1);var c=t();void 0!==c&&(e=c)}}return e}a=a||0;for(var u=n.length;u>0&&n[u-1][2]>a;u--)n[u]=n[u-1];n[u]=[r,t,a]},l.d=(e,r)=>{for(var t in r)l.o(r,t)&&!l.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},l.f={},l.e=e=>Promise.all(Object.keys(l.f).reduce(((r,t)=>(l.f[t](e,r),r)),[])),l.u=e=>e+".8865a3847df7a00b654f.js",l.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),l.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),o={},i="@mateuszjs/magic-render:",l.l=(e,r,t,a)=>{if(o[e])o[e].push(r);else{var n,s;if(void 0!==t)for(var c=document.getElementsByTagName("script"),u=0;u<c.length;u++){var p=c[u];if(p.getAttribute("src")==e||p.getAttribute("data-webpack")==i+t){n=p;break}}n||(s=!0,(n=document.createElement("script")).charset="utf-8",n.timeout=120,l.nc&&n.setAttribute("nonce",l.nc),n.setAttribute("data-webpack",i+t),n.src=e),o[e]=[r];var f=(r,t)=>{n.onerror=n.onload=null,clearTimeout(d);var a=o[e];if(delete o[e],n.parentNode&&n.parentNode.removeChild(n),a&&a.forEach((e=>e(t))),r)return r(t)},d=setTimeout(f.bind(null,void 0,{type:"timeout",target:n}),12e4);n.onerror=f.bind(null,n.onerror),n.onload=f.bind(null,n.onload),s&&document.head.appendChild(n)}},l.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.v=(e,r,t,a)=>{var n=fetch(l.p+""+t+".module.wasm"),o=()=>n.then((e=>e.arrayBuffer())).then((e=>WebAssembly.instantiate(e,a))).then((r=>Object.assign(e,r.instance.exports)));return n.then((r=>"function"==typeof WebAssembly.instantiateStreaming?WebAssembly.instantiateStreaming(r,a).then((r=>Object.assign(e,r.instance.exports)),(e=>{if("application/wasm"!==r.headers.get("Content-Type"))return console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",e),o();throw e})):o()))},(()=>{var e;l.g.importScripts&&(e=l.g.location+"");var r=l.g.document;if(!e&&r&&(r.currentScript&&"SCRIPT"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var a=t.length-1;a>-1&&(!e||!/^http(s?):/.test(e));)e=t[a--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),l.p=e})(),(()=>{var e={356:0};l.f.j=(r,t)=>{var a=l.o(e,r)?e[r]:void 0;if(0!==a)if(a)t.push(a[2]);else if(356!=r){var n=new Promise(((t,n)=>a=e[r]=[t,n]));t.push(a[2]=n);var o=l.p+l.u(r),i=new Error;l.l(o,(t=>{if(l.o(e,r)&&(0!==(a=e[r])&&(e[r]=void 0),a)){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;i.message="Loading chunk "+r+" failed.\n("+n+": "+o+")",i.name="ChunkLoadError",i.type=n,i.request=o,a[1](i)}}),"chunk-"+r,r)}else e[r]=0},l.O.j=r=>0===e[r];var r=(r,t)=>{var a,n,[o,i,s]=t,c=0;if(o.some((r=>0!==e[r]))){for(a in i)l.o(i,a)&&(l.m[a]=i[a]);if(s)var u=s(l)}for(r&&r(t);c<o.length;c++)n=o[c],l.o(e,n)&&e[n]&&e[n][0](),e[n]=0;return l.O(u)},t=self.webpackChunk_mateuszjs_magic_render=self.webpackChunk_mateuszjs_magic_render||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})()})();
|
package/webpack.config.js
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
const path = require("path");
|
|
2
|
-
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
|
|
3
|
-
const WasmPackPlugin = require("@wasm-tool/wasm-pack-plugin");
|
|
4
|
-
const HtmlWebpackPlugin = require('html-webpack-plugin');
|
|
5
|
-
|
|
6
|
-
const isProd = process.env.NODE_ENV === 'production'
|
|
7
|
-
|
|
8
|
-
module.exports = {
|
|
9
|
-
experiments: {
|
|
10
|
-
asyncWebAssembly: true
|
|
11
|
-
},
|
|
12
|
-
mode: process.env.NODE_ENV,
|
|
13
|
-
entry: {
|
|
14
|
-
index: './src/index.ts',
|
|
15
|
-
integrationTest: {
|
|
16
|
-
runtime: 'test-runtime',
|
|
17
|
-
import: './integration-tests/index.ts',
|
|
18
|
-
filename: 'test.js'
|
|
19
|
-
}
|
|
20
|
-
},
|
|
21
|
-
devtool: isProd ? undefined : "eval-source-map",
|
|
22
|
-
watch: !isProd,
|
|
23
|
-
devServer: {
|
|
24
|
-
// static: "./dist", // do not use it. It's gonna serve last SSG pages while dev mode
|
|
25
|
-
historyApiFallback: true // fallback to index.html while 404
|
|
26
|
-
},
|
|
27
|
-
resolve: {
|
|
28
|
-
extensions: [".ts", ".js", '.wasm', '.wgsl', '.jpg', '.png'],
|
|
29
|
-
modules: [path.resolve(__dirname, "src"), "node_modules"],
|
|
30
|
-
/* useful with absolute imports, "src" dir now takes precedence over "node_modules",
|
|
31
|
-
otherwise you got an error:
|
|
32
|
-
Requests that start with a name are treated as module requests and resolve within module directories (node_modules).
|
|
33
|
-
*/
|
|
34
|
-
},
|
|
35
|
-
module: {
|
|
36
|
-
rules: [
|
|
37
|
-
{
|
|
38
|
-
test: /\.ts$/,
|
|
39
|
-
use: "ts-loader",
|
|
40
|
-
exclude: /node_modules/,
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
test: /\.wgsl$/,
|
|
44
|
-
type: "asset/source",
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
test: /\.(png|jpg)$/,
|
|
48
|
-
type: "asset/resource",
|
|
49
|
-
},
|
|
50
|
-
],
|
|
51
|
-
},
|
|
52
|
-
output: {
|
|
53
|
-
filename: '[name].[contenthash].js',
|
|
54
|
-
path: path.resolve(__dirname, "dist"),
|
|
55
|
-
clean: true,
|
|
56
|
-
},
|
|
57
|
-
optimization: {
|
|
58
|
-
// https://webpack.jakoblind.no/optimize/ suppose to give you suggestion how to improve build
|
|
59
|
-
runtimeChunk: "single", // split runtime code into a separate chunk using the
|
|
60
|
-
// looks like it's needed because each deployment, reach changes something
|
|
61
|
-
// so [contenthash] also gonna change each time
|
|
62
|
-
// it contains references to all modules, so changes in each deployment
|
|
63
|
-
|
|
64
|
-
moduleIds: 'deterministic', /* still some modules can change because order of improts has changed
|
|
65
|
-
so with deterministic module id, the order won't matter!! contenthash should stay the same*/
|
|
66
|
-
},
|
|
67
|
-
plugins: [
|
|
68
|
-
// isProd && !process.env.CI && new BundleAnalyzerPlugin({
|
|
69
|
-
// analyzerMode: 'static' // 'server' had issue running along with PrerendererWebpackPlugin
|
|
70
|
-
// }),
|
|
71
|
-
new WasmPackPlugin({
|
|
72
|
-
crateDirectory: path.resolve(__dirname, "crate"),
|
|
73
|
-
}),
|
|
74
|
-
new HtmlWebpackPlugin({
|
|
75
|
-
template: path.resolve(__dirname, "integration-tests/template.html"),
|
|
76
|
-
inject: true,
|
|
77
|
-
chunks: ['integrationTest'],
|
|
78
|
-
}),
|
|
79
|
-
],
|
|
80
|
-
};
|