@glissade/cli 0.10.0-pre.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/dist/cli.js +3 -1
- package/dist/shards.js +3 -2
- package/package.json +10 -10
package/dist/cli.js
CHANGED
|
@@ -54,7 +54,9 @@ render options:
|
|
|
54
54
|
--frame <n> render a single frame; --out foo.png writes that one file, --out <dir> writes a PNG into it
|
|
55
55
|
--format png-seq force a PNG sequence even when --out looks like a video
|
|
56
56
|
--workers <n> shard the frame range across n separate render processes, then concat (§5.6; video out only).
|
|
57
|
-
byte-identical to a single-worker render at the frame level
|
|
57
|
+
byte-identical to a single-worker render at the frame level. Helps CPU-bound, per-frame-cheap
|
|
58
|
+
scenes; a single render is already internally multi-threaded, so bandwidth-bound / blur-heavy
|
|
59
|
+
scenes (the bus is already saturated) gain little — shards just contend for memory bandwidth
|
|
58
60
|
--lossless-intermediate render shards as FFV1 + one final encode — the guaranteed byte-correct join
|
|
59
61
|
(auto-enabled when the encoder can't honor precise boundary keyframes, e.g. mpeg4/openh264)
|
|
60
62
|
--allow-gpu-shards permit sharding a scene with GPU/shader nodes (output is not reproducible across shards; §3.7)
|
package/dist/shards.js
CHANGED
|
@@ -105,8 +105,9 @@ function cliEntry() {
|
|
|
105
105
|
async function renderSharded(a) {
|
|
106
106
|
const { opts, scene, compiled, fps, duration, firstFrame, lastFrame, container } = a;
|
|
107
107
|
if (sceneHasGpuNodes(scene) && !opts.allowGpuShards) throw new ShardError("this scene contains a GPU/shader node, whose output is not reproducible across shard processes (§3.7). Re-run with --allow-gpu-shards to override, or render single-threaded (drop --workers).");
|
|
108
|
-
const
|
|
109
|
-
const
|
|
108
|
+
const effectiveLast = Math.min(lastFrame, Math.ceil(duration * fps) - 1);
|
|
109
|
+
const ranges = splitFrameRange(firstFrame, effectiveLast, a.workers);
|
|
110
|
+
const total = effectiveLast - firstFrame + 1;
|
|
110
111
|
const outAbs = resolve(opts.out);
|
|
111
112
|
mkdirSync(dirname(outAbs), { recursive: true });
|
|
112
113
|
const finalEnc = pickEncoder("video", container);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@glissade/cli",
|
|
3
|
-
"version": "0.10.0
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "glissade CLI: headless rendering via backend-skia (+ FFmpeg mux).",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -20,15 +20,15 @@
|
|
|
20
20
|
"@napi-rs/canvas": "^0.1.65",
|
|
21
21
|
"esbuild": "^0.28.0",
|
|
22
22
|
"jiti": "^2.4.2",
|
|
23
|
-
"@glissade/backend-skia": "0.10.0
|
|
24
|
-
"@glissade/core": "0.10.0
|
|
25
|
-
"@glissade/interact": "0.10.0
|
|
26
|
-
"@glissade/lottie": "0.10.0
|
|
27
|
-
"@glissade/svg": "0.10.0
|
|
28
|
-
"@glissade/narrate": "0.10.0
|
|
29
|
-
"@glissade/player": "0.10.0
|
|
30
|
-
"@glissade/scene": "0.10.0
|
|
31
|
-
"@glissade/sfx": "0.10.0
|
|
23
|
+
"@glissade/backend-skia": "0.10.0",
|
|
24
|
+
"@glissade/core": "0.10.0",
|
|
25
|
+
"@glissade/interact": "0.10.0",
|
|
26
|
+
"@glissade/lottie": "0.10.0",
|
|
27
|
+
"@glissade/svg": "0.10.0",
|
|
28
|
+
"@glissade/narrate": "0.10.0",
|
|
29
|
+
"@glissade/player": "0.10.0",
|
|
30
|
+
"@glissade/scene": "0.10.0",
|
|
31
|
+
"@glissade/sfx": "0.10.0"
|
|
32
32
|
},
|
|
33
33
|
"repository": {
|
|
34
34
|
"type": "git",
|