akarisub 0.2.2 → 1.0.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/README.md +198 -167
- package/THIRD_PARTY_NOTICES.md +55 -163
- package/dist/COPYRIGHT +56 -164
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -147
- package/dist/index.js.map +1 -0
- package/dist/ts/{ts/akarisub.d.ts → akarisub.d.ts} +80 -99
- package/dist/ts/akarisub.d.ts.map +1 -0
- package/dist/ts/akarisub.js +2086 -0
- package/dist/ts/akarisub.js.map +1 -0
- package/dist/ts/timing.d.ts +63 -0
- package/dist/ts/timing.d.ts.map +1 -0
- package/dist/ts/timing.js +219 -0
- package/dist/ts/timing.js.map +1 -0
- package/dist/ts/{ts/types.d.ts → types.d.ts} +103 -78
- package/dist/ts/types.d.ts.map +1 -0
- package/dist/ts/types.js +2 -0
- package/dist/ts/{ts/types.js.map → types.js.map} +1 -1
- package/dist/ts/{ts/utils.d.ts → utils.d.ts} +0 -31
- package/dist/ts/utils.d.ts.map +1 -0
- package/dist/ts/{ts/utils.js → utils.js} +0 -56
- package/dist/ts/utils.js.map +1 -0
- package/dist/ts/wasm.d.ts +12 -0
- package/dist/ts/wasm.d.ts.map +1 -0
- package/dist/ts/wasm.js +46 -0
- package/dist/ts/wasm.js.map +1 -0
- package/dist/ts/{ts/webgl2-renderer.d.ts → webgl2-renderer.d.ts} +0 -12
- package/dist/ts/webgl2-renderer.d.ts.map +1 -0
- package/dist/ts/{ts/webgl2-renderer.js → webgl2-renderer.js} +0 -27
- package/dist/ts/webgl2-renderer.js.map +1 -0
- package/dist/ts/{ts/webgpu-renderer.d.ts → webgpu-renderer.d.ts} +17 -16
- package/dist/ts/webgpu-renderer.d.ts.map +1 -0
- package/dist/ts/{ts/webgpu-renderer.js → webgpu-renderer.js} +148 -71
- package/dist/ts/webgpu-renderer.js.map +1 -0
- package/dist/ts/worker.d.ts +2 -0
- package/dist/ts/{ts/worker.d.ts.map → worker.d.ts.map} +1 -1
- package/dist/ts/{ts/worker.js → worker.js} +1064 -264
- package/dist/ts/worker.js.map +1 -0
- package/dist/wrapper.d.ts +8 -0
- package/dist/wrapper.d.ts.map +1 -0
- package/dist/{ts/index.js → wrapper.js} +4 -14
- package/dist/wrapper.js.map +1 -0
- package/package.json +24 -22
- package/pkg/akarisub.js +53 -0
- package/{dist/akarisub-worker.wasm → pkg/akarisub.wasm} +0 -0
- package/src/wrapper.ts +46 -0
- package/dist/akarisub-worker.js +0 -39
- package/dist/akarisub.umd.js +0 -159
- package/dist/ts/index.d.ts +0 -14
- package/dist/ts/index.d.ts.map +0 -1
- package/dist/ts/index.js.map +0 -1
- package/dist/ts/ts/akarisub.d.ts.map +0 -1
- package/dist/ts/ts/akarisub.js +0 -1073
- package/dist/ts/ts/akarisub.js.map +0 -1
- package/dist/ts/ts/types.d.ts.map +0 -1
- package/dist/ts/ts/types.js +0 -5
- package/dist/ts/ts/utils.d.ts.map +0 -1
- package/dist/ts/ts/utils.js.map +0 -1
- package/dist/ts/ts/webgl2-renderer.d.ts.map +0 -1
- package/dist/ts/ts/webgl2-renderer.js.map +0 -1
- package/dist/ts/ts/webgpu-renderer.d.ts.map +0 -1
- package/dist/ts/ts/webgpu-renderer.js.map +0 -1
- package/dist/ts/ts/worker.d.ts +0 -6
- package/dist/ts/ts/worker.js.map +0 -1
- package/dist/ts/wrapper.d.ts +0 -8
- package/dist/ts/wrapper.d.ts.map +0 -1
- package/dist/ts/wrapper.js +0 -9
- package/dist/ts/wrapper.js.map +0 -1
- package/src/ts/akarisub.ts +0 -1272
- package/src/ts/types.ts +0 -397
- package/src/ts/utils.ts +0 -512
- package/src/ts/webgl2-renderer.ts +0 -426
- package/src/ts/webgpu-renderer.ts +0 -691
- package/src/ts/worker.ts +0 -2052
- /package/{dist → assets}/default.woff2 +0 -0
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
/// <reference types="@webgpu/types" />
|
|
2
|
-
// Maximum images per batch
|
|
3
2
|
const MAX_IMAGES_PER_BATCH = 256;
|
|
4
|
-
// WebGPU max texture array layers
|
|
5
3
|
const MAX_TEXTURE_ARRAY_LAYERS = 256;
|
|
6
|
-
// WGSL Vertex Shader
|
|
7
4
|
const VERTEX_SHADER = /* wgsl */ `
|
|
8
5
|
struct VertexOutput {
|
|
9
6
|
@builtin(position) position: vec4f,
|
|
@@ -24,7 +21,6 @@ struct ImageData {
|
|
|
24
21
|
@group(0) @binding(0) var<uniform> uniforms: Uniforms;
|
|
25
22
|
@group(0) @binding(1) var<storage, read> imageData: array<ImageData>;
|
|
26
23
|
|
|
27
|
-
// Quad vertices (two triangles)
|
|
28
24
|
const QUAD_POSITIONS = array<vec2f, 6>(
|
|
29
25
|
vec2f(0.0, 0.0),
|
|
30
26
|
vec2f(1.0, 0.0),
|
|
@@ -45,10 +41,8 @@ fn vertexMain(
|
|
|
45
41
|
let quadPos = QUAD_POSITIONS[vertexIndex];
|
|
46
42
|
let wh = data.destRect.zw;
|
|
47
43
|
|
|
48
|
-
// Calculate pixel position
|
|
49
44
|
let pixelPos = data.destRect.xy + quadPos * wh;
|
|
50
45
|
|
|
51
|
-
// Convert to clip space (-1 to 1)
|
|
52
46
|
var clipPos = (pixelPos / uniforms.resolution) * 2.0 - 1.0;
|
|
53
47
|
clipPos.y = -clipPos.y;
|
|
54
48
|
|
|
@@ -60,7 +54,6 @@ fn vertexMain(
|
|
|
60
54
|
return output;
|
|
61
55
|
}
|
|
62
56
|
`;
|
|
63
|
-
// WGSL Fragment Shader
|
|
64
57
|
const FRAGMENT_SHADER = /* wgsl */ `
|
|
65
58
|
@group(0) @binding(2) var texArray: texture_2d_array<f32>;
|
|
66
59
|
|
|
@@ -83,26 +76,19 @@ fn fragmentMain(input: FragmentInput) -> @location(0) vec4f {
|
|
|
83
76
|
let data = imageData[input.instanceIndex];
|
|
84
77
|
let texIndex = u32(data.texInfo.z);
|
|
85
78
|
|
|
86
|
-
// Calculate texel coordinates
|
|
87
79
|
let texCoordF = floor(input.fragCoord.xy - input.destXY);
|
|
88
80
|
let texCoord = vec2i(texCoordF);
|
|
89
81
|
|
|
90
|
-
// Bounds check
|
|
91
82
|
let texSizeI = vec2i(input.texSize);
|
|
92
83
|
if (texCoord.x < 0 || texCoord.y < 0 || texCoord.x >= texSizeI.x || texCoord.y >= texSizeI.y) {
|
|
93
84
|
discard;
|
|
94
85
|
}
|
|
95
86
|
|
|
96
|
-
// Load from texture array
|
|
97
87
|
let color = textureLoad(texArray, texCoord, texIndex, 0);
|
|
98
88
|
|
|
99
|
-
// Premultiplied alpha output
|
|
100
89
|
return vec4f(color.rgb * color.a, color.a);
|
|
101
90
|
}
|
|
102
91
|
`;
|
|
103
|
-
/**
|
|
104
|
-
* Check if WebGPU is supported in the current browser.
|
|
105
|
-
*/
|
|
106
92
|
export function isWebGPUSupported() {
|
|
107
93
|
return typeof navigator !== 'undefined' && 'gpu' in navigator;
|
|
108
94
|
}
|
|
@@ -112,30 +98,27 @@ function toUint8View(data) {
|
|
|
112
98
|
}
|
|
113
99
|
return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
|
|
114
100
|
}
|
|
115
|
-
/**
|
|
116
|
-
* High-performance WebGPU subtitle renderer for AkariSub.
|
|
117
|
-
*/
|
|
118
101
|
export class WebGPURenderer {
|
|
119
102
|
device = null;
|
|
120
103
|
context = null;
|
|
104
|
+
stageContexts = new Map();
|
|
121
105
|
pipeline = null;
|
|
122
106
|
bindGroupLayout = null;
|
|
123
107
|
uniformBuffer = null;
|
|
124
108
|
imageDataBuffer = null;
|
|
125
|
-
// Texture array for batched rendering
|
|
126
109
|
textureArray = null;
|
|
127
110
|
textureArrayView = null;
|
|
128
111
|
textureArraySize = 0;
|
|
129
112
|
textureArrayWidth = 0;
|
|
130
113
|
textureArrayHeight = 0;
|
|
131
114
|
pendingDestroyTextures = [];
|
|
132
|
-
|
|
115
|
+
externalUploadCanvas = null;
|
|
116
|
+
externalUploadContext = null;
|
|
117
|
+
warnedExternalUploadFallback = false;
|
|
133
118
|
imageDataArray;
|
|
134
119
|
resolutionArray = new Float32Array(2);
|
|
135
|
-
// Bind group (recreated only when texture array changes)
|
|
136
120
|
bindGroup = null;
|
|
137
121
|
bindGroupDirty = true;
|
|
138
|
-
// Track canvas size to avoid redundant updates
|
|
139
122
|
lastCanvasWidth = 0;
|
|
140
123
|
lastCanvasHeight = 0;
|
|
141
124
|
format = 'bgra8unorm';
|
|
@@ -143,7 +126,6 @@ export class WebGPURenderer {
|
|
|
143
126
|
_initPromise = null;
|
|
144
127
|
_initialized = false;
|
|
145
128
|
constructor() {
|
|
146
|
-
// Pre-allocate buffer for max images (8 floats per image: destRect + texInfo)
|
|
147
129
|
this.imageDataArray = new Float32Array(MAX_IMAGES_PER_BATCH * 8);
|
|
148
130
|
}
|
|
149
131
|
async init() {
|
|
@@ -170,12 +152,10 @@ export class WebGPURenderer {
|
|
|
170
152
|
size: 16,
|
|
171
153
|
usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST
|
|
172
154
|
});
|
|
173
|
-
// Large storage buffer for all image data
|
|
174
155
|
this.imageDataBuffer = this.device.createBuffer({
|
|
175
156
|
size: MAX_IMAGES_PER_BATCH * 8 * 4,
|
|
176
157
|
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST
|
|
177
158
|
});
|
|
178
|
-
// Create initial texture array with reasonable defaults
|
|
179
159
|
this.createTextureArray(256, 256, 32);
|
|
180
160
|
this.bindGroupLayout = this.device.createBindGroupLayout({
|
|
181
161
|
entries: [
|
|
@@ -221,7 +201,6 @@ export class WebGPURenderer {
|
|
|
221
201
|
roundDim(n) {
|
|
222
202
|
return (Math.max(n, 64) + 63) & ~63;
|
|
223
203
|
}
|
|
224
|
-
// Round layers up to a multiple of 8, clamped to the WebGPU max
|
|
225
204
|
roundLayers(n) {
|
|
226
205
|
return Math.min((Math.max(n, 8) + 7) & ~7, MAX_TEXTURE_ARRAY_LAYERS);
|
|
227
206
|
}
|
|
@@ -242,7 +221,6 @@ export class WebGPURenderer {
|
|
|
242
221
|
this.textureArrayHeight = h;
|
|
243
222
|
this.textureArraySize = l;
|
|
244
223
|
this.bindGroupDirty = true;
|
|
245
|
-
// Clear all texture layers to transparent to prevent garbage border artifacts
|
|
246
224
|
const commandEncoder = this.device.createCommandEncoder();
|
|
247
225
|
for (let layer = 0; layer < l; layer++) {
|
|
248
226
|
const layerView = this.textureArray.createView({
|
|
@@ -265,7 +243,6 @@ export class WebGPURenderer {
|
|
|
265
243
|
this.device.queue.submit([commandEncoder.finish()]);
|
|
266
244
|
}
|
|
267
245
|
ensureTextureArray(maxWidth, maxHeight, count) {
|
|
268
|
-
// Clamp count to max layers
|
|
269
246
|
const clampedCount = Math.min(count, MAX_TEXTURE_ARRAY_LAYERS);
|
|
270
247
|
if (maxWidth <= this.textureArrayWidth &&
|
|
271
248
|
maxHeight <= this.textureArrayHeight &&
|
|
@@ -316,6 +293,42 @@ export class WebGPURenderer {
|
|
|
316
293
|
this.lastCanvasWidth = width;
|
|
317
294
|
this.lastCanvasHeight = height;
|
|
318
295
|
}
|
|
296
|
+
/**
|
|
297
|
+
* Render a prepared full-frame subtitle snapshot into its own WebGPU canvas.
|
|
298
|
+
* Keeping prepared frames on the selected backend avoids switching to a 2D
|
|
299
|
+
* compositor during playback (and lets Chromium keep one GPU overlay stack).
|
|
300
|
+
*/
|
|
301
|
+
renderBitmapToCanvas(canvas, bitmap, width, height) {
|
|
302
|
+
if (!this.device || !this.pipeline || width <= 0 || height <= 0)
|
|
303
|
+
return false;
|
|
304
|
+
canvas.width = width;
|
|
305
|
+
canvas.height = height;
|
|
306
|
+
let context = this.stageContexts.get(canvas);
|
|
307
|
+
if (!context) {
|
|
308
|
+
context = canvas.getContext('webgpu');
|
|
309
|
+
if (!context)
|
|
310
|
+
return false;
|
|
311
|
+
context.configure({
|
|
312
|
+
device: this.device,
|
|
313
|
+
format: this.format,
|
|
314
|
+
alphaMode: 'premultiplied'
|
|
315
|
+
});
|
|
316
|
+
this.stageContexts.set(canvas, context);
|
|
317
|
+
}
|
|
318
|
+
return this.renderBitmapsToContext([{ image: bitmap, x: 0, y: 0 }], context, width, height);
|
|
319
|
+
}
|
|
320
|
+
releaseCanvas(canvas) {
|
|
321
|
+
const context = this.stageContexts.get(canvas);
|
|
322
|
+
if (!context)
|
|
323
|
+
return;
|
|
324
|
+
try {
|
|
325
|
+
context.unconfigure();
|
|
326
|
+
}
|
|
327
|
+
catch {
|
|
328
|
+
// Device loss can invalidate a context before DOM-stage cleanup.
|
|
329
|
+
}
|
|
330
|
+
this.stageContexts.delete(canvas);
|
|
331
|
+
}
|
|
319
332
|
updateSize(width, height) {
|
|
320
333
|
if (!this.device || !this._canvas || width <= 0 || height <= 0)
|
|
321
334
|
return;
|
|
@@ -329,22 +342,27 @@ export class WebGPURenderer {
|
|
|
329
342
|
this.lastCanvasWidth = width;
|
|
330
343
|
this.lastCanvasHeight = height;
|
|
331
344
|
}
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
345
|
+
renderBitmaps(images, canvasWidth, canvasHeight) {
|
|
346
|
+
if (!this.context)
|
|
347
|
+
return false;
|
|
348
|
+
return this.renderBitmapsToContext(images, this.context, canvasWidth, canvasHeight);
|
|
349
|
+
}
|
|
350
|
+
submittedWorkDone() {
|
|
351
|
+
return this.device?.queue.onSubmittedWorkDone() ?? Promise.resolve();
|
|
352
|
+
}
|
|
353
|
+
renderBitmapsToContext(images, context, canvasWidth, canvasHeight) {
|
|
354
|
+
if (!this.device || !this.pipeline || canvasWidth <= 0 || canvasHeight <= 0)
|
|
355
|
+
return false;
|
|
356
|
+
this.resolutionArray[0] = canvasWidth;
|
|
357
|
+
this.resolutionArray[1] = canvasHeight;
|
|
358
|
+
this.device.queue.writeBuffer(this.uniformBuffer, 0, this.resolutionArray);
|
|
339
359
|
const len = images.length;
|
|
340
360
|
if (len === 0) {
|
|
341
|
-
this.
|
|
342
|
-
return;
|
|
361
|
+
return this.clearContext(context);
|
|
343
362
|
}
|
|
344
|
-
const currentTexture =
|
|
363
|
+
const currentTexture = context.getCurrentTexture();
|
|
345
364
|
if (currentTexture.width === 0 || currentTexture.height === 0)
|
|
346
|
-
return;
|
|
347
|
-
// Single pass: find max dimensions and count valid images
|
|
365
|
+
return false;
|
|
348
366
|
let maxW = 0, maxH = 0, validCount = 0;
|
|
349
367
|
for (let i = 0; i < len; i++) {
|
|
350
368
|
const { image } = images[i];
|
|
@@ -358,10 +376,8 @@ export class WebGPURenderer {
|
|
|
358
376
|
}
|
|
359
377
|
}
|
|
360
378
|
if (validCount === 0) {
|
|
361
|
-
this.
|
|
362
|
-
return;
|
|
379
|
+
return this.clearContext(context);
|
|
363
380
|
}
|
|
364
|
-
// Ensure texture array is large enough (capped at MAX_TEXTURE_ARRAY_LAYERS)
|
|
365
381
|
const batchSize = Math.min(validCount, MAX_TEXTURE_ARRAY_LAYERS);
|
|
366
382
|
this.ensureTextureArray(maxW, maxH, batchSize);
|
|
367
383
|
this.updateBindGroup();
|
|
@@ -370,21 +386,19 @@ export class WebGPURenderer {
|
|
|
370
386
|
const textureArray = this.textureArray;
|
|
371
387
|
const imageDataArray = this.imageDataArray;
|
|
372
388
|
const textureView = currentTexture.createView();
|
|
373
|
-
// Process images in batches if needed
|
|
374
389
|
let imageIndex = 0;
|
|
375
390
|
let isFirstBatch = true;
|
|
391
|
+
let renderedAnyBatch = false;
|
|
376
392
|
while (imageIndex < len) {
|
|
377
393
|
let texIndex = 0;
|
|
378
|
-
// Upload batch of textures
|
|
379
394
|
while (imageIndex < len && texIndex < MAX_TEXTURE_ARRAY_LAYERS) {
|
|
380
395
|
const img = images[imageIndex++];
|
|
381
396
|
const bitmap = img.image;
|
|
382
397
|
const w = bitmap.width, h = bitmap.height;
|
|
383
398
|
if (w <= 0 || h <= 0)
|
|
384
399
|
continue;
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
// Fill pre-allocated array
|
|
400
|
+
if (!this.uploadImageBitmap(texIndex, bitmap, w, h))
|
|
401
|
+
continue;
|
|
388
402
|
const offset = texIndex << 3;
|
|
389
403
|
imageDataArray[offset] = img.x;
|
|
390
404
|
imageDataArray[offset + 1] = img.y;
|
|
@@ -398,7 +412,6 @@ export class WebGPURenderer {
|
|
|
398
412
|
}
|
|
399
413
|
if (texIndex === 0)
|
|
400
414
|
continue;
|
|
401
|
-
// Upload buffer and draw batch
|
|
402
415
|
queue.writeBuffer(this.imageDataBuffer, 0, imageDataArray.buffer, 0, texIndex << 5);
|
|
403
416
|
const commandEncoder = device.createCommandEncoder();
|
|
404
417
|
const renderPass = commandEncoder.beginRenderPass({
|
|
@@ -417,25 +430,26 @@ export class WebGPURenderer {
|
|
|
417
430
|
renderPass.end();
|
|
418
431
|
queue.submit([commandEncoder.finish()]);
|
|
419
432
|
isFirstBatch = false;
|
|
433
|
+
renderedAnyBatch = true;
|
|
420
434
|
}
|
|
435
|
+
if (!renderedAnyBatch)
|
|
436
|
+
this.clearContext(context);
|
|
421
437
|
this.cleanupPendingTextures();
|
|
438
|
+
return renderedAnyBatch;
|
|
422
439
|
}
|
|
423
|
-
/**
|
|
424
|
-
* Render from raw ArrayBuffer data (non-async render mode)
|
|
425
|
-
* Handles batching when image count exceeds MAX_TEXTURE_ARRAY_LAYERS
|
|
426
|
-
*/
|
|
427
440
|
render(images, _canvasWidth, _canvasHeight) {
|
|
428
441
|
if (!this.device || !this.context || !this.pipeline)
|
|
429
|
-
return;
|
|
442
|
+
return false;
|
|
443
|
+
this.resolutionArray[0] = _canvasWidth;
|
|
444
|
+
this.resolutionArray[1] = _canvasHeight;
|
|
445
|
+
this.device.queue.writeBuffer(this.uniformBuffer, 0, this.resolutionArray);
|
|
430
446
|
const len = images.length;
|
|
431
447
|
if (len === 0) {
|
|
432
|
-
this.clear();
|
|
433
|
-
return;
|
|
448
|
+
return this.clear();
|
|
434
449
|
}
|
|
435
450
|
const currentTexture = this.context.getCurrentTexture();
|
|
436
451
|
if (currentTexture.width === 0 || currentTexture.height === 0)
|
|
437
|
-
return;
|
|
438
|
-
// Single pass: find max dimensions and count valid images
|
|
452
|
+
return false;
|
|
439
453
|
let maxW = 0, maxH = 0, validCount = 0;
|
|
440
454
|
for (let i = 0; i < len; i++) {
|
|
441
455
|
const { w, h } = images[i];
|
|
@@ -448,10 +462,8 @@ export class WebGPURenderer {
|
|
|
448
462
|
}
|
|
449
463
|
}
|
|
450
464
|
if (validCount === 0) {
|
|
451
|
-
this.clear();
|
|
452
|
-
return;
|
|
465
|
+
return this.clear();
|
|
453
466
|
}
|
|
454
|
-
// Ensure texture array is large enough (capped at MAX_TEXTURE_ARRAY_LAYERS)
|
|
455
467
|
const batchSize = Math.min(validCount, MAX_TEXTURE_ARRAY_LAYERS);
|
|
456
468
|
this.ensureTextureArray(maxW, maxH, batchSize);
|
|
457
469
|
this.updateBindGroup();
|
|
@@ -460,26 +472,29 @@ export class WebGPURenderer {
|
|
|
460
472
|
const textureArray = this.textureArray;
|
|
461
473
|
const imageDataArray = this.imageDataArray;
|
|
462
474
|
const textureView = currentTexture.createView();
|
|
463
|
-
// Process images in batches if needed
|
|
464
475
|
let imageIndex = 0;
|
|
465
476
|
let isFirstBatch = true;
|
|
477
|
+
let renderedAnyBatch = false;
|
|
466
478
|
while (imageIndex < len) {
|
|
467
479
|
let texIndex = 0;
|
|
468
|
-
// Upload batch of textures
|
|
469
480
|
while (imageIndex < len && texIndex < MAX_TEXTURE_ARRAY_LAYERS) {
|
|
470
481
|
const img = images[imageIndex++];
|
|
471
482
|
const w = img.w, h = img.h;
|
|
472
483
|
if (w <= 0 || h <= 0)
|
|
473
484
|
continue;
|
|
474
|
-
// Upload texture data
|
|
475
485
|
const imgData = img.image;
|
|
476
486
|
if (imgData instanceof ImageBitmap) {
|
|
477
|
-
|
|
487
|
+
if (!this.uploadImageBitmap(texIndex, imgData, w, h))
|
|
488
|
+
continue;
|
|
478
489
|
}
|
|
479
|
-
else if (imgData instanceof ArrayBuffer ||
|
|
490
|
+
else if (imgData instanceof ArrayBuffer ||
|
|
491
|
+
imgData instanceof Uint8Array ||
|
|
492
|
+
imgData instanceof Uint8ClampedArray) {
|
|
480
493
|
this.uploadTextureData(texIndex, imgData, w, h);
|
|
481
494
|
}
|
|
482
|
-
|
|
495
|
+
else {
|
|
496
|
+
continue;
|
|
497
|
+
}
|
|
483
498
|
const offset = texIndex << 3;
|
|
484
499
|
imageDataArray[offset] = img.x;
|
|
485
500
|
imageDataArray[offset + 1] = img.y;
|
|
@@ -493,7 +508,6 @@ export class WebGPURenderer {
|
|
|
493
508
|
}
|
|
494
509
|
if (texIndex === 0)
|
|
495
510
|
continue;
|
|
496
|
-
// Upload buffer and draw batch
|
|
497
511
|
queue.writeBuffer(this.imageDataBuffer, 0, imageDataArray.buffer, 0, texIndex << 5);
|
|
498
512
|
const commandEncoder = device.createCommandEncoder();
|
|
499
513
|
const renderPass = commandEncoder.beginRenderPass({
|
|
@@ -512,8 +526,53 @@ export class WebGPURenderer {
|
|
|
512
526
|
renderPass.end();
|
|
513
527
|
queue.submit([commandEncoder.finish()]);
|
|
514
528
|
isFirstBatch = false;
|
|
529
|
+
renderedAnyBatch = true;
|
|
515
530
|
}
|
|
531
|
+
if (!renderedAnyBatch)
|
|
532
|
+
this.clear();
|
|
516
533
|
this.cleanupPendingTextures();
|
|
534
|
+
return renderedAnyBatch;
|
|
535
|
+
}
|
|
536
|
+
uploadImageBitmap(layerIndex, bitmap, width, height) {
|
|
537
|
+
try {
|
|
538
|
+
this.device.queue.copyExternalImageToTexture({ source: bitmap, flipY: false }, { texture: this.textureArray, origin: [0, 0, layerIndex], premultipliedAlpha: false }, { width, height });
|
|
539
|
+
return true;
|
|
540
|
+
}
|
|
541
|
+
catch (externalUploadError) {
|
|
542
|
+
try {
|
|
543
|
+
let canvas = this.externalUploadCanvas;
|
|
544
|
+
if (!canvas) {
|
|
545
|
+
canvas =
|
|
546
|
+
typeof OffscreenCanvas !== 'undefined'
|
|
547
|
+
? new OffscreenCanvas(width, height)
|
|
548
|
+
: document.createElement('canvas');
|
|
549
|
+
this.externalUploadCanvas = canvas;
|
|
550
|
+
}
|
|
551
|
+
if (canvas.width !== width)
|
|
552
|
+
canvas.width = width;
|
|
553
|
+
if (canvas.height !== height)
|
|
554
|
+
canvas.height = height;
|
|
555
|
+
let context = this.externalUploadContext;
|
|
556
|
+
if (!context) {
|
|
557
|
+
context = canvas.getContext('2d', { alpha: true, willReadFrequently: true });
|
|
558
|
+
this.externalUploadContext = context;
|
|
559
|
+
}
|
|
560
|
+
if (!context)
|
|
561
|
+
return false;
|
|
562
|
+
context.clearRect(0, 0, width, height);
|
|
563
|
+
context.drawImage(bitmap, 0, 0);
|
|
564
|
+
this.uploadTextureData(layerIndex, context.getImageData(0, 0, width, height).data, width, height);
|
|
565
|
+
if (!this.warnedExternalUploadFallback) {
|
|
566
|
+
this.warnedExternalUploadFallback = true;
|
|
567
|
+
console.warn('[AkariSub] WebGPU external-image upload failed; using RGBA fallback.', externalUploadError);
|
|
568
|
+
}
|
|
569
|
+
return true;
|
|
570
|
+
}
|
|
571
|
+
catch (fallbackError) {
|
|
572
|
+
console.warn('[AkariSub] Failed to upload subtitle bitmap to WebGPU.', fallbackError);
|
|
573
|
+
return false;
|
|
574
|
+
}
|
|
575
|
+
}
|
|
517
576
|
}
|
|
518
577
|
uploadTextureData(layerIndex, rgbaBuffer, width, height) {
|
|
519
578
|
this.device.queue.writeTexture({ texture: this.textureArray, origin: [0, 0, layerIndex] }, toUint8View(rgbaBuffer), { bytesPerRow: width * 4 }, { width, height });
|
|
@@ -530,11 +589,16 @@ export class WebGPURenderer {
|
|
|
530
589
|
}
|
|
531
590
|
clear() {
|
|
532
591
|
if (!this.device || !this.context)
|
|
533
|
-
return;
|
|
592
|
+
return false;
|
|
593
|
+
return this.clearContext(this.context);
|
|
594
|
+
}
|
|
595
|
+
clearContext(context) {
|
|
596
|
+
if (!this.device)
|
|
597
|
+
return false;
|
|
534
598
|
try {
|
|
535
|
-
const currentTexture =
|
|
599
|
+
const currentTexture = context.getCurrentTexture();
|
|
536
600
|
if (currentTexture.width === 0 || currentTexture.height === 0)
|
|
537
|
-
return;
|
|
601
|
+
return false;
|
|
538
602
|
const commandEncoder = this.device.createCommandEncoder();
|
|
539
603
|
const renderPass = commandEncoder.beginRenderPass({
|
|
540
604
|
colorAttachments: [
|
|
@@ -548,9 +612,10 @@ export class WebGPURenderer {
|
|
|
548
612
|
});
|
|
549
613
|
renderPass.end();
|
|
550
614
|
this.device.queue.submit([commandEncoder.finish()]);
|
|
615
|
+
return true;
|
|
551
616
|
}
|
|
552
617
|
catch {
|
|
553
|
-
|
|
618
|
+
return false;
|
|
554
619
|
}
|
|
555
620
|
}
|
|
556
621
|
get initialized() {
|
|
@@ -558,6 +623,15 @@ export class WebGPURenderer {
|
|
|
558
623
|
}
|
|
559
624
|
destroy() {
|
|
560
625
|
this.cleanupPendingTextures();
|
|
626
|
+
for (const context of this.stageContexts.values()) {
|
|
627
|
+
try {
|
|
628
|
+
context.unconfigure();
|
|
629
|
+
}
|
|
630
|
+
catch {
|
|
631
|
+
// Context can already be invalid after device loss.
|
|
632
|
+
}
|
|
633
|
+
}
|
|
634
|
+
this.stageContexts.clear();
|
|
561
635
|
this.textureArray?.destroy();
|
|
562
636
|
this.textureArray = null;
|
|
563
637
|
this.textureArrayView = null;
|
|
@@ -570,6 +644,9 @@ export class WebGPURenderer {
|
|
|
570
644
|
this.device = null;
|
|
571
645
|
this.context = null;
|
|
572
646
|
this._canvas = null;
|
|
647
|
+
this.externalUploadCanvas = null;
|
|
648
|
+
this.externalUploadContext = null;
|
|
649
|
+
this.warnedExternalUploadFallback = false;
|
|
573
650
|
this._initialized = false;
|
|
574
651
|
this._initPromise = null;
|
|
575
652
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webgpu-renderer.js","sourceRoot":"","sources":["../../src/ts/webgpu-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/ts/worker.ts"],"names":[],"mappings":""}
|