@multiplekex/shallot 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +8 -23
- package/src/standard/compute/index.ts +36 -0
- package/src/standard/render/camera.ts +1 -1
- package/dist/core/builder.d.ts +0 -25
- package/dist/core/builder.d.ts.map +0 -1
- package/dist/core/builder.js +0 -88
- package/dist/core/builder.js.map +0 -1
- package/dist/core/component.d.ts +0 -29
- package/dist/core/component.d.ts.map +0 -1
- package/dist/core/component.js +0 -36
- package/dist/core/component.js.map +0 -1
- package/dist/core/index.d.ts +0 -13
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/math.d.ts +0 -32
- package/dist/core/math.d.ts.map +0 -1
- package/dist/core/math.js +0 -39
- package/dist/core/math.js.map +0 -1
- package/dist/core/relation.d.ts +0 -16
- package/dist/core/relation.d.ts.map +0 -1
- package/dist/core/relation.js +0 -32
- package/dist/core/relation.js.map +0 -1
- package/dist/core/resource.d.ts +0 -9
- package/dist/core/resource.d.ts.map +0 -1
- package/dist/core/resource.js +0 -12
- package/dist/core/resource.js.map +0 -1
- package/dist/core/runtime.d.ts +0 -13
- package/dist/core/runtime.d.ts.map +0 -1
- package/dist/core/runtime.js +0 -118
- package/dist/core/runtime.js.map +0 -1
- package/dist/core/scheduler.d.ts +0 -47
- package/dist/core/scheduler.d.ts.map +0 -1
- package/dist/core/scheduler.js +0 -138
- package/dist/core/scheduler.js.map +0 -1
- package/dist/core/state.d.ts +0 -62
- package/dist/core/state.d.ts.map +0 -1
- package/dist/core/state.js +0 -185
- package/dist/core/state.js.map +0 -1
- package/dist/core/strings.d.ts +0 -3
- package/dist/core/strings.d.ts.map +0 -1
- package/dist/core/strings.js +0 -11
- package/dist/core/strings.js.map +0 -1
- package/dist/core/types.d.ts +0 -33
- package/dist/core/types.d.ts.map +0 -1
- package/dist/core/xml.d.ts +0 -42
- package/dist/core/xml.d.ts.map +0 -1
- package/dist/core/xml.js +0 -349
- package/dist/core/xml.js.map +0 -1
- package/dist/extras/arrows/index.d.ts +0 -33
- package/dist/extras/arrows/index.d.ts.map +0 -1
- package/dist/extras/arrows/index.js +0 -288
- package/dist/extras/arrows/index.js.map +0 -1
- package/dist/extras/index.d.ts +0 -5
- package/dist/extras/index.d.ts.map +0 -1
- package/dist/extras/index.js +0 -31
- package/dist/extras/index.js.map +0 -1
- package/dist/extras/lines/index.d.ts +0 -36
- package/dist/extras/lines/index.d.ts.map +0 -1
- package/dist/extras/lines/index.js +0 -288
- package/dist/extras/lines/index.js.map +0 -1
- package/dist/extras/orbit/index.d.ts +0 -20
- package/dist/extras/orbit/index.d.ts.map +0 -1
- package/dist/extras/orbit/index.js +0 -93
- package/dist/extras/orbit/index.js.map +0 -1
- package/dist/extras/text/index.d.ts +0 -64
- package/dist/extras/text/index.d.ts.map +0 -1
- package/dist/extras/text/index.js +0 -423
- package/dist/extras/text/index.js.map +0 -1
- package/dist/index.d.ts +0 -4
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -187
- package/dist/index.js.map +0 -1
- package/dist/rust/transforms/pkg/shallot_transforms.js +0 -107
- package/dist/rust/transforms/pkg/shallot_transforms.js.map +0 -1
- package/dist/standard/compute/graph.d.ts +0 -37
- package/dist/standard/compute/graph.d.ts.map +0 -1
- package/dist/standard/compute/graph.js +0 -85
- package/dist/standard/compute/graph.js.map +0 -1
- package/dist/standard/compute/index.d.ts +0 -21
- package/dist/standard/compute/index.d.ts.map +0 -1
- package/dist/standard/compute/index.js +0 -81
- package/dist/standard/compute/index.js.map +0 -1
- package/dist/standard/defaults.d.ts +0 -3
- package/dist/standard/defaults.d.ts.map +0 -1
- package/dist/standard/defaults.js +0 -18
- package/dist/standard/defaults.js.map +0 -1
- package/dist/standard/index.d.ts +0 -8
- package/dist/standard/index.d.ts.map +0 -1
- package/dist/standard/input/index.d.ts +0 -5
- package/dist/standard/input/index.d.ts.map +0 -1
- package/dist/standard/input/index.js +0 -70
- package/dist/standard/input/index.js.map +0 -1
- package/dist/standard/loading/index.d.ts +0 -7
- package/dist/standard/loading/index.d.ts.map +0 -1
- package/dist/standard/loading/index.js +0 -91
- package/dist/standard/loading/index.js.map +0 -1
- package/dist/standard/render/camera.d.ts +0 -36
- package/dist/standard/render/camera.d.ts.map +0 -1
- package/dist/standard/render/camera.js +0 -71
- package/dist/standard/render/camera.js.map +0 -1
- package/dist/standard/render/forward.d.ts +0 -30
- package/dist/standard/render/forward.d.ts.map +0 -1
- package/dist/standard/render/forward.js +0 -158
- package/dist/standard/render/forward.js.map +0 -1
- package/dist/standard/render/index.d.ts +0 -22
- package/dist/standard/render/index.d.ts.map +0 -1
- package/dist/standard/render/index.js +0 -153
- package/dist/standard/render/index.js.map +0 -1
- package/dist/standard/render/light.d.ts +0 -25
- package/dist/standard/render/light.d.ts.map +0 -1
- package/dist/standard/render/light.js +0 -48
- package/dist/standard/render/light.js.map +0 -1
- package/dist/standard/render/mesh/box.d.ts +0 -3
- package/dist/standard/render/mesh/box.d.ts.map +0 -1
- package/dist/standard/render/mesh/box.js +0 -190
- package/dist/standard/render/mesh/box.js.map +0 -1
- package/dist/standard/render/mesh/index.d.ts +0 -52
- package/dist/standard/render/mesh/index.d.ts.map +0 -1
- package/dist/standard/render/mesh/index.js +0 -158
- package/dist/standard/render/mesh/index.js.map +0 -1
- package/dist/standard/render/mesh/plane.d.ts +0 -3
- package/dist/standard/render/mesh/plane.d.ts.map +0 -1
- package/dist/standard/render/mesh/plane.js +0 -33
- package/dist/standard/render/mesh/plane.js.map +0 -1
- package/dist/standard/render/mesh/sphere.d.ts +0 -3
- package/dist/standard/render/mesh/sphere.d.ts.map +0 -1
- package/dist/standard/render/mesh/sphere.js +0 -25
- package/dist/standard/render/mesh/sphere.js.map +0 -1
- package/dist/standard/render/postprocess.d.ts +0 -11
- package/dist/standard/render/postprocess.d.ts.map +0 -1
- package/dist/standard/render/postprocess.js +0 -190
- package/dist/standard/render/postprocess.js.map +0 -1
- package/dist/standard/render/scene.d.ts +0 -8
- package/dist/standard/render/scene.d.ts.map +0 -1
- package/dist/standard/render/scene.js +0 -67
- package/dist/standard/render/scene.js.map +0 -1
- package/dist/standard/transforms/index.d.ts +0 -27
- package/dist/standard/transforms/index.d.ts.map +0 -1
- package/dist/standard/transforms/index.js +0 -122
- package/dist/standard/transforms/index.js.map +0 -1
- package/dist/standard/transforms/wasm.d.ts +0 -17
- package/dist/standard/transforms/wasm.d.ts.map +0 -1
- package/dist/standard/transforms/wasm.js +0 -31
- package/dist/standard/transforms/wasm.js.map +0 -1
- package/dist/standard/tween/easing.d.ts +0 -5
- package/dist/standard/tween/easing.d.ts.map +0 -1
- package/dist/standard/tween/easing.js +0 -80
- package/dist/standard/tween/easing.js.map +0 -1
- package/dist/standard/tween/index.d.ts +0 -4
- package/dist/standard/tween/index.d.ts.map +0 -1
- package/dist/standard/tween/sequence.d.ts +0 -20
- package/dist/standard/tween/sequence.d.ts.map +0 -1
- package/dist/standard/tween/sequence.js +0 -95
- package/dist/standard/tween/sequence.js.map +0 -1
- package/dist/standard/tween/tween.d.ts +0 -28
- package/dist/standard/tween/tween.d.ts.map +0 -1
- package/dist/standard/tween/tween.js +0 -136
- package/dist/standard/tween/tween.js.map +0 -1
- package/src/vite-env.d.ts +0 -6
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shallot_transforms.js","sources":["../../../../rust/transforms/pkg/shallot_transforms.js"],"sourcesContent":["let wasm;\n\n/**\n * @param {number} count\n */\nexport function compute_transforms(count) {\n wasm.compute_transforms(count);\n}\n\n/**\n * @returns {number}\n */\nexport function get_indices_ptr() {\n const ret = wasm.get_indices_ptr();\n return ret >>> 0;\n}\n\n/**\n * @returns {number}\n */\nexport function get_matrices_ptr() {\n const ret = wasm.get_matrices_ptr();\n return ret >>> 0;\n}\n\n/**\n * @returns {number}\n */\nexport function get_max_entities() {\n const ret = wasm.get_max_entities();\n return ret >>> 0;\n}\n\n/**\n * @returns {number}\n */\nexport function get_no_parent() {\n const ret = wasm.get_no_parent();\n return ret >>> 0;\n}\n\n/**\n * @returns {number}\n */\nexport function get_parents_ptr() {\n const ret = wasm.get_parents_ptr();\n return ret >>> 0;\n}\n\n/**\n * @returns {number}\n */\nexport function get_pos_x_ptr() {\n const ret = wasm.get_pos_x_ptr();\n return ret >>> 0;\n}\n\n/**\n * @returns {number}\n */\nexport function get_pos_y_ptr() {\n const ret = wasm.get_pos_y_ptr();\n return ret >>> 0;\n}\n\n/**\n * @returns {number}\n */\nexport function get_pos_z_ptr() {\n const ret = wasm.get_pos_z_ptr();\n return ret >>> 0;\n}\n\n/**\n * @returns {number}\n */\nexport function get_quat_w_ptr() {\n const ret = wasm.get_quat_w_ptr();\n return ret >>> 0;\n}\n\n/**\n * @returns {number}\n */\nexport function get_quat_x_ptr() {\n const ret = wasm.get_quat_x_ptr();\n return ret >>> 0;\n}\n\n/**\n * @returns {number}\n */\nexport function get_quat_y_ptr() {\n const ret = wasm.get_quat_y_ptr();\n return ret >>> 0;\n}\n\n/**\n * @returns {number}\n */\nexport function get_quat_z_ptr() {\n const ret = wasm.get_quat_z_ptr();\n return ret >>> 0;\n}\n\n/**\n * @returns {number}\n */\nexport function get_scale_x_ptr() {\n const ret = wasm.get_scale_x_ptr();\n return ret >>> 0;\n}\n\n/**\n * @returns {number}\n */\nexport function get_scale_y_ptr() {\n const ret = wasm.get_scale_y_ptr();\n return ret >>> 0;\n}\n\n/**\n * @returns {number}\n */\nexport function get_scale_z_ptr() {\n const ret = wasm.get_scale_z_ptr();\n return ret >>> 0;\n}\n\nexport function init_data() {\n wasm.init_data();\n}\n\nconst EXPECTED_RESPONSE_TYPES = new Set(['basic', 'cors', 'default']);\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n const validResponse = module.ok && EXPECTED_RESPONSE_TYPES.has(module.type);\n\n if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') {\n 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);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n}\n\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n\n return imports;\n}\n\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n\n\n\n return wasm;\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module !== 'undefined') {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n const instance = new WebAssembly.Instance(module, imports);\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module_or_path !== 'undefined') {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (typeof module_or_path === 'undefined') {\n module_or_path = new URL('shallot_transforms_bg.wasm', import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync };\nexport default __wbg_init;\n"],"names":["wasm","compute_transforms","count","get_indices_ptr","get_matrices_ptr","get_max_entities","get_no_parent","get_parents_ptr","get_pos_x_ptr","get_pos_y_ptr","get_pos_z_ptr","get_quat_w_ptr","get_quat_x_ptr","get_quat_y_ptr","get_quat_z_ptr","get_scale_x_ptr","get_scale_y_ptr","get_scale_z_ptr","init_data","EXPECTED_RESPONSE_TYPES","__wbg_load","module","imports","e","bytes","instance","__wbg_get_imports","__wbg_finalize_init","__wbg_init","module_or_path"],"mappings":"AAAA,IAAIA;AAKG,SAASC,EAAmBC,GAAO;AACtC,EAAAF,EAAK,mBAAmBE,CAAK;AACjC;AAKO,SAASC,IAAkB;AAE9B,SADYH,EAAK,gBAAe,MACjB;AACnB;AAKO,SAASI,IAAmB;AAE/B,SADYJ,EAAK,iBAAgB,MAClB;AACnB;AAKO,SAASK,IAAmB;AAE/B,SADYL,EAAK,iBAAgB,MAClB;AACnB;AAKO,SAASM,IAAgB;AAE5B,SADYN,EAAK,cAAa,MACf;AACnB;AAKO,SAASO,IAAkB;AAE9B,SADYP,EAAK,gBAAe,MACjB;AACnB;AAKO,SAASQ,IAAgB;AAE5B,SADYR,EAAK,cAAa,MACf;AACnB;AAKO,SAASS,IAAgB;AAE5B,SADYT,EAAK,cAAa,MACf;AACnB;AAKO,SAASU,IAAgB;AAE5B,SADYV,EAAK,cAAa,MACf;AACnB;AAKO,SAASW,IAAiB;AAE7B,SADYX,EAAK,eAAc,MAChB;AACnB;AAKO,SAASY,IAAiB;AAE7B,SADYZ,EAAK,eAAc,MAChB;AACnB;AAKO,SAASa,IAAiB;AAE7B,SADYb,EAAK,eAAc,MAChB;AACnB;AAKO,SAASc,IAAiB;AAE7B,SADYd,EAAK,eAAc,MAChB;AACnB;AAKO,SAASe,IAAkB;AAE9B,SADYf,EAAK,gBAAe,MACjB;AACnB;AAKO,SAASgB,IAAkB;AAE9B,SADYhB,EAAK,gBAAe,MACjB;AACnB;AAKO,SAASiB,IAAkB;AAE9B,SADYjB,EAAK,gBAAe,MACjB;AACnB;AAEO,SAASkB,IAAY;AACxB,EAAAlB,EAAK,UAAS;AAClB;AAEA,MAAMmB,IAA0B,oBAAI,IAAI,CAAC,SAAS,QAAQ,SAAS,CAAC;AAEpE,eAAeC,EAAWC,GAAQC,GAAS;AACvC,MAAI,OAAO,YAAa,cAAcD,aAAkB,UAAU;AAC9D,QAAI,OAAO,YAAY,wBAAyB;AAC5C,UAAI;AACA,eAAO,MAAM,YAAY,qBAAqBA,GAAQC,CAAO;AAAA,MACjE,SAASC,GAAG;AAGR,YAFsBF,EAAO,MAAMF,EAAwB,IAAIE,EAAO,IAAI,KAErDA,EAAO,QAAQ,IAAI,cAAc,MAAM;AACxD,kBAAQ,KAAK,qMAAqME,CAAC;AAAA;AAGnN,gBAAMA;AAAA,MAEd;AAGJ,UAAMC,IAAQ,MAAMH,EAAO,YAAW;AACtC,WAAO,MAAM,YAAY,YAAYG,GAAOF,CAAO;AAAA,EACvD,OAAO;AACH,UAAMG,IAAW,MAAM,YAAY,YAAYJ,GAAQC,CAAO;AAE9D,WAAIG,aAAoB,YAAY,WACzB,EAAE,UAAAA,GAAU,QAAAJ,EAAM,IAElBI;AAAA,EAEf;AACJ;AAEA,SAASC,IAAoB;AACzB,QAAMJ,IAAU,CAAA;AAChB,SAAAA,EAAQ,MAAM,CAAA,GAEPA;AACX;AAEA,SAASK,EAAoBF,GAAUJ,GAAQ;AAC3C,SAAArB,IAAOyB,EAAS,SAChBG,EAAW,yBAAyBP,GAI7BrB;AACX;AAsBA,eAAe4B,EAAWC,GAAgB;AACtC,MAAI7B,MAAS,OAAW,QAAOA;AAG/B,EAAI,OAAO6B,IAAmB,QACtB,OAAO,eAAeA,CAAc,MAAM,OAAO,YAChD,EAAC,gBAAAA,EAAc,IAAIA,IAEpB,QAAQ,KAAK,2FAA2F,IAI5G,OAAOA,IAAmB,QAC1BA,IAAiB,IAAA,IAAA,iz2VAAA,YAAA,GAAA;AAErB,QAAMP,IAAUI,EAAiB;AAEjC,GAAI,OAAOG,KAAmB,YAAa,OAAO,WAAY,cAAcA,aAA0B,WAAa,OAAO,OAAQ,cAAcA,aAA0B,SACtKA,IAAiB,MAAMA,CAAc;AAGzC,QAAM,EAAE,UAAAJ,GAAU,QAAAJ,EAAM,IAAK,MAAMD,EAAW,MAAMS,GAAgBP,CAAO;AAE3E,SAAOK,EAAoBF,GAAUJ,CAAM;AAC/C;"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
export type ResourceId = string;
|
|
2
|
-
export type NodeId = string;
|
|
3
|
-
export type Phase = "render" | "overlay" | "postprocess";
|
|
4
|
-
export interface ResourceRef {
|
|
5
|
-
id: ResourceId;
|
|
6
|
-
access: "read" | "write";
|
|
7
|
-
}
|
|
8
|
-
export interface ExecutionContext {
|
|
9
|
-
readonly device: GPUDevice;
|
|
10
|
-
readonly queue: GPUQueue;
|
|
11
|
-
readonly encoder: GPUCommandEncoder;
|
|
12
|
-
readonly context: GPUCanvasContext;
|
|
13
|
-
readonly format: GPUTextureFormat;
|
|
14
|
-
readonly canvasView: GPUTextureView;
|
|
15
|
-
getTexture(id: ResourceId): GPUTexture | null;
|
|
16
|
-
getTextureView(id: ResourceId): GPUTextureView | null;
|
|
17
|
-
getBuffer(id: ResourceId): GPUBuffer | null;
|
|
18
|
-
}
|
|
19
|
-
export interface ComputeNode {
|
|
20
|
-
readonly id: NodeId;
|
|
21
|
-
readonly phase?: Phase;
|
|
22
|
-
readonly inputs: readonly ResourceRef[];
|
|
23
|
-
readonly outputs: readonly ResourceRef[];
|
|
24
|
-
readonly execute: (ctx: ExecutionContext) => void;
|
|
25
|
-
}
|
|
26
|
-
export interface ExecutionPlan {
|
|
27
|
-
readonly sorted: readonly ComputeNode[];
|
|
28
|
-
}
|
|
29
|
-
export declare class ComputeGraph {
|
|
30
|
-
readonly nodes: Map<string, ComputeNode>;
|
|
31
|
-
private _plan;
|
|
32
|
-
add(node: ComputeNode): void;
|
|
33
|
-
set(id: NodeId, node: ComputeNode): void;
|
|
34
|
-
remove(id: NodeId): boolean;
|
|
35
|
-
compile(): ExecutionPlan;
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=graph.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../../src/standard/compute/graph.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAChC,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC;AAC5B,MAAM,MAAM,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,aAAa,CAAC;AAIzD,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,UAAU,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,UAAU,CAAC,EAAE,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,CAAC;IAC9C,cAAc,CAAC,EAAE,EAAE,UAAU,GAAG,cAAc,GAAG,IAAI,CAAC;IACtD,SAAS,CAAC,EAAE,EAAE,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC;CAC/C;AAED,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACrD;AAED,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;CAC3C;AA+FD,qBAAa,YAAY;IACrB,QAAQ,CAAC,KAAK,2BAAkC;IAChD,OAAO,CAAC,KAAK,CAA8B;IAE3C,GAAG,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAQ5B,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI;IAQxC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAQ3B,OAAO,IAAI,aAAa;CAM3B"}
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import "bitecs";
|
|
2
|
-
import { CycleError as u } from "../../core/scheduler.js";
|
|
3
|
-
import "../../core/builder.js";
|
|
4
|
-
import "../../core/relation.js";
|
|
5
|
-
import "../../core/math.js";
|
|
6
|
-
import "fast-xml-parser";
|
|
7
|
-
const h = ["render", "overlay", "postprocess"];
|
|
8
|
-
function l(s) {
|
|
9
|
-
const t = [], e = /* @__PURE__ */ new Map();
|
|
10
|
-
for (const o of s)
|
|
11
|
-
for (const n of o.outputs)
|
|
12
|
-
e.set(n.id, o);
|
|
13
|
-
for (const o of s)
|
|
14
|
-
for (const n of o.inputs) {
|
|
15
|
-
const p = e.get(n.id);
|
|
16
|
-
p && t.push([p, o]);
|
|
17
|
-
}
|
|
18
|
-
return t;
|
|
19
|
-
}
|
|
20
|
-
function a(s) {
|
|
21
|
-
if (s.length === 0) return [];
|
|
22
|
-
const t = l(s), e = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map();
|
|
23
|
-
for (const r of s)
|
|
24
|
-
e.set(r, []), o.set(r, 0);
|
|
25
|
-
for (const [r, i] of t)
|
|
26
|
-
e.get(r).push(i), o.set(i, o.get(i) + 1);
|
|
27
|
-
const n = [];
|
|
28
|
-
for (const r of s)
|
|
29
|
-
o.get(r) === 0 && n.push(r);
|
|
30
|
-
const p = [];
|
|
31
|
-
let c = 0;
|
|
32
|
-
for (; c < n.length; ) {
|
|
33
|
-
const r = n[c++];
|
|
34
|
-
p.push(r);
|
|
35
|
-
for (const i of e.get(r)) {
|
|
36
|
-
const f = o.get(i) - 1;
|
|
37
|
-
o.set(i, f), f === 0 && n.push(i);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
if (p.length !== s.length)
|
|
41
|
-
throw new u();
|
|
42
|
-
return p;
|
|
43
|
-
}
|
|
44
|
-
function d(s) {
|
|
45
|
-
if (s.length === 0)
|
|
46
|
-
return { sorted: [] };
|
|
47
|
-
const t = /* @__PURE__ */ new Map();
|
|
48
|
-
for (const o of h)
|
|
49
|
-
t.set(o, []);
|
|
50
|
-
for (const o of s) {
|
|
51
|
-
const n = o.phase ?? "render";
|
|
52
|
-
t.get(n).push(o);
|
|
53
|
-
}
|
|
54
|
-
const e = [];
|
|
55
|
-
for (const o of h) {
|
|
56
|
-
const n = t.get(o);
|
|
57
|
-
e.push(...a(n));
|
|
58
|
-
}
|
|
59
|
-
return { sorted: e };
|
|
60
|
-
}
|
|
61
|
-
class M {
|
|
62
|
-
nodes = /* @__PURE__ */ new Map();
|
|
63
|
-
_plan = null;
|
|
64
|
-
add(t) {
|
|
65
|
-
if (this.nodes.has(t.id))
|
|
66
|
-
throw new Error(`Node '${t.id}' already exists`);
|
|
67
|
-
this.nodes.set(t.id, t), this._plan = null;
|
|
68
|
-
}
|
|
69
|
-
set(t, e) {
|
|
70
|
-
if (e.id !== t)
|
|
71
|
-
throw new Error(`Node id '${e.id}' must match slot id '${t}'`);
|
|
72
|
-
this.nodes.set(t, e), this._plan = null;
|
|
73
|
-
}
|
|
74
|
-
remove(t) {
|
|
75
|
-
const e = this.nodes.delete(t);
|
|
76
|
-
return e && (this._plan = null), e;
|
|
77
|
-
}
|
|
78
|
-
compile() {
|
|
79
|
-
return this._plan || (this._plan = d(Array.from(this.nodes.values()))), this._plan;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
export {
|
|
83
|
-
M as ComputeGraph
|
|
84
|
-
};
|
|
85
|
-
//# sourceMappingURL=graph.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"graph.js","sources":["../../../src/standard/compute/graph.ts"],"sourcesContent":["import { CycleError } from \"../../core\";\n\nexport type ResourceId = string;\nexport type NodeId = string;\nexport type Phase = \"render\" | \"overlay\" | \"postprocess\";\n\nconst PHASE_ORDER: Phase[] = [\"render\", \"overlay\", \"postprocess\"];\n\nexport interface ResourceRef {\n id: ResourceId;\n access: \"read\" | \"write\";\n}\n\nexport interface ExecutionContext {\n readonly device: GPUDevice;\n readonly queue: GPUQueue;\n readonly encoder: GPUCommandEncoder;\n readonly context: GPUCanvasContext;\n readonly format: GPUTextureFormat;\n readonly canvasView: GPUTextureView;\n getTexture(id: ResourceId): GPUTexture | null;\n getTextureView(id: ResourceId): GPUTextureView | null;\n getBuffer(id: ResourceId): GPUBuffer | null;\n}\n\nexport interface ComputeNode {\n readonly id: NodeId;\n readonly phase?: Phase;\n readonly inputs: readonly ResourceRef[];\n readonly outputs: readonly ResourceRef[];\n readonly execute: (ctx: ExecutionContext) => void;\n}\n\nexport interface ExecutionPlan {\n readonly sorted: readonly ComputeNode[];\n}\n\nfunction buildEdges(nodes: ComputeNode[]): [ComputeNode, ComputeNode][] {\n const edges: [ComputeNode, ComputeNode][] = [];\n const producers = new Map<ResourceId, ComputeNode>();\n\n for (const node of nodes) {\n for (const output of node.outputs) {\n producers.set(output.id, node);\n }\n }\n\n for (const node of nodes) {\n for (const input of node.inputs) {\n const producer = producers.get(input.id);\n if (producer) {\n edges.push([producer, node]);\n }\n }\n }\n\n return edges;\n}\n\nfunction topoSort(nodes: ComputeNode[]): ComputeNode[] {\n if (nodes.length === 0) return [];\n\n const edges = buildEdges(nodes);\n const adjacency = new Map<ComputeNode, ComputeNode[]>();\n const inDegree = new Map<ComputeNode, number>();\n\n for (const node of nodes) {\n adjacency.set(node, []);\n inDegree.set(node, 0);\n }\n\n for (const [from, to] of edges) {\n adjacency.get(from)!.push(to);\n inDegree.set(to, inDegree.get(to)! + 1);\n }\n\n const queue: ComputeNode[] = [];\n for (const node of nodes) {\n if (inDegree.get(node) === 0) {\n queue.push(node);\n }\n }\n\n const sorted: ComputeNode[] = [];\n let i = 0;\n\n while (i < queue.length) {\n const node = queue[i++];\n sorted.push(node);\n\n for (const dep of adjacency.get(node)!) {\n const newDegree = inDegree.get(dep)! - 1;\n inDegree.set(dep, newDegree);\n if (newDegree === 0) {\n queue.push(dep);\n }\n }\n }\n\n if (sorted.length !== nodes.length) {\n throw new CycleError();\n }\n\n return sorted;\n}\n\nfunction compile(nodes: ComputeNode[]): ExecutionPlan {\n if (nodes.length === 0) {\n return { sorted: [] };\n }\n\n const byPhase = new Map<Phase, ComputeNode[]>();\n for (const phase of PHASE_ORDER) {\n byPhase.set(phase, []);\n }\n\n for (const node of nodes) {\n const phase = node.phase ?? \"render\";\n byPhase.get(phase)!.push(node);\n }\n\n const sorted: ComputeNode[] = [];\n for (const phase of PHASE_ORDER) {\n const phaseNodes = byPhase.get(phase)!;\n sorted.push(...topoSort(phaseNodes));\n }\n\n return { sorted };\n}\n\nexport class ComputeGraph {\n readonly nodes = new Map<NodeId, ComputeNode>();\n private _plan: ExecutionPlan | null = null;\n\n add(node: ComputeNode): void {\n if (this.nodes.has(node.id)) {\n throw new Error(`Node '${node.id}' already exists`);\n }\n this.nodes.set(node.id, node);\n this._plan = null;\n }\n\n set(id: NodeId, node: ComputeNode): void {\n if (node.id !== id) {\n throw new Error(`Node id '${node.id}' must match slot id '${id}'`);\n }\n this.nodes.set(id, node);\n this._plan = null;\n }\n\n remove(id: NodeId): boolean {\n const removed = this.nodes.delete(id);\n if (removed) {\n this._plan = null;\n }\n return removed;\n }\n\n compile(): ExecutionPlan {\n if (!this._plan) {\n this._plan = compile(Array.from(this.nodes.values()));\n }\n return this._plan;\n }\n}\n"],"names":["PHASE_ORDER","buildEdges","nodes","edges","producers","node","output","input","producer","topoSort","adjacency","inDegree","from","to","queue","sorted","i","dep","newDegree","CycleError","compile","byPhase","phase","phaseNodes","ComputeGraph","id","removed"],"mappings":"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"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { Plugin, System } from '../../core';
|
|
2
|
-
import { ComputeGraph, ResourceId } from './graph';
|
|
3
|
-
export * from './graph';
|
|
4
|
-
export declare function createEntityIdBuffer(device: GPUDevice, maxInstances: number): GPUBuffer;
|
|
5
|
-
export declare function requestGPU(): Promise<GPUDevice>;
|
|
6
|
-
export interface ComputeResources {
|
|
7
|
-
textures: Map<ResourceId, GPUTexture>;
|
|
8
|
-
textureViews: Map<ResourceId, GPUTextureView>;
|
|
9
|
-
buffers: Map<ResourceId, GPUBuffer>;
|
|
10
|
-
}
|
|
11
|
-
export interface ComputeState {
|
|
12
|
-
readonly device: GPUDevice;
|
|
13
|
-
readonly context: GPUCanvasContext;
|
|
14
|
-
readonly format: GPUTextureFormat;
|
|
15
|
-
readonly graph: ComputeGraph;
|
|
16
|
-
readonly resources: ComputeResources;
|
|
17
|
-
}
|
|
18
|
-
export declare const Compute: import('../..').ResourceKey<ComputeState>;
|
|
19
|
-
export declare const ComputeSystem: System;
|
|
20
|
-
export declare const ComputePlugin: Plugin;
|
|
21
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/standard/compute/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,MAAM,EAAc,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAyB,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAE/E,cAAc,SAAS,CAAC;AAExB,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,GAAG,SAAS,CAMvF;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC,CAWrD;AAED,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACtC,YAAY,EAAE,GAAG,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAC9C,OAAO,EAAE,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;CACxC;AAED,eAAO,MAAM,OAAO,2CAAoC,CAAC;AAEzD,eAAO,MAAM,aAAa,EAAE,MAwC3B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MA+B3B,CAAC"}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import "bitecs";
|
|
2
|
-
import { resource as m } from "../../core/resource.js";
|
|
3
|
-
import "../../core/builder.js";
|
|
4
|
-
import "../../core/relation.js";
|
|
5
|
-
import "../../core/math.js";
|
|
6
|
-
import "fast-xml-parser";
|
|
7
|
-
import { ComputeGraph as d } from "./graph.js";
|
|
8
|
-
function q(e, r) {
|
|
9
|
-
return e.createBuffer({
|
|
10
|
-
label: "entityIds",
|
|
11
|
-
size: r * 4,
|
|
12
|
-
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST | GPUBufferUsage.COPY_SRC
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
async function w() {
|
|
16
|
-
if (!navigator.gpu)
|
|
17
|
-
throw new Error("WebGPU not supported");
|
|
18
|
-
const e = await navigator.gpu.requestAdapter();
|
|
19
|
-
if (!e)
|
|
20
|
-
throw new Error("No GPU adapter found");
|
|
21
|
-
return e.requestDevice();
|
|
22
|
-
}
|
|
23
|
-
const p = m("compute"), l = {
|
|
24
|
-
group: "draw",
|
|
25
|
-
update(e) {
|
|
26
|
-
const r = p.from(e);
|
|
27
|
-
if (!r) return;
|
|
28
|
-
const { device: t, context: n, format: u, graph: a, resources: s } = r, c = a.compile();
|
|
29
|
-
if (c.sorted.length === 0) return;
|
|
30
|
-
const f = n.getCurrentTexture().createView(), i = t.createCommandEncoder(), g = {
|
|
31
|
-
device: t,
|
|
32
|
-
queue: t.queue,
|
|
33
|
-
encoder: i,
|
|
34
|
-
context: n,
|
|
35
|
-
format: u,
|
|
36
|
-
canvasView: f,
|
|
37
|
-
getTexture(o) {
|
|
38
|
-
return s.textures.get(o) ?? null;
|
|
39
|
-
},
|
|
40
|
-
getTextureView(o) {
|
|
41
|
-
return s.textureViews.get(o) ?? null;
|
|
42
|
-
},
|
|
43
|
-
getBuffer(o) {
|
|
44
|
-
return s.buffers.get(o) ?? null;
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
for (const o of c.sorted)
|
|
48
|
-
o.execute(g);
|
|
49
|
-
t.queue.submit([i.finish()]);
|
|
50
|
-
}
|
|
51
|
-
}, E = {
|
|
52
|
-
systems: [l],
|
|
53
|
-
async initialize(e) {
|
|
54
|
-
if (!e.canvas)
|
|
55
|
-
throw new Error("ComputePlugin requires a canvas");
|
|
56
|
-
const r = await w(), t = e.canvas.getContext("webgpu");
|
|
57
|
-
if (!t)
|
|
58
|
-
throw new Error("Failed to get WebGPU context");
|
|
59
|
-
const n = navigator.gpu.getPreferredCanvasFormat();
|
|
60
|
-
t.configure({
|
|
61
|
-
device: r,
|
|
62
|
-
format: n,
|
|
63
|
-
alphaMode: "premultiplied"
|
|
64
|
-
});
|
|
65
|
-
const u = new d(), a = {
|
|
66
|
-
textures: /* @__PURE__ */ new Map(),
|
|
67
|
-
textureViews: /* @__PURE__ */ new Map(),
|
|
68
|
-
buffers: /* @__PURE__ */ new Map()
|
|
69
|
-
};
|
|
70
|
-
e.setResource(p, { device: r, context: t, format: n, graph: u, resources: a });
|
|
71
|
-
}
|
|
72
|
-
};
|
|
73
|
-
export {
|
|
74
|
-
p as Compute,
|
|
75
|
-
d as ComputeGraph,
|
|
76
|
-
E as ComputePlugin,
|
|
77
|
-
l as ComputeSystem,
|
|
78
|
-
q as createEntityIdBuffer,
|
|
79
|
-
w as requestGPU
|
|
80
|
-
};
|
|
81
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/standard/compute/index.ts"],"sourcesContent":["import { resource, type Plugin, type State, type System } from \"../../core\";\nimport { ComputeGraph, type ExecutionContext, type ResourceId } from \"./graph\";\n\nexport * from \"./graph\";\n\nexport function createEntityIdBuffer(device: GPUDevice, maxInstances: number): GPUBuffer {\n return device.createBuffer({\n label: \"entityIds\",\n size: maxInstances * 4,\n usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST | GPUBufferUsage.COPY_SRC,\n });\n}\n\nexport async function requestGPU(): Promise<GPUDevice> {\n if (!navigator.gpu) {\n throw new Error(\"WebGPU not supported\");\n }\n\n const adapter = await navigator.gpu.requestAdapter();\n if (!adapter) {\n throw new Error(\"No GPU adapter found\");\n }\n\n return adapter.requestDevice();\n}\n\nexport interface ComputeResources {\n textures: Map<ResourceId, GPUTexture>;\n textureViews: Map<ResourceId, GPUTextureView>;\n buffers: Map<ResourceId, GPUBuffer>;\n}\n\nexport interface ComputeState {\n readonly device: GPUDevice;\n readonly context: GPUCanvasContext;\n readonly format: GPUTextureFormat;\n readonly graph: ComputeGraph;\n readonly resources: ComputeResources;\n}\n\nexport const Compute = resource<ComputeState>(\"compute\");\n\nexport const ComputeSystem: System = {\n group: \"draw\",\n\n update(state: State) {\n const compute = Compute.from(state);\n if (!compute) return;\n\n const { device, context, format, graph, resources } = compute;\n const plan = graph.compile();\n\n if (plan.sorted.length === 0) return;\n\n const canvasTexture = context.getCurrentTexture();\n const canvasView = canvasTexture.createView();\n const encoder = device.createCommandEncoder();\n\n const ctx: ExecutionContext = {\n device,\n queue: device.queue,\n encoder,\n context,\n format,\n canvasView,\n getTexture(id: ResourceId) {\n return resources.textures.get(id) ?? null;\n },\n getTextureView(id: ResourceId) {\n return resources.textureViews.get(id) ?? null;\n },\n getBuffer(id: ResourceId) {\n return resources.buffers.get(id) ?? null;\n },\n };\n\n for (const node of plan.sorted) {\n node.execute(ctx);\n }\n\n device.queue.submit([encoder.finish()]);\n },\n};\n\nexport const ComputePlugin: Plugin = {\n systems: [ComputeSystem],\n\n async initialize(state: State) {\n if (!state.canvas) {\n throw new Error(\"ComputePlugin requires a canvas\");\n }\n\n const device = await requestGPU();\n\n const context = state.canvas.getContext(\"webgpu\");\n if (!context) {\n throw new Error(\"Failed to get WebGPU context\");\n }\n\n const format = navigator.gpu.getPreferredCanvasFormat();\n context.configure({\n device,\n format,\n alphaMode: \"premultiplied\",\n });\n\n const graph = new ComputeGraph();\n const resources: ComputeResources = {\n textures: new Map(),\n textureViews: new Map(),\n buffers: new Map(),\n };\n\n state.setResource(Compute, { device, context, format, graph, resources });\n },\n};\n"],"names":["createEntityIdBuffer","device","maxInstances","requestGPU","adapter","Compute","resource","ComputeSystem","state","compute","context","format","graph","resources","plan","canvasView","encoder","ctx","id","node","ComputePlugin","ComputeGraph"],"mappings":";;;;;;;AAKO,SAASA,EAAqBC,GAAmBC,GAAiC;AACrF,SAAOD,EAAO,aAAa;AAAA,IACvB,OAAO;AAAA,IACP,MAAMC,IAAe;AAAA,IACrB,OAAO,eAAe,UAAU,eAAe,WAAW,eAAe;AAAA,EAAA,CAC5E;AACL;AAEA,eAAsBC,IAAiC;AACnD,MAAI,CAAC,UAAU;AACX,UAAM,IAAI,MAAM,sBAAsB;AAG1C,QAAMC,IAAU,MAAM,UAAU,IAAI,eAAA;AACpC,MAAI,CAACA;AACD,UAAM,IAAI,MAAM,sBAAsB;AAG1C,SAAOA,EAAQ,cAAA;AACnB;AAgBO,MAAMC,IAAUC,EAAuB,SAAS,GAE1CC,IAAwB;AAAA,EACjC,OAAO;AAAA,EAEP,OAAOC,GAAc;AACjB,UAAMC,IAAUJ,EAAQ,KAAKG,CAAK;AAClC,QAAI,CAACC,EAAS;AAEd,UAAM,EAAE,QAAAR,GAAQ,SAAAS,GAAS,QAAAC,GAAQ,OAAAC,GAAO,WAAAC,MAAcJ,GAChDK,IAAOF,EAAM,QAAA;AAEnB,QAAIE,EAAK,OAAO,WAAW,EAAG;AAG9B,UAAMC,IADgBL,EAAQ,kBAAA,EACG,WAAA,GAC3BM,IAAUf,EAAO,qBAAA,GAEjBgB,IAAwB;AAAA,MAC1B,QAAAhB;AAAA,MACA,OAAOA,EAAO;AAAA,MACd,SAAAe;AAAA,MACA,SAAAN;AAAA,MACA,QAAAC;AAAA,MACA,YAAAI;AAAA,MACA,WAAWG,GAAgB;AACvB,eAAOL,EAAU,SAAS,IAAIK,CAAE,KAAK;AAAA,MACzC;AAAA,MACA,eAAeA,GAAgB;AAC3B,eAAOL,EAAU,aAAa,IAAIK,CAAE,KAAK;AAAA,MAC7C;AAAA,MACA,UAAUA,GAAgB;AACtB,eAAOL,EAAU,QAAQ,IAAIK,CAAE,KAAK;AAAA,MACxC;AAAA,IAAA;AAGJ,eAAWC,KAAQL,EAAK;AACpB,MAAAK,EAAK,QAAQF,CAAG;AAGpB,IAAAhB,EAAO,MAAM,OAAO,CAACe,EAAQ,OAAA,CAAQ,CAAC;AAAA,EAC1C;AACJ,GAEaI,IAAwB;AAAA,EACjC,SAAS,CAACb,CAAa;AAAA,EAEvB,MAAM,WAAWC,GAAc;AAC3B,QAAI,CAACA,EAAM;AACP,YAAM,IAAI,MAAM,iCAAiC;AAGrD,UAAMP,IAAS,MAAME,EAAA,GAEfO,IAAUF,EAAM,OAAO,WAAW,QAAQ;AAChD,QAAI,CAACE;AACD,YAAM,IAAI,MAAM,8BAA8B;AAGlD,UAAMC,IAAS,UAAU,IAAI,yBAAA;AAC7B,IAAAD,EAAQ,UAAU;AAAA,MACd,QAAAT;AAAA,MACA,QAAAU;AAAA,MACA,WAAW;AAAA,IAAA,CACd;AAED,UAAMC,IAAQ,IAAIS,EAAA,GACZR,IAA8B;AAAA,MAChC,8BAAc,IAAA;AAAA,MACd,kCAAkB,IAAA;AAAA,MAClB,6BAAa,IAAA;AAAA,IAAI;AAGrB,IAAAL,EAAM,YAAYH,GAAS,EAAE,QAAAJ,GAAQ,SAAAS,GAAS,QAAAC,GAAQ,OAAAC,GAAO,WAAAC,GAAW;AAAA,EAC5E;AACJ;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/standard/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAQ5C,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAK5C,CAAC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { StateBuilder as o } from "../core/builder.js";
|
|
2
|
-
import { TransformsPlugin as r } from "./transforms/index.js";
|
|
3
|
-
import { InputPlugin as m } from "./input/index.js";
|
|
4
|
-
import { shallotDark as t } from "./loading/index.js";
|
|
5
|
-
import { ComputePlugin as i } from "./compute/index.js";
|
|
6
|
-
import { RenderPlugin as l } from "./render/index.js";
|
|
7
|
-
const n = [
|
|
8
|
-
r,
|
|
9
|
-
m,
|
|
10
|
-
i,
|
|
11
|
-
l
|
|
12
|
-
];
|
|
13
|
-
o.defaultPlugins = n;
|
|
14
|
-
o.loading = t;
|
|
15
|
-
export {
|
|
16
|
-
n as DEFAULT_PLUGINS
|
|
17
|
-
};
|
|
18
|
-
//# sourceMappingURL=defaults.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.js","sources":["../../src/standard/defaults.ts"],"sourcesContent":["import type { Plugin } from \"../core/types\";\nimport { StateBuilder } from \"../core/builder\";\nimport { TransformsPlugin } from \"./transforms\";\nimport { InputPlugin } from \"./input\";\nimport { canvasLoading } from \"./loading\";\nimport { ComputePlugin } from \"./compute\";\nimport { RenderPlugin } from \"./render\";\n\nexport const DEFAULT_PLUGINS: readonly Plugin[] = [\n TransformsPlugin,\n InputPlugin,\n ComputePlugin,\n RenderPlugin,\n];\n\nStateBuilder.defaultPlugins = DEFAULT_PLUGINS;\nStateBuilder.loading = canvasLoading;\n"],"names":["DEFAULT_PLUGINS","TransformsPlugin","InputPlugin","ComputePlugin","RenderPlugin","StateBuilder","canvasLoading"],"mappings":";;;;;;AAQO,MAAMA,IAAqC;AAAA,EAC9CC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AACJ;AAEAC,EAAa,iBAAiBL;AAC9BK,EAAa,UAAUC;"}
|
package/dist/standard/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/standard/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/standard/input/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,KAAK,MAAM,EACX,KAAK,MAAM,EACX,KAAK,UAAU,EAElB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,KAAK,yCAAgC,CAAC;AAsFnD,eAAO,MAAM,WAAW,EAAE,MAiCzB,CAAC;AAWF,eAAO,MAAM,WAAW,EAAE,MAEzB,CAAC"}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import "bitecs";
|
|
2
|
-
import { resource as v } from "../../core/resource.js";
|
|
3
|
-
import "../../core/builder.js";
|
|
4
|
-
import "../../core/relation.js";
|
|
5
|
-
import "../../core/math.js";
|
|
6
|
-
import "fast-xml-parser";
|
|
7
|
-
const a = v("input"), o = /* @__PURE__ */ new Set(), s = /* @__PURE__ */ new Set(), l = /* @__PURE__ */ new Set(), t = {
|
|
8
|
-
deltaX: 0,
|
|
9
|
-
deltaY: 0,
|
|
10
|
-
scrollDelta: 0,
|
|
11
|
-
left: !1,
|
|
12
|
-
right: !1,
|
|
13
|
-
middle: !1
|
|
14
|
-
}, p = {
|
|
15
|
-
mouse: t,
|
|
16
|
-
isKeyDown: (e) => o.has(e),
|
|
17
|
-
isKeyPressed: (e) => s.has(e),
|
|
18
|
-
isKeyReleased: (e) => l.has(e)
|
|
19
|
-
};
|
|
20
|
-
let n = null;
|
|
21
|
-
function r(e) {
|
|
22
|
-
o.has(e.code) || s.add(e.code), o.add(e.code);
|
|
23
|
-
}
|
|
24
|
-
function d(e) {
|
|
25
|
-
o.delete(e.code), l.add(e.code);
|
|
26
|
-
}
|
|
27
|
-
function i(e) {
|
|
28
|
-
e.target === n && (e.button === 0 && (t.left = !0), e.button === 1 && (t.middle = !0), e.button === 2 && (t.right = !0));
|
|
29
|
-
}
|
|
30
|
-
function u(e) {
|
|
31
|
-
e.button === 0 && (t.left = !1), e.button === 1 && (t.middle = !1), e.button === 2 && (t.right = !1);
|
|
32
|
-
}
|
|
33
|
-
function c(e) {
|
|
34
|
-
t.deltaX += e.movementX, t.deltaY += e.movementY;
|
|
35
|
-
}
|
|
36
|
-
function f(e) {
|
|
37
|
-
e.target === n && (t.scrollDelta += e.deltaY, e.preventDefault());
|
|
38
|
-
}
|
|
39
|
-
function m(e) {
|
|
40
|
-
e.target === n && e.preventDefault();
|
|
41
|
-
}
|
|
42
|
-
function w() {
|
|
43
|
-
s.clear(), l.clear(), t.deltaX = 0, t.deltaY = 0, t.scrollDelta = 0;
|
|
44
|
-
}
|
|
45
|
-
function h() {
|
|
46
|
-
o.clear(), s.clear(), l.clear(), t.deltaX = 0, t.deltaY = 0, t.scrollDelta = 0, t.left = !1, t.right = !1, t.middle = !1;
|
|
47
|
-
}
|
|
48
|
-
const y = {
|
|
49
|
-
group: "simulation",
|
|
50
|
-
setup(e) {
|
|
51
|
-
e.canvas && (n = e.canvas, window.addEventListener("keydown", r), window.addEventListener("keyup", d), n.addEventListener("mousedown", i), window.addEventListener("mouseup", u), n.addEventListener("mousemove", c), n.addEventListener("wheel", f, { passive: !1 }), n.addEventListener("contextmenu", m), e.setResource(a, p));
|
|
52
|
-
},
|
|
53
|
-
dispose(e) {
|
|
54
|
-
n && (window.removeEventListener("keydown", r), window.removeEventListener("keyup", d), n.removeEventListener("mousedown", i), window.removeEventListener("mouseup", u), n.removeEventListener("mousemove", c), n.removeEventListener("wheel", f), n.removeEventListener("contextmenu", m), n = null), h(), e.deleteResource(a);
|
|
55
|
-
}
|
|
56
|
-
}, E = {
|
|
57
|
-
group: "draw",
|
|
58
|
-
last: !0,
|
|
59
|
-
update() {
|
|
60
|
-
w();
|
|
61
|
-
}
|
|
62
|
-
}, Y = {
|
|
63
|
-
systems: [y, E]
|
|
64
|
-
};
|
|
65
|
-
export {
|
|
66
|
-
a as Input,
|
|
67
|
-
Y as InputPlugin,
|
|
68
|
-
y as InputSystem
|
|
69
|
-
};
|
|
70
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/standard/input/index.ts"],"sourcesContent":["import {\n resource,\n type State,\n type System,\n type Plugin,\n type InputState,\n type MouseState,\n} from \"../../core\";\n\nexport const Input = resource<InputState>(\"input\");\n\nconst keys = new Set<string>();\nconst keysPressed = new Set<string>();\nconst keysReleased = new Set<string>();\n\nconst mouse: MouseState = {\n deltaX: 0,\n deltaY: 0,\n scrollDelta: 0,\n left: false,\n right: false,\n middle: false,\n};\n\nconst inputState: InputState = {\n mouse,\n isKeyDown: (code: string) => keys.has(code),\n isKeyPressed: (code: string) => keysPressed.has(code),\n isKeyReleased: (code: string) => keysReleased.has(code),\n};\n\nlet canvas: HTMLCanvasElement | null = null;\n\nfunction handleKeyDown(e: KeyboardEvent): void {\n if (!keys.has(e.code)) {\n keysPressed.add(e.code);\n }\n keys.add(e.code);\n}\n\nfunction handleKeyUp(e: KeyboardEvent): void {\n keys.delete(e.code);\n keysReleased.add(e.code);\n}\n\nfunction handleMouseDown(e: MouseEvent): void {\n if (e.target !== canvas) return;\n if (e.button === 0) mouse.left = true;\n if (e.button === 1) mouse.middle = true;\n if (e.button === 2) mouse.right = true;\n}\n\nfunction handleMouseUp(e: MouseEvent): void {\n if (e.button === 0) mouse.left = false;\n if (e.button === 1) mouse.middle = false;\n if (e.button === 2) mouse.right = false;\n}\n\nfunction handleMouseMove(e: MouseEvent): void {\n mouse.deltaX += e.movementX;\n mouse.deltaY += e.movementY;\n}\n\nfunction handleWheel(e: WheelEvent): void {\n if (e.target !== canvas) return;\n mouse.scrollDelta += e.deltaY;\n e.preventDefault();\n}\n\nfunction handleContextMenu(e: Event): void {\n if (e.target === canvas) {\n e.preventDefault();\n }\n}\n\nfunction resetFrameState(): void {\n keysPressed.clear();\n keysReleased.clear();\n mouse.deltaX = 0;\n mouse.deltaY = 0;\n mouse.scrollDelta = 0;\n}\n\nfunction clearAllState(): void {\n keys.clear();\n keysPressed.clear();\n keysReleased.clear();\n mouse.deltaX = 0;\n mouse.deltaY = 0;\n mouse.scrollDelta = 0;\n mouse.left = false;\n mouse.right = false;\n mouse.middle = false;\n}\n\nexport const InputSystem: System = {\n group: \"simulation\",\n\n setup(state: State) {\n if (!state.canvas) return;\n canvas = state.canvas;\n\n window.addEventListener(\"keydown\", handleKeyDown);\n window.addEventListener(\"keyup\", handleKeyUp);\n canvas.addEventListener(\"mousedown\", handleMouseDown);\n window.addEventListener(\"mouseup\", handleMouseUp);\n canvas.addEventListener(\"mousemove\", handleMouseMove);\n canvas.addEventListener(\"wheel\", handleWheel, { passive: false });\n canvas.addEventListener(\"contextmenu\", handleContextMenu);\n\n state.setResource(Input, inputState);\n },\n\n dispose(state: State) {\n if (canvas) {\n window.removeEventListener(\"keydown\", handleKeyDown);\n window.removeEventListener(\"keyup\", handleKeyUp);\n canvas.removeEventListener(\"mousedown\", handleMouseDown);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n canvas.removeEventListener(\"mousemove\", handleMouseMove);\n canvas.removeEventListener(\"wheel\", handleWheel);\n canvas.removeEventListener(\"contextmenu\", handleContextMenu);\n canvas = null;\n }\n\n clearAllState();\n state.deleteResource(Input);\n },\n};\n\nconst InputResetSystem: System = {\n group: \"draw\",\n last: true,\n\n update() {\n resetFrameState();\n },\n};\n\nexport const InputPlugin: Plugin = {\n systems: [InputSystem, InputResetSystem],\n};\n"],"names":["Input","resource","keys","keysPressed","keysReleased","mouse","inputState","code","canvas","handleKeyDown","handleKeyUp","handleMouseDown","handleMouseUp","handleMouseMove","handleWheel","handleContextMenu","resetFrameState","clearAllState","InputSystem","state","InputResetSystem","InputPlugin"],"mappings":";;;;;;AASO,MAAMA,IAAQC,EAAqB,OAAO,GAE3CC,wBAAW,IAAA,GACXC,wBAAkB,IAAA,GAClBC,wBAAmB,IAAA,GAEnBC,IAAoB;AAAA,EACtB,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AACZ,GAEMC,IAAyB;AAAA,EAC3B,OAAAD;AAAA,EACA,WAAW,CAACE,MAAiBL,EAAK,IAAIK,CAAI;AAAA,EAC1C,cAAc,CAACA,MAAiBJ,EAAY,IAAII,CAAI;AAAA,EACpD,eAAe,CAACA,MAAiBH,EAAa,IAAIG,CAAI;AAC1D;AAEA,IAAIC,IAAmC;AAEvC,SAASC,EAAc,GAAwB;AAC3C,EAAKP,EAAK,IAAI,EAAE,IAAI,KAChBC,EAAY,IAAI,EAAE,IAAI,GAE1BD,EAAK,IAAI,EAAE,IAAI;AACnB;AAEA,SAASQ,EAAY,GAAwB;AACzC,EAAAR,EAAK,OAAO,EAAE,IAAI,GAClBE,EAAa,IAAI,EAAE,IAAI;AAC3B;AAEA,SAASO,EAAgB,GAAqB;AAC1C,EAAI,EAAE,WAAWH,MACb,EAAE,WAAW,MAAGH,EAAM,OAAO,KAC7B,EAAE,WAAW,MAAGA,EAAM,SAAS,KAC/B,EAAE,WAAW,MAAGA,EAAM,QAAQ;AACtC;AAEA,SAASO,EAAc,GAAqB;AACxC,EAAI,EAAE,WAAW,MAAGP,EAAM,OAAO,KAC7B,EAAE,WAAW,MAAGA,EAAM,SAAS,KAC/B,EAAE,WAAW,MAAGA,EAAM,QAAQ;AACtC;AAEA,SAASQ,EAAgB,GAAqB;AAC1C,EAAAR,EAAM,UAAU,EAAE,WAClBA,EAAM,UAAU,EAAE;AACtB;AAEA,SAASS,EAAY,GAAqB;AACtC,EAAI,EAAE,WAAWN,MACjBH,EAAM,eAAe,EAAE,QACvB,EAAE,eAAA;AACN;AAEA,SAASU,EAAkB,GAAgB;AACvC,EAAI,EAAE,WAAWP,KACb,EAAE,eAAA;AAEV;AAEA,SAASQ,IAAwB;AAC7B,EAAAb,EAAY,MAAA,GACZC,EAAa,MAAA,GACbC,EAAM,SAAS,GACfA,EAAM,SAAS,GACfA,EAAM,cAAc;AACxB;AAEA,SAASY,IAAsB;AAC3B,EAAAf,EAAK,MAAA,GACLC,EAAY,MAAA,GACZC,EAAa,MAAA,GACbC,EAAM,SAAS,GACfA,EAAM,SAAS,GACfA,EAAM,cAAc,GACpBA,EAAM,OAAO,IACbA,EAAM,QAAQ,IACdA,EAAM,SAAS;AACnB;AAEO,MAAMa,IAAsB;AAAA,EAC/B,OAAO;AAAA,EAEP,MAAMC,GAAc;AAChB,IAAKA,EAAM,WACXX,IAASW,EAAM,QAEf,OAAO,iBAAiB,WAAWV,CAAa,GAChD,OAAO,iBAAiB,SAASC,CAAW,GAC5CF,EAAO,iBAAiB,aAAaG,CAAe,GACpD,OAAO,iBAAiB,WAAWC,CAAa,GAChDJ,EAAO,iBAAiB,aAAaK,CAAe,GACpDL,EAAO,iBAAiB,SAASM,GAAa,EAAE,SAAS,IAAO,GAChEN,EAAO,iBAAiB,eAAeO,CAAiB,GAExDI,EAAM,YAAYnB,GAAOM,CAAU;AAAA,EACvC;AAAA,EAEA,QAAQa,GAAc;AAClB,IAAIX,MACA,OAAO,oBAAoB,WAAWC,CAAa,GACnD,OAAO,oBAAoB,SAASC,CAAW,GAC/CF,EAAO,oBAAoB,aAAaG,CAAe,GACvD,OAAO,oBAAoB,WAAWC,CAAa,GACnDJ,EAAO,oBAAoB,aAAaK,CAAe,GACvDL,EAAO,oBAAoB,SAASM,CAAW,GAC/CN,EAAO,oBAAoB,eAAeO,CAAiB,GAC3DP,IAAS,OAGbS,EAAA,GACAE,EAAM,eAAenB,CAAK;AAAA,EAC9B;AACJ,GAEMoB,IAA2B;AAAA,EAC7B,OAAO;AAAA,EACP,MAAM;AAAA,EAEN,SAAS;AACL,IAAAJ,EAAA;AAAA,EACJ;AACJ,GAEaK,IAAsB;AAAA,EAC/B,SAAS,CAACH,GAAaE,CAAgB;AAC3C;"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { Loading } from '../../core';
|
|
2
|
-
export declare const shallotDark: (canvas: HTMLCanvasElement) => Loading;
|
|
3
|
-
export declare const shallotLight: (canvas: HTMLCanvasElement) => Loading;
|
|
4
|
-
export declare const minimalDark: (canvas: HTMLCanvasElement) => Loading;
|
|
5
|
-
export declare const minimalLight: (canvas: HTMLCanvasElement) => Loading;
|
|
6
|
-
export { shallotDark as canvasLoading };
|
|
7
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/standard/loading/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAkI1C,eAAO,MAAM,WAAW,GAAI,QAAQ,iBAAiB,KAAG,OAAuC,CAAC;AAChG,eAAO,MAAM,YAAY,GAAI,QAAQ,iBAAiB,KAAG,OAAwC,CAAC;AAClG,eAAO,MAAM,WAAW,GAAI,QAAQ,iBAAiB,KAAG,OAAuC,CAAC;AAChG,eAAO,MAAM,YAAY,GAAI,QAAQ,iBAAiB,KAAG,OAAwC,CAAC;AAElG,OAAO,EAAE,WAAW,IAAI,aAAa,EAAE,CAAC"}
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
const l = { bg: "#1a1a1a", track: "#333", bar: "#E8A86B" }, i = { bg: "#f5f5f5", track: "#ddd", bar: "#B87654" }, u = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 80">
|
|
2
|
-
<defs>
|
|
3
|
-
<radialGradient id="baseGradient" cx="35%" cy="30%" r="70%" fx="25%" fy="20%">
|
|
4
|
-
<stop offset="0%" stop-color="#F5D4B8"/>
|
|
5
|
-
<stop offset="45%" stop-color="#E8A86B"/>
|
|
6
|
-
<stop offset="100%" stop-color="#B87654"/>
|
|
7
|
-
</radialGradient>
|
|
8
|
-
</defs>
|
|
9
|
-
<g transform="rotate(35 40.0 40.0)">
|
|
10
|
-
<path d="M40.0,2 C44.0,10 66.0,28 66.0,46 C66.0,60 48.0,70 40.0,78 C32.0,70 14.0,60 14.0,46 C14.0,28 36.0,10 40.0,2 Z" fill="url(#baseGradient)"/>
|
|
11
|
-
<path d="M40.0,6 C37.0,14 22.0,28 20.0,44 C20.0,52 28.0,62 36.0,70 C34.0,58 26.0,46 26.0,38 C26.0,26 38.0,12 40.0,6 Z" fill="#B87654" opacity="0.45"/>
|
|
12
|
-
<path d="M40.0,6 C43.0,14 58.0,28 60.0,44 C60.0,52 52.0,62 44.0,70 C46.0,58 54.0,46 54.0,38 C54.0,26 42.0,12 40.0,6 Z" fill="#B87654" opacity="0.35"/>
|
|
13
|
-
<path d="M40.0,8 C40.0,20 40.0,50 40.0,72" stroke="#B87654" stroke-width="1" stroke-opacity="0.4" fill="none" stroke-linecap="round"/>
|
|
14
|
-
<path d="M40.0,78 C48.0,70 66.0,60 66.0,46 C61.0,58 44.0,70 40.0,73 Z" fill="#B87654"/>
|
|
15
|
-
<path d="M40.0,2 C36.0,10 14.0,28 14.0,46 C19.0,30 41.0,8 40.0,7 Z" fill="#F5D4B8" opacity="0.7"/>
|
|
16
|
-
<path d="M40.0,2 C44.0,10 66.0,28 66.0,46 C66.0,60 48.0,70 40.0,78 C32.0,70 14.0,60 14.0,46 C14.0,28 36.0,10 40.0,2 Z" fill="none" stroke="#6B4230" stroke-width="2"/>
|
|
17
|
-
</g>
|
|
18
|
-
</svg>`;
|
|
19
|
-
function s(e, n) {
|
|
20
|
-
const t = document.createElement("div");
|
|
21
|
-
t.style.cssText = `
|
|
22
|
-
position: absolute;
|
|
23
|
-
inset: 0;
|
|
24
|
-
display: flex;
|
|
25
|
-
flex-direction: column;
|
|
26
|
-
align-items: center;
|
|
27
|
-
justify-content: center;
|
|
28
|
-
background: ${n};
|
|
29
|
-
z-index: 1000;
|
|
30
|
-
`;
|
|
31
|
-
const o = e.parentElement;
|
|
32
|
-
return o && (getComputedStyle(o).position === "static" && (o.style.position = "relative"), o.appendChild(t)), t;
|
|
33
|
-
}
|
|
34
|
-
function d(e) {
|
|
35
|
-
const n = document.createElement("div");
|
|
36
|
-
n.style.cssText = `
|
|
37
|
-
width: 200px;
|
|
38
|
-
height: 4px;
|
|
39
|
-
background: ${e.track};
|
|
40
|
-
border-radius: 2px;
|
|
41
|
-
overflow: hidden;
|
|
42
|
-
`;
|
|
43
|
-
const t = document.createElement("div");
|
|
44
|
-
return t.style.cssText = `
|
|
45
|
-
width: 0%;
|
|
46
|
-
height: 100%;
|
|
47
|
-
background: ${e.bar};
|
|
48
|
-
transition: width 0.15s ease-out;
|
|
49
|
-
`, n.appendChild(t), { track: n, bar: t };
|
|
50
|
-
}
|
|
51
|
-
function c(e, n) {
|
|
52
|
-
let t = null, o = null;
|
|
53
|
-
return {
|
|
54
|
-
show() {
|
|
55
|
-
t = s(e, n.bg);
|
|
56
|
-
const a = document.createElement("div");
|
|
57
|
-
a.innerHTML = u, a.style.cssText = "width: 64px; height: 64px; margin-bottom: 24px;", t.appendChild(a);
|
|
58
|
-
const r = d(n);
|
|
59
|
-
return o = r.bar, t.appendChild(r.track), () => {
|
|
60
|
-
t?.remove(), t = null, o = null;
|
|
61
|
-
};
|
|
62
|
-
},
|
|
63
|
-
update(a) {
|
|
64
|
-
o && (o.style.width = `${a * 100}%`);
|
|
65
|
-
}
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
function p(e, n) {
|
|
69
|
-
let t = null, o = null;
|
|
70
|
-
return {
|
|
71
|
-
show() {
|
|
72
|
-
t = s(e, n.bg);
|
|
73
|
-
const a = d(n);
|
|
74
|
-
return o = a.bar, t.appendChild(a.track), () => {
|
|
75
|
-
t?.remove(), t = null, o = null;
|
|
76
|
-
};
|
|
77
|
-
},
|
|
78
|
-
update(a) {
|
|
79
|
-
o && (o.style.width = `${a * 100}%`);
|
|
80
|
-
}
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
const f = (e) => c(e, l), h = (e) => c(e, i), g = (e) => p(e, l), C = (e) => p(e, i);
|
|
84
|
-
export {
|
|
85
|
-
f as canvasLoading,
|
|
86
|
-
g as minimalDark,
|
|
87
|
-
C as minimalLight,
|
|
88
|
-
f as shallotDark,
|
|
89
|
-
h as shallotLight
|
|
90
|
-
};
|
|
91
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/standard/loading/index.ts"],"sourcesContent":["import type { Loading } from \"../../core\";\n\ninterface Theme {\n bg: string;\n track: string;\n bar: string;\n}\n\nconst dark: Theme = { bg: \"#1a1a1a\", track: \"#333\", bar: \"#E8A86B\" };\nconst light: Theme = { bg: \"#f5f5f5\", track: \"#ddd\", bar: \"#B87654\" };\n\nconst LOGO_SVG = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 80 80\">\n <defs>\n <radialGradient id=\"baseGradient\" cx=\"35%\" cy=\"30%\" r=\"70%\" fx=\"25%\" fy=\"20%\">\n <stop offset=\"0%\" stop-color=\"#F5D4B8\"/>\n <stop offset=\"45%\" stop-color=\"#E8A86B\"/>\n <stop offset=\"100%\" stop-color=\"#B87654\"/>\n </radialGradient>\n </defs>\n <g transform=\"rotate(35 40.0 40.0)\">\n <path d=\"M40.0,2 C44.0,10 66.0,28 66.0,46 C66.0,60 48.0,70 40.0,78 C32.0,70 14.0,60 14.0,46 C14.0,28 36.0,10 40.0,2 Z\" fill=\"url(#baseGradient)\"/>\n <path d=\"M40.0,6 C37.0,14 22.0,28 20.0,44 C20.0,52 28.0,62 36.0,70 C34.0,58 26.0,46 26.0,38 C26.0,26 38.0,12 40.0,6 Z\" fill=\"#B87654\" opacity=\"0.45\"/>\n <path d=\"M40.0,6 C43.0,14 58.0,28 60.0,44 C60.0,52 52.0,62 44.0,70 C46.0,58 54.0,46 54.0,38 C54.0,26 42.0,12 40.0,6 Z\" fill=\"#B87654\" opacity=\"0.35\"/>\n <path d=\"M40.0,8 C40.0,20 40.0,50 40.0,72\" stroke=\"#B87654\" stroke-width=\"1\" stroke-opacity=\"0.4\" fill=\"none\" stroke-linecap=\"round\"/>\n <path d=\"M40.0,78 C48.0,70 66.0,60 66.0,46 C61.0,58 44.0,70 40.0,73 Z\" fill=\"#B87654\"/>\n <path d=\"M40.0,2 C36.0,10 14.0,28 14.0,46 C19.0,30 41.0,8 40.0,7 Z\" fill=\"#F5D4B8\" opacity=\"0.7\"/>\n <path d=\"M40.0,2 C44.0,10 66.0,28 66.0,46 C66.0,60 48.0,70 40.0,78 C32.0,70 14.0,60 14.0,46 C14.0,28 36.0,10 40.0,2 Z\" fill=\"none\" stroke=\"#6B4230\" stroke-width=\"2\"/>\n </g>\n</svg>`;\n\nfunction createOverlay(canvas: HTMLCanvasElement, bg: string): HTMLDivElement {\n const overlay = document.createElement(\"div\");\n overlay.style.cssText = `\n position: absolute;\n inset: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n background: ${bg};\n z-index: 1000;\n `;\n\n const parent = canvas.parentElement;\n if (parent) {\n if (getComputedStyle(parent).position === \"static\") {\n parent.style.position = \"relative\";\n }\n parent.appendChild(overlay);\n }\n\n return overlay;\n}\n\nfunction createProgressBar(theme: Theme): { track: HTMLDivElement; bar: HTMLDivElement } {\n const track = document.createElement(\"div\");\n track.style.cssText = `\n width: 200px;\n height: 4px;\n background: ${theme.track};\n border-radius: 2px;\n overflow: hidden;\n `;\n\n const bar = document.createElement(\"div\");\n bar.style.cssText = `\n width: 0%;\n height: 100%;\n background: ${theme.bar};\n transition: width 0.15s ease-out;\n `;\n track.appendChild(bar);\n\n return { track, bar };\n}\n\nfunction shallotLoading(canvas: HTMLCanvasElement, theme: Theme): Loading {\n let overlay: HTMLDivElement | null = null;\n let bar: HTMLDivElement | null = null;\n\n return {\n show() {\n overlay = createOverlay(canvas, theme.bg);\n\n const logo = document.createElement(\"div\");\n logo.innerHTML = LOGO_SVG;\n logo.style.cssText = \"width: 64px; height: 64px; margin-bottom: 24px;\";\n overlay.appendChild(logo);\n\n const progressBar = createProgressBar(theme);\n bar = progressBar.bar;\n overlay.appendChild(progressBar.track);\n\n return () => {\n overlay?.remove();\n overlay = null;\n bar = null;\n };\n },\n\n update(progress) {\n if (bar) bar.style.width = `${progress * 100}%`;\n },\n };\n}\n\nfunction minimalLoading(canvas: HTMLCanvasElement, theme: Theme): Loading {\n let overlay: HTMLDivElement | null = null;\n let bar: HTMLDivElement | null = null;\n\n return {\n show() {\n overlay = createOverlay(canvas, theme.bg);\n const progressBar = createProgressBar(theme);\n bar = progressBar.bar;\n overlay.appendChild(progressBar.track);\n\n return () => {\n overlay?.remove();\n overlay = null;\n bar = null;\n };\n },\n\n update(progress) {\n if (bar) bar.style.width = `${progress * 100}%`;\n },\n };\n}\n\nexport const shallotDark = (canvas: HTMLCanvasElement): Loading => shallotLoading(canvas, dark);\nexport const shallotLight = (canvas: HTMLCanvasElement): Loading => shallotLoading(canvas, light);\nexport const minimalDark = (canvas: HTMLCanvasElement): Loading => minimalLoading(canvas, dark);\nexport const minimalLight = (canvas: HTMLCanvasElement): Loading => minimalLoading(canvas, light);\n\nexport { shallotDark as canvasLoading };\n"],"names":["dark","light","LOGO_SVG","createOverlay","canvas","bg","overlay","parent","createProgressBar","theme","track","bar","shallotLoading","logo","progressBar","progress","minimalLoading","shallotDark","shallotLight","minimalDark","minimalLight"],"mappings":"AAQA,MAAMA,IAAc,EAAE,IAAI,WAAW,OAAO,QAAQ,KAAK,UAAA,GACnDC,IAAe,EAAE,IAAI,WAAW,OAAO,QAAQ,KAAK,UAAA,GAEpDC,IAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmBjB,SAASC,EAAcC,GAA2BC,GAA4B;AAC1E,QAAMC,IAAU,SAAS,cAAc,KAAK;AAC5C,EAAAA,EAAQ,MAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAOND,CAAE;AAAA;AAAA;AAIpB,QAAME,IAASH,EAAO;AACtB,SAAIG,MACI,iBAAiBA,CAAM,EAAE,aAAa,aACtCA,EAAO,MAAM,WAAW,aAE5BA,EAAO,YAAYD,CAAO,IAGvBA;AACX;AAEA,SAASE,EAAkBC,GAA8D;AACrF,QAAMC,IAAQ,SAAS,cAAc,KAAK;AAC1C,EAAAA,EAAM,MAAM,UAAU;AAAA;AAAA;AAAA,sBAGJD,EAAM,KAAK;AAAA;AAAA;AAAA;AAK7B,QAAME,IAAM,SAAS,cAAc,KAAK;AACxC,SAAAA,EAAI,MAAM,UAAU;AAAA;AAAA;AAAA,sBAGFF,EAAM,GAAG;AAAA;AAAA,OAG3BC,EAAM,YAAYC,CAAG,GAEd,EAAE,OAAAD,GAAO,KAAAC,EAAA;AACpB;AAEA,SAASC,EAAeR,GAA2BK,GAAuB;AACtE,MAAIH,IAAiC,MACjCK,IAA6B;AAEjC,SAAO;AAAA,IACH,OAAO;AACH,MAAAL,IAAUH,EAAcC,GAAQK,EAAM,EAAE;AAExC,YAAMI,IAAO,SAAS,cAAc,KAAK;AACzC,MAAAA,EAAK,YAAYX,GACjBW,EAAK,MAAM,UAAU,mDACrBP,EAAQ,YAAYO,CAAI;AAExB,YAAMC,IAAcN,EAAkBC,CAAK;AAC3C,aAAAE,IAAMG,EAAY,KAClBR,EAAQ,YAAYQ,EAAY,KAAK,GAE9B,MAAM;AACT,QAAAR,GAAS,OAAA,GACTA,IAAU,MACVK,IAAM;AAAA,MACV;AAAA,IACJ;AAAA,IAEA,OAAOI,GAAU;AACb,MAAIJ,MAAKA,EAAI,MAAM,QAAQ,GAAGI,IAAW,GAAG;AAAA,IAChD;AAAA,EAAA;AAER;AAEA,SAASC,EAAeZ,GAA2BK,GAAuB;AACtE,MAAIH,IAAiC,MACjCK,IAA6B;AAEjC,SAAO;AAAA,IACH,OAAO;AACH,MAAAL,IAAUH,EAAcC,GAAQK,EAAM,EAAE;AACxC,YAAMK,IAAcN,EAAkBC,CAAK;AAC3C,aAAAE,IAAMG,EAAY,KAClBR,EAAQ,YAAYQ,EAAY,KAAK,GAE9B,MAAM;AACT,QAAAR,GAAS,OAAA,GACTA,IAAU,MACVK,IAAM;AAAA,MACV;AAAA,IACJ;AAAA,IAEA,OAAOI,GAAU;AACb,MAAIJ,MAAKA,EAAI,MAAM,QAAQ,GAAGI,IAAW,GAAG;AAAA,IAChD;AAAA,EAAA;AAER;AAEO,MAAME,IAAc,CAACb,MAAuCQ,EAAeR,GAAQJ,CAAI,GACjFkB,IAAe,CAACd,MAAuCQ,EAAeR,GAAQH,CAAK,GACnFkB,IAAc,CAACf,MAAuCY,EAAeZ,GAAQJ,CAAI,GACjFoB,IAAe,CAAChB,MAAuCY,EAAeZ,GAAQH,CAAK;"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
export declare const RenderMode: {
|
|
2
|
-
readonly Raster: 0;
|
|
3
|
-
readonly Raytracing: 1;
|
|
4
|
-
};
|
|
5
|
-
export declare const DebugMode: {
|
|
6
|
-
readonly Color: 0;
|
|
7
|
-
readonly Depth: 1;
|
|
8
|
-
readonly Normal: 2;
|
|
9
|
-
readonly Material: 3;
|
|
10
|
-
readonly Hit: 4;
|
|
11
|
-
};
|
|
12
|
-
export declare const Camera: {
|
|
13
|
-
fov: number[];
|
|
14
|
-
near: number[];
|
|
15
|
-
far: number[];
|
|
16
|
-
active: number[];
|
|
17
|
-
clearColor: number[];
|
|
18
|
-
renderMode: number[];
|
|
19
|
-
debugMode: number[];
|
|
20
|
-
};
|
|
21
|
-
export declare const Tonemap: {
|
|
22
|
-
exposure: number[];
|
|
23
|
-
};
|
|
24
|
-
export declare const FXAA: {};
|
|
25
|
-
export declare const Vignette: {
|
|
26
|
-
strength: number[];
|
|
27
|
-
inner: number[];
|
|
28
|
-
outer: number[];
|
|
29
|
-
};
|
|
30
|
-
export declare function unpackColor(packed: number): {
|
|
31
|
-
r: number;
|
|
32
|
-
g: number;
|
|
33
|
-
b: number;
|
|
34
|
-
};
|
|
35
|
-
export declare function uploadCamera(device: GPUDevice, buffer: GPUBuffer, eid: number, aspect: number): void;
|
|
36
|
-
//# sourceMappingURL=camera.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"camera.d.ts","sourceRoot":"","sources":["../../../src/standard/render/camera.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,UAAU;;;CAGb,CAAC;AAEX,eAAO,MAAM,SAAS;;;;;;CAMZ,CAAC;AAEX,eAAO,MAAM,MAAM;SACJ,MAAM,EAAE;UACP,MAAM,EAAE;SACT,MAAM,EAAE;YACL,MAAM,EAAE;gBACJ,MAAM,EAAE;gBACR,MAAM,EAAE;eACT,MAAM,EAAE;CAC5B,CAAC;AAcF,eAAO,MAAM,OAAO;cACA,MAAM,EAAE;CAC3B,CAAC;AAMF,eAAO,MAAM,IAAI,IAAK,CAAC;AAEvB,eAAO,MAAM,QAAQ;cACD,MAAM,EAAE;WACX,MAAM,EAAE;WACR,MAAM,EAAE;CACxB,CAAC;AAMF,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAM/E;AAED,wBAAgB,YAAY,CACxB,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,SAAS,EACjB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,GACf,IAAI,CAaN"}
|