@codexo/exojs 0.9.0 → 0.10.0
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/CHANGELOG.md +44 -0
- package/README.md +14 -14
- package/dist/esm/core/Application.d.ts +25 -6
- package/dist/esm/core/Application.js +42 -8
- package/dist/esm/core/Application.js.map +1 -1
- package/dist/esm/core/Perf.d.ts +23 -0
- package/dist/esm/core/Perf.js +49 -0
- package/dist/esm/core/Perf.js.map +1 -0
- package/dist/esm/core/Scene.d.ts +8 -8
- package/dist/esm/core/Scene.js +7 -7
- package/dist/esm/core/Scene.js.map +1 -1
- package/dist/esm/core/SceneManager.js +2 -2
- package/dist/esm/core/SceneManager.js.map +1 -1
- package/dist/esm/core/SceneNode.d.ts +0 -3
- package/dist/esm/core/SceneNode.js +0 -9
- package/dist/esm/core/SceneNode.js.map +1 -1
- package/dist/esm/core/capabilities.d.ts +2 -0
- package/dist/esm/core/capabilities.js +15 -0
- package/dist/esm/core/capabilities.js.map +1 -1
- package/dist/esm/core/index.d.ts +1 -0
- package/dist/esm/core/types.d.ts +1 -1
- package/dist/esm/core/utils.d.ts +12 -0
- package/dist/esm/core/utils.js +18 -1
- package/dist/esm/core/utils.js.map +1 -1
- package/dist/esm/index.js +14 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/particles/ParticleSystem.d.ts +8 -5
- package/dist/esm/particles/ParticleSystem.js +9 -5
- package/dist/esm/particles/ParticleSystem.js.map +1 -1
- package/dist/esm/particles/distributions/{Gradient.d.ts → ColorGradient.d.ts} +5 -5
- package/dist/esm/particles/distributions/{Gradient.js → ColorGradient.js} +5 -5
- package/dist/esm/particles/distributions/ColorGradient.js.map +1 -0
- package/dist/esm/particles/distributions/Distribution.d.ts +2 -2
- package/dist/esm/particles/distributions/index.d.ts +2 -2
- package/dist/esm/particles/gpu/ParticleGpuState.js +1 -1
- package/dist/esm/particles/modules/ColorOverLifetime.d.ts +3 -3
- package/dist/esm/particles/modules/ColorOverLifetime.js.map +1 -1
- package/dist/esm/particles/modules/ColorOverSpeed.d.ts +3 -3
- package/dist/esm/particles/modules/ColorOverSpeed.js.map +1 -1
- package/dist/esm/particles/modules/UpdateModule.d.ts +2 -2
- package/dist/esm/particles/modules/UpdateModule.js +1 -1
- package/dist/esm/particles/modules/WgslContribution.d.ts +2 -2
- package/dist/esm/rendering/Camera.d.ts +33 -0
- package/dist/esm/rendering/Camera.js +38 -0
- package/dist/esm/rendering/Camera.js.map +1 -0
- package/dist/esm/rendering/Container.d.ts +5 -24
- package/dist/esm/rendering/Container.js +8 -71
- package/dist/esm/rendering/Container.js.map +1 -1
- package/dist/esm/rendering/Drawable.d.ts +8 -10
- package/dist/esm/rendering/Drawable.js +12 -20
- package/dist/esm/rendering/Drawable.js.map +1 -1
- package/dist/esm/rendering/RenderBackend.d.ts +18 -0
- package/dist/esm/rendering/RenderNode.d.ts +81 -8
- package/dist/esm/rendering/RenderNode.js +121 -144
- package/dist/esm/rendering/RenderNode.js.map +1 -1
- package/dist/esm/rendering/RenderTarget.d.ts +13 -0
- package/dist/esm/rendering/RenderTarget.js +13 -0
- package/dist/esm/rendering/RenderTarget.js.map +1 -1
- package/dist/esm/rendering/RenderTargetPass.js +17 -0
- package/dist/esm/rendering/RenderTargetPass.js.map +1 -1
- package/dist/esm/rendering/RenderingContext.d.ts +87 -0
- package/dist/esm/rendering/RenderingContext.js +157 -0
- package/dist/esm/rendering/RenderingContext.js.map +1 -0
- package/dist/esm/rendering/TransformBuffer.d.ts +38 -0
- package/dist/esm/rendering/TransformBuffer.js +116 -0
- package/dist/esm/rendering/TransformBuffer.js.map +1 -0
- package/dist/esm/rendering/filters/WebGpuShaderFilter.js +5 -12
- package/dist/esm/rendering/filters/WebGpuShaderFilter.js.map +1 -1
- package/dist/esm/rendering/geometry/Geometry.d.ts +40 -0
- package/dist/esm/rendering/geometry/Geometry.js +228 -0
- package/dist/esm/rendering/geometry/Geometry.js.map +1 -0
- package/dist/esm/rendering/geometry/GeometryAttribute.d.ts +32 -0
- package/dist/esm/rendering/geometry/QuadGeometry.d.ts +5 -0
- package/dist/esm/rendering/gradient/Gradient.d.ts +34 -0
- package/dist/esm/rendering/gradient/Gradient.js +114 -0
- package/dist/esm/rendering/gradient/Gradient.js.map +1 -0
- package/dist/esm/rendering/gradient/LinearGradient.d.ts +10 -0
- package/dist/esm/rendering/gradient/LinearGradient.js +26 -0
- package/dist/esm/rendering/gradient/LinearGradient.js.map +1 -0
- package/dist/esm/rendering/gradient/RadialGradient.d.ts +10 -0
- package/dist/esm/rendering/gradient/RadialGradient.js +25 -0
- package/dist/esm/rendering/gradient/RadialGradient.js.map +1 -0
- package/dist/esm/rendering/index.d.ts +16 -2
- package/dist/esm/rendering/material/Material.d.ts +114 -0
- package/dist/esm/rendering/material/Material.js +111 -0
- package/dist/esm/rendering/material/Material.js.map +1 -0
- package/dist/esm/rendering/material/MaterialKey.d.ts +18 -0
- package/dist/esm/rendering/material/MaterialKey.js +82 -0
- package/dist/esm/rendering/material/MaterialKey.js.map +1 -0
- package/dist/esm/rendering/material/MeshMaterial.d.ts +16 -0
- package/dist/esm/rendering/material/MeshMaterial.js +21 -0
- package/dist/esm/rendering/material/MeshMaterial.js.map +1 -0
- package/dist/esm/rendering/{mesh/MeshShader.d.ts → material/ShaderSource.d.ts} +29 -62
- package/dist/esm/rendering/{mesh/MeshShader.js → material/ShaderSource.js} +35 -62
- package/dist/esm/rendering/material/ShaderSource.js.map +1 -0
- package/dist/esm/rendering/material/SpriteMaterial.d.ts +15 -0
- package/dist/esm/rendering/material/SpriteMaterial.js +20 -0
- package/dist/esm/rendering/material/SpriteMaterial.js.map +1 -0
- package/dist/esm/rendering/mesh/Mesh.d.ts +29 -12
- package/dist/esm/rendering/mesh/Mesh.js +122 -3
- package/dist/esm/rendering/mesh/Mesh.js.map +1 -1
- package/dist/esm/rendering/pass/RenderPassCoordinator.d.ts +63 -0
- package/dist/esm/rendering/pass/RenderPassDescriptor.d.ts +48 -0
- package/dist/esm/rendering/pass/RenderPassDescriptor.js +16 -0
- package/dist/esm/rendering/pass/RenderPassDescriptor.js.map +1 -0
- package/dist/esm/rendering/plan/RenderCommand.d.ts +67 -0
- package/dist/esm/rendering/plan/RenderCommand.js +94 -0
- package/dist/esm/rendering/plan/RenderCommand.js.map +1 -0
- package/dist/esm/rendering/plan/RenderEffectExecutor.d.ts +10 -0
- package/dist/esm/rendering/plan/RenderEffectExecutor.js +159 -0
- package/dist/esm/rendering/plan/RenderEffectExecutor.js.map +1 -0
- package/dist/esm/rendering/plan/RenderPlan.d.ts +23 -0
- package/dist/esm/rendering/plan/RenderPlan.js +12 -0
- package/dist/esm/rendering/plan/RenderPlan.js.map +1 -0
- package/dist/esm/rendering/plan/RenderPlanBuilder.d.ts +31 -0
- package/dist/esm/rendering/plan/RenderPlanBuilder.js +242 -0
- package/dist/esm/rendering/plan/RenderPlanBuilder.js.map +1 -0
- package/dist/esm/rendering/plan/RenderPlanOptimizer.d.ts +10 -0
- package/dist/esm/rendering/plan/RenderPlanOptimizer.js +180 -0
- package/dist/esm/rendering/plan/RenderPlanOptimizer.js.map +1 -0
- package/dist/esm/rendering/plan/RenderPlanPlayer.d.ts +9 -0
- package/dist/esm/rendering/plan/RenderPlanPlayer.js +56 -0
- package/dist/esm/rendering/plan/RenderPlanPlayer.js.map +1 -0
- package/dist/esm/rendering/plan/RenderScope.d.ts +70 -0
- package/dist/esm/rendering/plan/RenderScope.js +16 -0
- package/dist/esm/rendering/plan/RenderScope.js.map +1 -0
- package/dist/esm/rendering/plan/playRenderTree.d.ts +4 -0
- package/dist/esm/rendering/plan/playRenderTree.js +19 -0
- package/dist/esm/rendering/plan/playRenderTree.js.map +1 -0
- package/dist/esm/rendering/sprite/Sprite.d.ts +22 -1
- package/dist/esm/rendering/sprite/Sprite.js +33 -2
- package/dist/esm/rendering/sprite/Sprite.js.map +1 -1
- package/dist/esm/rendering/sprite/spriteMaterialSources.d.ts +36 -0
- package/dist/esm/rendering/sprite/spriteMaterialSources.js +128 -0
- package/dist/esm/rendering/sprite/spriteMaterialSources.js.map +1 -0
- package/dist/esm/rendering/text/TextStyle.d.ts +1 -1
- package/dist/esm/rendering/texture/DataTexture.d.ts +5 -0
- package/dist/esm/rendering/texture/DataTexture.js +7 -0
- package/dist/esm/rendering/texture/DataTexture.js.map +1 -1
- package/dist/esm/rendering/video/Video.d.ts +3 -7
- package/dist/esm/rendering/video/Video.js +3 -8
- package/dist/esm/rendering/video/Video.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts +40 -0
- package/dist/esm/rendering/webgl2/WebGl2Backend.js +303 -22
- package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.d.ts +22 -2
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js +404 -112
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2PassCoordinator.d.ts +57 -0
- package/dist/esm/rendering/webgl2/WebGl2PassCoordinator.js +79 -0
- package/dist/esm/rendering/webgl2/WebGl2PassCoordinator.js.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.d.ts +12 -0
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js +214 -58
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2StencilClipper.d.ts +34 -0
- package/dist/esm/rendering/webgl2/WebGl2StencilClipper.js +169 -0
- package/dist/esm/rendering/webgl2/WebGl2StencilClipper.js.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2TextRenderer.js +4 -0
- package/dist/esm/rendering/webgl2/WebGl2TextRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/glsl/mesh.frag.js +1 -1
- package/dist/esm/rendering/webgl2/glsl/mesh.vert.js +1 -1
- package/dist/esm/rendering/webgl2/glsl/stencil-clip.frag.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/stencil-clip.frag.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/stencil-clip.vert.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/stencil-clip.vert.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts +50 -0
- package/dist/esm/rendering/webgpu/WebGpuBackend.js +135 -19
- package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js +22 -17
- package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts +24 -0
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js +488 -74
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js +13 -17
- package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.d.ts +141 -0
- package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.js +270 -0
- package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts +16 -0
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js +335 -26
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuStencilClipper.d.ts +57 -0
- package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js +257 -0
- package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuStencilState.d.ts +14 -0
- package/dist/esm/rendering/webgpu/WebGpuStencilState.js +36 -0
- package/dist/esm/rendering/webgpu/WebGpuStencilState.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js +14 -12
- package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.d.ts +16 -0
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js +57 -0
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js.map +1 -0
- package/dist/esm/resources/JsonStore.d.ts +18 -0
- package/dist/esm/resources/JsonStore.js +62 -0
- package/dist/esm/resources/JsonStore.js.map +1 -0
- package/dist/esm/resources/factories/ImageFactory.d.ts +14 -8
- package/dist/esm/resources/factories/ImageFactory.js +13 -6
- package/dist/esm/resources/factories/ImageFactory.js.map +1 -1
- package/dist/esm/resources/factories/TextureFactory.d.ts +4 -4
- package/dist/esm/resources/factories/TextureFactory.js +8 -4
- package/dist/esm/resources/factories/TextureFactory.js.map +1 -1
- package/dist/esm/resources/index.d.ts +1 -0
- package/dist/exo.esm.js +5424 -2205
- package/dist/exo.esm.js.map +1 -1
- package/package.json +30 -24
- package/dist/esm/particles/distributions/Gradient.js.map +0 -1
- package/dist/esm/rendering/mesh/MeshShader.js.map +0 -1
- package/dist/esm/vendor/webgl-debug.js +0 -1160
- package/dist/esm/vendor/webgl-debug.js.map +0 -1
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { IndexedDbStore } from './IndexedDbStore.js';
|
|
2
|
+
|
|
3
|
+
const defaultDatabaseName = 'exojs-json-store';
|
|
4
|
+
const defaultStoreName = '__json_store';
|
|
5
|
+
/**
|
|
6
|
+
* JSON-first key-value store built on top of {@link IndexedDbStore}.
|
|
7
|
+
*/
|
|
8
|
+
class JsonStore {
|
|
9
|
+
_storageName;
|
|
10
|
+
_store;
|
|
11
|
+
constructor(nameOrOptions = defaultDatabaseName) {
|
|
12
|
+
const options = typeof nameOrOptions === 'string' ? { name: nameOrOptions } : nameOrOptions;
|
|
13
|
+
const storageName = options.storeName ?? defaultStoreName;
|
|
14
|
+
this._storageName = storageName;
|
|
15
|
+
this._store = new IndexedDbStore({
|
|
16
|
+
name: options.name,
|
|
17
|
+
version: options.version,
|
|
18
|
+
migrations: options.migrations,
|
|
19
|
+
storeNames: [storageName],
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
async set(key, data) {
|
|
23
|
+
let payload;
|
|
24
|
+
try {
|
|
25
|
+
payload = JSON.stringify(data);
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
throw new Error('JsonStore.set() failed: data is not JSON-serializable.');
|
|
29
|
+
}
|
|
30
|
+
await this._store.save(this._storageName, key, payload);
|
|
31
|
+
}
|
|
32
|
+
async get(key) {
|
|
33
|
+
const payload = await this._store.load(this._storageName, key);
|
|
34
|
+
if (payload === null) {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
if (typeof payload !== 'string') {
|
|
38
|
+
throw new Error('JsonStore.get() failed: stored payload is not a JSON string.');
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
return JSON.parse(payload);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
throw new Error(`JsonStore.get() failed: invalid JSON payload for key "${key}".`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
async delete(key) {
|
|
48
|
+
return this._store.delete(this._storageName, key);
|
|
49
|
+
}
|
|
50
|
+
async has(key) {
|
|
51
|
+
return (await this.get(key)) !== null;
|
|
52
|
+
}
|
|
53
|
+
async clear() {
|
|
54
|
+
return this._store.clear(this._storageName);
|
|
55
|
+
}
|
|
56
|
+
destroy() {
|
|
57
|
+
this._store.destroy();
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export { JsonStore };
|
|
62
|
+
//# sourceMappingURL=JsonStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsonStore.js","sources":["../../../../src/resources/JsonStore.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAMA,MAAM,mBAAmB,GAAG,kBAAkB;AAC9C,MAAM,gBAAgB,GAAG,cAAc;AAEvC;;AAEG;MACU,SAAS,CAAA;AACH,IAAA,YAAY;AACZ,IAAA,MAAM;AAEvB,IAAA,WAAA,CAAmB,gBAA2C,mBAAmB,EAAA;AAC/E,QAAA,MAAM,OAAO,GAAG,OAAO,aAAa,KAAK,QAAQ,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,aAAa;AAC3F,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,IAAI,gBAAgB;AAEzD,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW;AAC/B,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,CAAC;YAC/B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,UAAU,EAAE,CAAC,WAAW,CAAC;AAC1B,SAAA,CAAC;IACJ;AAEO,IAAA,MAAM,GAAG,CAAC,GAAW,EAAE,IAAa,EAAA;AACzC,QAAA,IAAI,OAAe;AAEnB,QAAA,IAAI;AACF,YAAA,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAChC;AAAE,QAAA,MAAM;AACN,YAAA,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC;QAC3E;AAEA,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,OAAO,CAAC;IACzD;IAEO,MAAM,GAAG,CAAc,GAAW,EAAA;AACvC,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC;AAE9D,QAAA,IAAI,OAAO,KAAK,IAAI,EAAE;AACpB,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC/B,YAAA,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC;QACjF;AAEA,QAAA,IAAI;AACF,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAM;QACjC;AAAE,QAAA,MAAM;AACN,YAAA,MAAM,IAAI,KAAK,CAAC,yDAAyD,GAAG,CAAA,EAAA,CAAI,CAAC;QACnF;IACF;IAEO,MAAM,MAAM,CAAC,GAAW,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC;IACnD;IAEO,MAAM,GAAG,CAAC,GAAW,EAAA;QAC1B,OAAO,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI;IACvC;AAEO,IAAA,MAAM,KAAK,GAAA;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;IAC7C;IAEO,OAAO,GAAA;AACZ,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;IACvB;AACD;;;;"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { AbstractAssetFactory } from '@/resources/AbstractAssetFactory';
|
|
2
|
+
/** Decoded image result from {@link ImageFactory.create}. */
|
|
3
|
+
export type DecodedImage = HTMLImageElement | ImageBitmap;
|
|
2
4
|
/** Construction options for {@link ImageFactory.create}. */
|
|
3
5
|
export interface ImageFactoryOptions {
|
|
4
6
|
/**
|
|
@@ -10,13 +12,17 @@ export interface ImageFactoryOptions {
|
|
|
10
12
|
}
|
|
11
13
|
/**
|
|
12
14
|
* {@link AssetFactory} implementation that loads PNG, JPG, WebP, AVIF, and
|
|
13
|
-
* other browser-supported raster image formats and produces a decoded
|
|
14
|
-
*
|
|
15
|
+
* other browser-supported raster image formats and produces a decoded image.
|
|
16
|
+
*
|
|
17
|
+
* When `createImageBitmap` is available (all modern browsers) the factory
|
|
18
|
+
* returns an {@link ImageBitmap} — a zero-copy GPU-upload path that avoids
|
|
19
|
+
* the HTMLImageElement render-pipeline overhead. On older environments it
|
|
20
|
+
* falls back to an {@link HTMLImageElement}.
|
|
15
21
|
*
|
|
16
22
|
* MIME type detection is performed automatically from the buffer's magic bytes;
|
|
17
23
|
* pass an explicit `mimeType` in options to override.
|
|
18
24
|
*/
|
|
19
|
-
export declare class ImageFactory extends AbstractAssetFactory<
|
|
25
|
+
export declare class ImageFactory extends AbstractAssetFactory<DecodedImage> {
|
|
20
26
|
readonly storageName = "image";
|
|
21
27
|
/**
|
|
22
28
|
* Reads the full response body as an {@link ArrayBuffer} for MIME-type
|
|
@@ -24,11 +30,11 @@ export declare class ImageFactory extends AbstractAssetFactory<HTMLImageElement>
|
|
|
24
30
|
*/
|
|
25
31
|
process(response: Response): Promise<ArrayBuffer>;
|
|
26
32
|
/**
|
|
27
|
-
* Decodes image bytes into a
|
|
33
|
+
* Decodes image bytes into a {@link DecodedImage}.
|
|
28
34
|
*
|
|
29
|
-
*
|
|
30
|
-
* `<img>` element
|
|
31
|
-
*
|
|
35
|
+
* Prefers `createImageBitmap` for a zero-copy GPU-upload path. Falls back
|
|
36
|
+
* to a temporary object URL + `<img>` element on environments that do not
|
|
37
|
+
* support `createImageBitmap`.
|
|
32
38
|
*/
|
|
33
|
-
create(source: ArrayBuffer, options?: ImageFactoryOptions): Promise<
|
|
39
|
+
create(source: ArrayBuffer, options?: ImageFactoryOptions): Promise<DecodedImage>;
|
|
34
40
|
}
|
|
@@ -3,8 +3,12 @@ import { determineMimeType } from '../utils.js';
|
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* {@link AssetFactory} implementation that loads PNG, JPG, WebP, AVIF, and
|
|
6
|
-
* other browser-supported raster image formats and produces a decoded
|
|
7
|
-
*
|
|
6
|
+
* other browser-supported raster image formats and produces a decoded image.
|
|
7
|
+
*
|
|
8
|
+
* When `createImageBitmap` is available (all modern browsers) the factory
|
|
9
|
+
* returns an {@link ImageBitmap} — a zero-copy GPU-upload path that avoids
|
|
10
|
+
* the HTMLImageElement render-pipeline overhead. On older environments it
|
|
11
|
+
* falls back to an {@link HTMLImageElement}.
|
|
8
12
|
*
|
|
9
13
|
* MIME type detection is performed automatically from the buffer's magic bytes;
|
|
10
14
|
* pass an explicit `mimeType` in options to override.
|
|
@@ -19,14 +23,17 @@ class ImageFactory extends AbstractAssetFactory {
|
|
|
19
23
|
return response.arrayBuffer();
|
|
20
24
|
}
|
|
21
25
|
/**
|
|
22
|
-
* Decodes image bytes into a
|
|
26
|
+
* Decodes image bytes into a {@link DecodedImage}.
|
|
23
27
|
*
|
|
24
|
-
*
|
|
25
|
-
* `<img>` element
|
|
26
|
-
*
|
|
28
|
+
* Prefers `createImageBitmap` for a zero-copy GPU-upload path. Falls back
|
|
29
|
+
* to a temporary object URL + `<img>` element on environments that do not
|
|
30
|
+
* support `createImageBitmap`.
|
|
27
31
|
*/
|
|
28
32
|
async create(source, options = {}) {
|
|
29
33
|
const blob = new Blob([source], { type: options.mimeType ?? determineMimeType(source) });
|
|
34
|
+
if (typeof createImageBitmap === 'function') {
|
|
35
|
+
return createImageBitmap(blob);
|
|
36
|
+
}
|
|
30
37
|
const objectUrl = this.createObjectUrl(blob);
|
|
31
38
|
return new Promise((resolve, reject) => {
|
|
32
39
|
const image = new Image();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageFactory.js","sources":["../../../../../src/resources/factories/ImageFactory.ts"],"sourcesContent":[null],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"ImageFactory.js","sources":["../../../../../src/resources/factories/ImageFactory.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAgBA;;;;;;;;;;;AAWG;AACG,MAAO,YAAa,SAAQ,oBAAkC,CAAA;IAClD,WAAW,GAAG,OAAO;AAErC;;;AAGG;IACI,MAAM,OAAO,CAAC,QAAkB,EAAA;AACrC,QAAA,OAAO,QAAQ,CAAC,WAAW,EAAE;IAC/B;AAEA;;;;;;AAMG;AACI,IAAA,MAAM,MAAM,CAAC,MAAmB,EAAE,UAA+B,EAAE,EAAA;QACxE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;AAExF,QAAA,IAAI,OAAO,iBAAiB,KAAK,UAAU,EAAE;AAC3C,YAAA,OAAO,iBAAiB,CAAC,IAAI,CAAC;QAChC;QAEA,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;QAE5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE;YACzB,MAAM,QAAQ,GAAG,MAAW;AAC1B,gBAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;AACjC,YAAA,CAAC;AAED,YAAA,KAAK,CAAC,gBAAgB,CACpB,MAAM,EACN,MAAK;AACH,gBAAA,QAAQ,EAAE;gBACV,OAAO,CAAC,KAAK,CAAC;AAChB,YAAA,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACf;AACD,YAAA,KAAK,CAAC,gBAAgB,CACpB,OAAO,EACP,MAAK;AACH,gBAAA,QAAQ,EAAE;AACV,gBAAA,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAClD,YAAA,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACf;AACD,YAAA,KAAK,CAAC,gBAAgB,CACpB,OAAO,EACP,MAAK;AACH,gBAAA,QAAQ,EAAE;AACV,gBAAA,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAClD,YAAA,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACf;AAED,YAAA,KAAK,CAAC,GAAG,GAAG,SAAS;AACvB,QAAA,CAAC,CAAC;IACJ;AACD;;;;"}
|
|
@@ -28,11 +28,11 @@ export declare class TextureFactory extends AbstractAssetFactory<Texture> {
|
|
|
28
28
|
*/
|
|
29
29
|
process(response: Response): Promise<ArrayBuffer>;
|
|
30
30
|
/**
|
|
31
|
-
* Decodes image bytes
|
|
32
|
-
* wraps it in a {@link Texture} with the given sampler options.
|
|
31
|
+
* Decodes image bytes and wraps the result in a {@link Texture}.
|
|
33
32
|
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
33
|
+
* Prefers `createImageBitmap` for a zero-copy GPU-upload path. Falls back
|
|
34
|
+
* to a temporary object URL + `<img>` element on environments that do not
|
|
35
|
+
* support `createImageBitmap`.
|
|
36
36
|
*/
|
|
37
37
|
create(source: ArrayBuffer, options?: TextureFactoryOptions): Promise<Texture>;
|
|
38
38
|
}
|
|
@@ -21,15 +21,19 @@ class TextureFactory extends AbstractAssetFactory {
|
|
|
21
21
|
return response.arrayBuffer();
|
|
22
22
|
}
|
|
23
23
|
/**
|
|
24
|
-
* Decodes image bytes
|
|
25
|
-
* wraps it in a {@link Texture} with the given sampler options.
|
|
24
|
+
* Decodes image bytes and wraps the result in a {@link Texture}.
|
|
26
25
|
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
26
|
+
* Prefers `createImageBitmap` for a zero-copy GPU-upload path. Falls back
|
|
27
|
+
* to a temporary object URL + `<img>` element on environments that do not
|
|
28
|
+
* support `createImageBitmap`.
|
|
29
29
|
*/
|
|
30
30
|
async create(source, options = {}) {
|
|
31
31
|
const { mimeType, samplerOptions } = options;
|
|
32
32
|
const blob = new Blob([source], { type: mimeType ?? determineMimeType(source) });
|
|
33
|
+
if (typeof createImageBitmap === 'function') {
|
|
34
|
+
const bitmap = await createImageBitmap(blob);
|
|
35
|
+
return new Texture(bitmap, samplerOptions);
|
|
36
|
+
}
|
|
33
37
|
const objectUrl = this.createObjectUrl(blob);
|
|
34
38
|
return new Promise((resolve, reject) => {
|
|
35
39
|
const image = new Image();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextureFactory.js","sources":["../../../../../src/resources/factories/TextureFactory.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAgBA;;;;;;;;AAQG;AACG,MAAO,cAAe,SAAQ,oBAA6B,CAAA;IAC/C,WAAW,GAAG,SAAS;AAEvC;;;AAGG;IACI,MAAM,OAAO,CAAC,QAAkB,EAAA;AACrC,QAAA,OAAO,QAAQ,CAAC,WAAW,EAAE;IAC/B;AAEA;;;;;;AAMG;AACI,IAAA,MAAM,MAAM,CAAC,MAAmB,EAAE,UAAiC,EAAE,EAAA;AAC1E,QAAA,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,OAAO;QAC5C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"TextureFactory.js","sources":["../../../../../src/resources/factories/TextureFactory.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAgBA;;;;;;;;AAQG;AACG,MAAO,cAAe,SAAQ,oBAA6B,CAAA;IAC/C,WAAW,GAAG,SAAS;AAEvC;;;AAGG;IACI,MAAM,OAAO,CAAC,QAAkB,EAAA;AACrC,QAAA,OAAO,QAAQ,CAAC,WAAW,EAAE;IAC/B;AAEA;;;;;;AAMG;AACI,IAAA,MAAM,MAAM,CAAC,MAAmB,EAAE,UAAiC,EAAE,EAAA;AAC1E,QAAA,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,OAAO;QAC5C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;AAEhF,QAAA,IAAI,OAAO,iBAAiB,KAAK,UAAU,EAAE;AAC3C,YAAA,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC;AAC5C,YAAA,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC;QAC5C;QAEA,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;QAE5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE;YACzB,MAAM,QAAQ,GAAG,MAAW;AAC1B,gBAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;AACjC,YAAA,CAAC;AAED,YAAA,KAAK,CAAC,gBAAgB,CACpB,MAAM,EACN,MAAK;AACH,gBAAA,QAAQ,EAAE;gBACV,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;AAC7C,YAAA,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACf;AACD,YAAA,KAAK,CAAC,gBAAgB,CACpB,OAAO,EACP,MAAK;AACH,gBAAA,QAAQ,EAAE;AACV,gBAAA,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAClD,YAAA,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACf;AACD,YAAA,KAAK,CAAC,gBAAgB,CACpB,OAAO,EACP,MAAK;AACH,gBAAA,QAAQ,EAAE;AACV,gBAAA,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAClD,YAAA,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACf;AAED,YAAA,KAAK,CAAC,GAAG,GAAG,SAAS;AACvB,QAAA,CAAC,CAAC;IACJ;AACD;;;;"}
|
|
@@ -26,6 +26,7 @@ export * from './factories/XmlFactory';
|
|
|
26
26
|
export * from './FactoryRegistry';
|
|
27
27
|
export * from './IndexedDbDatabase';
|
|
28
28
|
export * from './IndexedDbStore';
|
|
29
|
+
export * from './JsonStore';
|
|
29
30
|
export * from './Loader';
|
|
30
31
|
export * from './LoadingQueue';
|
|
31
32
|
export * from './NetworkOnlyStrategy';
|