@taole/giftstage 0.1.36 → 0.2.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/README.md +770 -694
- package/dist/core/audio-manager.d.ts +10 -1
- package/dist/core/gift-stage.d.ts +63 -1
- package/dist/core/index.d.ts +4 -4
- package/dist/core/post-animator.d.ts +1 -1
- package/dist/core/render-manager.d.ts +55 -6
- package/dist/{gift-stage.cjs.js → gift-stage.cjs} +1401 -287
- package/dist/gift-stage.es.js +11500 -6094
- package/dist/gpu/backend-operation-result.d.ts +6 -0
- package/dist/gpu/detect.d.ts +1 -1
- package/dist/gpu/index.d.ts +3 -3
- package/dist/gpu/webgl1-backend.d.ts +8 -4
- package/dist/gpu/webgl2-backend.d.ts +154 -4
- package/dist/gpu/webgpu-backend.d.ts +130 -4
- package/dist/index.d.ts +36 -27
- package/dist/parsers/atlas-builder.d.ts +1 -1
- package/dist/parsers/index.d.ts +7 -7
- package/dist/parsers/svga-parser-worker-client.d.ts +1 -1
- package/dist/parsers/svga-parser.d.ts +1 -1
- package/dist/parsers/svga-proto-js.d.ts +1 -1
- package/dist/parsers/svga-sprite-table-binary.d.ts +1 -1
- package/dist/parsers/svga-sprite-table.d.ts +1 -1
- package/dist/parsers/svga-worker-payload-binary.d.ts +3 -3
- package/dist/parsers/vap-config-parser.d.ts +1 -1
- package/dist/plugin/motion-track.d.ts +19 -0
- package/dist/plugin/playback-scope.d.ts +42 -0
- package/dist/plugin/types.d.ts +183 -0
- package/dist/public.d.ts +2 -0
- package/dist/renderers/alpha-video-renderer.d.ts +1 -1
- package/dist/renderers/image-renderer.d.ts +1 -1
- package/dist/renderers/index.d.ts +4 -4
- package/dist/renderers/particle-batch-renderer.d.ts +19 -0
- package/dist/renderers/svga-batch-renderer.d.ts +140 -7
- package/dist/renderers/vap-renderer.d.ts +1 -1
- package/dist/shaders/index.d.ts +20 -0
- package/dist/types/index.d.ts +357 -6
- package/dist/utils/clip-mesh.d.ts +13 -0
- package/dist/utils/gift-object-fit.d.ts +2 -2
- package/dist/utils/gift-transform.d.ts +3 -1
- package/dist/utils/resource-cache.d.ts +1 -1
- package/dist/utils/slot-content.d.ts +1 -1
- package/dist/utils/svga-binary-cache.d.ts +2 -2
- package/dist/utils/svga-frame-timeline.d.ts +95 -0
- package/dist/utils/svga-hybrid-command-table.d.ts +12 -0
- package/dist/utils/svga-slot-state-schema.d.ts +28 -0
- package/dist/utils/vap-mix-composer.d.ts +1 -1
- package/dist/utils/wc-atlas-upload-size.d.ts +1 -1
- package/dist/wasm/wasm-bridge.d.ts +1 -1
- package/dist/workers/svga-atlas-worker-client.d.ts +1 -1
- package/dist/workers/svga-clip-worker-client.d.ts +1 -1
- package/package.json +81 -76
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { SVGAHybridCommandTable, VideoEntity } from '../types/index.js';
|
|
2
|
+
export declare const SVGA_HYBRID_OP_TEXTURE = 0;
|
|
3
|
+
export declare const SVGA_HYBRID_OP_SHAPE = 1;
|
|
4
|
+
export declare const SVGA_HYBRID_OP_CLIP_WRITE = 2;
|
|
5
|
+
export declare const SVGA_HYBRID_OP_CLIP_TEST = 3;
|
|
6
|
+
export declare const SVGA_HYBRID_OP_CLIP_CLEAR = 4;
|
|
7
|
+
/**
|
|
8
|
+
* Compiles the SVGA paint graph once per resource. Runtime Hybrid rendering
|
|
9
|
+
* indexes one immutable frame slice and never scans all sprite rows or resolves
|
|
10
|
+
* image/shape/clip keys on the hot path.
|
|
11
|
+
*/
|
|
12
|
+
export declare function buildSVGAHybridCommandTable(entity: VideoEntity): SVGAHybridCommandTable;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical four-vec4 SVGA slot/Hybrid instance schema consumed by TypeScript,
|
|
3
|
+
* WebGL2 GLSL and WebGPU WGSL:
|
|
4
|
+
*
|
|
5
|
+
* 0..3 parent affine (a, b, c, d)
|
|
6
|
+
* 4..7 translation x/y, opacity, authoritative frame
|
|
7
|
+
* 8..11 outer clip x0/y0/x1/y1
|
|
8
|
+
* 12..15 clip enabled, metadata base, atlas page, motion track + 1
|
|
9
|
+
*/
|
|
10
|
+
export declare const SVGA_SLOT_STATE_FLOATS = 16;
|
|
11
|
+
export declare const SVGA_SLOT_STATE_INDEX: Readonly<{
|
|
12
|
+
readonly parentA: 0;
|
|
13
|
+
readonly parentB: 1;
|
|
14
|
+
readonly parentC: 2;
|
|
15
|
+
readonly parentD: 3;
|
|
16
|
+
readonly translateX: 4;
|
|
17
|
+
readonly translateY: 5;
|
|
18
|
+
readonly opacity: 6;
|
|
19
|
+
readonly frame: 7;
|
|
20
|
+
readonly clipX0: 8;
|
|
21
|
+
readonly clipY0: 9;
|
|
22
|
+
readonly clipX1: 10;
|
|
23
|
+
readonly clipY1: 11;
|
|
24
|
+
readonly clipEnabled: 12;
|
|
25
|
+
readonly metadataBase: 13;
|
|
26
|
+
readonly atlasPage: 14;
|
|
27
|
+
readonly motionTrackPlusOne: 15;
|
|
28
|
+
}>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ResolvedVAPResource, VAPConfig, VAPFrameObj } from '../types';
|
|
1
|
+
import type { ResolvedVAPResource, VAPConfig, VAPFrameObj } from '../types/index.js';
|
|
2
2
|
export declare function buildVAPMixShaderSources(textureCount: number, positionSlotCount: number, webgl2: boolean): {
|
|
3
3
|
vertex: string;
|
|
4
4
|
fragment: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { GiftSlot, VAPConfig } from '../types';
|
|
1
|
+
import type { GiftSlot, VAPConfig } from '../types/index.js';
|
|
2
2
|
/**
|
|
3
3
|
* Atlas texel size for a WebCodecs frame: uniform downscale so the full frame matches
|
|
4
4
|
* on-screen footprint (same scale factor as gift renderers use for layout).
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { SVGAAtlasWorkerPageResult, SVGAAtlasWorkerRect } from './svga-atlas-worker';
|
|
1
|
+
import type { SVGAAtlasWorkerPageResult, SVGAAtlasWorkerRect } from './svga-atlas-worker.js';
|
|
2
2
|
export interface SVGAAtlasWorkerBuildOptions {
|
|
3
3
|
maxSize: number;
|
|
4
4
|
padding: number;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ClipMeshData } from '../utils/clip-mesh.js';
|
|
2
2
|
export declare function canUseSVGAClipWorker(): boolean;
|
|
3
3
|
export declare function requestSVGAClipMeshesInWorker(paths: string[], options?: {
|
|
4
4
|
workerTimeSliceMs?: number;
|
package/package.json
CHANGED
|
@@ -1,77 +1,82 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@taole/giftstage",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "High-performance WebGPU/WebGL gift animation player unifying SVGA, VAP, AlphaVideo, and images",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"main": "dist/gift-stage.cjs
|
|
7
|
-
"module": "dist/gift-stage.es.js",
|
|
8
|
-
"types": "dist/
|
|
9
|
-
"exports": {
|
|
10
|
-
".": {
|
|
11
|
-
"types": "./dist/
|
|
12
|
-
"import": "./dist/gift-stage.es.js",
|
|
13
|
-
"require": "./dist/gift-stage.cjs
|
|
14
|
-
}
|
|
15
|
-
},
|
|
16
|
-
"publishConfig": {
|
|
17
|
-
"access": "public",
|
|
18
|
-
"registry": "https://registry.npmjs.org/"
|
|
19
|
-
},
|
|
20
|
-
"files": [
|
|
21
|
-
"dist",
|
|
22
|
-
"!dist/**/*.map",
|
|
23
|
-
"!dist/bundle-report.*.html",
|
|
24
|
-
"!dist/fixtures/**"
|
|
25
|
-
],
|
|
26
|
-
"scripts": {
|
|
27
|
-
"dev": "vite",
|
|
28
|
-
"build": "tsc --noEmit && vite build && tsc -p tsconfig.build.json",
|
|
29
|
-
"build:analyze": "tsc --noEmit && vite build --mode analyze-es && vite build --mode analyze-cjs && tsc -p tsconfig.build.json",
|
|
30
|
-
"build:demo": "tsc --noEmit && vite build --config vite.demo.config.ts && node -e \"const fs=require('fs'); fs.mkdirSync('dist-demo/static',{recursive:true}); fs.copyFileSync('static/vap.min.js','dist-demo/static/vap.min.js');\"",
|
|
31
|
-
"build:wasm": "echo \"Requires: cargo install wasm-pack\" && cd wasm && wasm-pack build --target web --out-dir pkg",
|
|
32
|
-
"test": "vitest run",
|
|
33
|
-
"test:watch": "vitest",
|
|
34
|
-
"test:browser": "vitest run --browser.enabled --browser.name=chromium",
|
|
35
|
-
"test:e2e": "playwright test",
|
|
1
|
+
{
|
|
2
|
+
"name": "@taole/giftstage",
|
|
3
|
+
"version": "0.2.2",
|
|
4
|
+
"description": "High-performance WebGPU/WebGL gift animation player unifying SVGA, VAP, AlphaVideo, and images",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/gift-stage.cjs",
|
|
7
|
+
"module": "dist/gift-stage.es.js",
|
|
8
|
+
"types": "dist/public.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/public.d.ts",
|
|
12
|
+
"import": "./dist/gift-stage.es.js",
|
|
13
|
+
"require": "./dist/gift-stage.cjs"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"publishConfig": {
|
|
17
|
+
"access": "public",
|
|
18
|
+
"registry": "https://registry.npmjs.org/"
|
|
19
|
+
},
|
|
20
|
+
"files": [
|
|
21
|
+
"dist",
|
|
22
|
+
"!dist/**/*.map",
|
|
23
|
+
"!dist/bundle-report.*.html",
|
|
24
|
+
"!dist/fixtures/**"
|
|
25
|
+
],
|
|
26
|
+
"scripts": {
|
|
27
|
+
"dev": "vite",
|
|
28
|
+
"build": "tsc --noEmit && vite build && tsc -p tsconfig.build.json && node scripts/write-public-types.mjs",
|
|
29
|
+
"build:analyze": "tsc --noEmit && vite build --mode analyze-es && vite build --mode analyze-cjs && tsc -p tsconfig.build.json && node scripts/write-public-types.mjs",
|
|
30
|
+
"build:demo": "tsc --noEmit && vite build --config vite.demo.config.ts && node -e \"const fs=require('fs'); fs.mkdirSync('dist-demo/static',{recursive:true}); fs.copyFileSync('static/vap.min.js','dist-demo/static/vap.min.js');\"",
|
|
31
|
+
"build:wasm": "echo \"Requires: cargo install wasm-pack\" && cd wasm && wasm-pack build --target web --out-dir pkg",
|
|
32
|
+
"test": "vitest run",
|
|
33
|
+
"test:watch": "vitest",
|
|
34
|
+
"test:browser": "vitest run --browser.enabled --browser.name=chromium",
|
|
35
|
+
"test:e2e": "playwright test",
|
|
36
36
|
"test:perf": "node scripts/run-performance.mjs",
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
"@
|
|
47
|
-
"@types/
|
|
48
|
-
"@
|
|
49
|
-
"@
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
"
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
37
|
+
"test:real-assets": "node scripts/verify-real-svga-manifest.mjs",
|
|
38
|
+
"test:package": "npm run build && node scripts/check-package-contract.mjs",
|
|
39
|
+
"perf:record": "node scripts/run-performance.mjs --record",
|
|
40
|
+
"lint": "eslint src/ tests/",
|
|
41
|
+
"format": "prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"",
|
|
42
|
+
"typecheck": "tsc --noEmit",
|
|
43
|
+
"dp": "node publish/deploy.mjs"
|
|
44
|
+
},
|
|
45
|
+
"devDependencies": {
|
|
46
|
+
"@playwright/test": "^1.50.0",
|
|
47
|
+
"@types/dom-webcodecs": "^0.1.11",
|
|
48
|
+
"@types/earcut": "^3.0.0",
|
|
49
|
+
"@types/node": "^25.6.0",
|
|
50
|
+
"@types/pngjs": "^6.0.5",
|
|
51
|
+
"@vitest/browser": "^3.0.0",
|
|
52
|
+
"eslint": "^9.0.0",
|
|
53
|
+
"fake-indexeddb": "^6.2.5",
|
|
54
|
+
"jsdom": "^24.1.3",
|
|
55
|
+
"playwright": "^1.50.0",
|
|
56
|
+
"pngjs": "^7.0.0",
|
|
57
|
+
"prettier": "^3.4.0",
|
|
58
|
+
"rollup-plugin-visualizer": "^7.0.1",
|
|
59
|
+
"typescript": "^5.7.0",
|
|
60
|
+
"typescript-eslint": "^8.68.0",
|
|
61
|
+
"vite": "^6.0.0",
|
|
62
|
+
"vite-plugin-wasm": "^3.4.0",
|
|
63
|
+
"vitest": "^3.0.0"
|
|
64
|
+
},
|
|
65
|
+
"keywords": [
|
|
66
|
+
"svga",
|
|
67
|
+
"vap",
|
|
68
|
+
"alpha-video",
|
|
69
|
+
"image",
|
|
70
|
+
"webgl",
|
|
71
|
+
"webgpu",
|
|
72
|
+
"animation",
|
|
73
|
+
"gift",
|
|
74
|
+
"transparent-video"
|
|
75
|
+
],
|
|
76
|
+
"license": "MIT",
|
|
77
|
+
"dependencies": {
|
|
78
|
+
"@webgpu/types": "^0.1.69",
|
|
79
|
+
"earcut": "^3.0.2",
|
|
80
|
+
"mp4box": "^2.3.0"
|
|
81
|
+
}
|
|
82
|
+
}
|