libbitsub 1.5.1 → 1.6.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 CHANGED
@@ -8,7 +8,7 @@ Started as a fork of Arcus92's [libpgs-js](https://github.com/Arcus92/libpgs-js)
8
8
 
9
9
  - **PGS (Blu-ray)** subtitle parsing and rendering
10
10
  - **VobSub (DVD)** subtitle parsing and rendering
11
- - **WebGPU rendering** GPU-accelerated rendering with automatic Canvas2D fallback
11
+ - **WebGPU / WebGL2 rendering** GPU-accelerated rendering with automatic fallback: WebGPU → WebGL2 → Canvas2D
12
12
  - **High-performance** Rust-based rendering engine compiled to WebAssembly
13
13
  - **Zero-copy** data transfer between JS and WASM where possible
14
14
  - **Caching** for decoded bitmaps to optimize repeated rendering
@@ -319,31 +319,44 @@ setInterval(() => {
319
319
  | `totalEntries` | number | Total subtitle entries/display sets in the loaded file |
320
320
  | `currentIndex` | number | Index of the currently displayed subtitle |
321
321
 
322
- ### WebGPU Rendering
322
+ ### GPU-Accelerated Rendering
323
323
 
324
- libbitsub automatically uses WebGPU for GPU-accelerated rendering when available, with automatic fallback to Canvas2D:
324
+ libbitsub automatically selects the best available GPU renderer at startup, following this fallback chain:
325
+
326
+ **WebGPU → WebGL2 → Canvas2D**
325
327
 
326
328
  ```typescript
327
- import { PgsRenderer, isWebGPUSupported } from 'libbitsub'
329
+ import { PgsRenderer, isWebGPUSupported, isWebGL2Supported } from 'libbitsub'
328
330
 
329
- // Check WebGPU support
331
+ // Check renderer support
330
332
  if (isWebGPUSupported()) {
331
- console.log('WebGPU available - GPU-accelerated rendering enabled')
333
+ console.log('WebGPU available')
334
+ } else if (isWebGL2Supported()) {
335
+ console.log('WebGL2 available')
336
+ } else {
337
+ console.log('Falling back to Canvas2D')
332
338
  }
333
339
 
334
- // Configure WebGPU preference
335
340
  const renderer = new PgsRenderer({
336
341
  video: videoElement,
337
342
  subUrl: '/subtitles/movie.sup',
338
- preferWebGPU: true, // default: true
339
- onWebGPUFallback: () => console.log('Fell back to Canvas2D')
343
+ onWebGPUFallback: () => console.log('WebGPU unavailable, trying WebGL2'),
344
+ onWebGL2Fallback: () => console.log('WebGL2 unavailable, using Canvas2D')
340
345
  })
341
346
  ```
342
347
 
343
348
  **Options:**
344
349
 
345
- - `preferWebGPU` (boolean): Enable WebGPU rendering if available. Default: `true`
346
- - `onWebGPUFallback` (function): Callback when WebGPU is unavailable and falls back to Canvas2D
350
+ - `onWebGPUFallback` (function): Callback when WebGPU initialisation fails
351
+ - `onWebGL2Fallback` (function): Callback when WebGL2 initialisation fails
352
+
353
+ **Renderer capabilities:**
354
+
355
+ | Renderer | Premultiplied alpha | Linear sampling | Browser support |
356
+ | -------- | ------------------- | --------------- | --------------- |
357
+ | WebGPU | ✅ | ✅ | Chrome 113+, Firefox 141+, Edge 113+ |
358
+ | WebGL2 | ✅ | ✅ | All modern browsers |
359
+ | Canvas2D | — | ✅ | Universal |
347
360
 
348
361
  ## Low-Level API (Programmatic Use)
349
362
 
@@ -501,11 +514,11 @@ interface VideoSubtitleOptions {
501
514
  subUrl?: string // URL to subtitle file (provide this OR subContent)
502
515
  subContent?: ArrayBuffer // Direct subtitle content (provide this OR subUrl)
503
516
  workerUrl?: string // Worker URL (for API compatibility)
504
- preferWebGPU?: boolean // Prefer WebGPU renderer if available (default: true)
505
517
  onLoading?: () => void // Called when subtitle loading starts
506
518
  onLoaded?: () => void // Called when subtitle loading completes
507
519
  onError?: (error: Error) => void // Called when subtitle loading fails
508
- onWebGPUFallback?: () => void // Called when WebGPU is unavailable
520
+ onWebGPUFallback?: () => void // Called when WebGPU init fails
521
+ onWebGL2Fallback?: () => void // Called when WebGL2 init fails
509
522
  }
510
523
  ```
511
524
 
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import type { SubtitleData, SubtitleDisplaySettings, VideoSubtitleOptions, VideoVobSubOptions } from './types';
6
6
  import { WebGPURenderer } from './webgpu-renderer';
7
+ import { WebGL2Renderer } from './webgl2-renderer';
7
8
  /** Performance statistics for subtitle renderer */
8
9
  export interface SubtitleRendererStats {
9
10
  /** Total frames rendered since initialization */
@@ -54,8 +55,10 @@ declare abstract class BaseVideoSubtitleRenderer {
54
55
  protected displaySettings: SubtitleDisplaySettings;
55
56
  protected webgpuRenderer: WebGPURenderer | null;
56
57
  protected useWebGPU: boolean;
57
- protected preferWebGPU: boolean;
58
58
  protected onWebGPUFallback?: () => void;
59
+ protected webgl2Renderer: WebGL2Renderer | null;
60
+ protected useWebGL2: boolean;
61
+ protected onWebGL2Fallback?: () => void;
59
62
  protected perfStats: {
60
63
  framesRendered: number;
61
64
  framesDropped: number;
@@ -83,6 +86,8 @@ declare abstract class BaseVideoSubtitleRenderer {
83
86
  protected createCanvas(): void;
84
87
  /** Initialize WebGPU renderer. */
85
88
  private initWebGPU;
89
+ /** Initialize WebGL2 renderer. */
90
+ private initWebGL2;
86
91
  /** Initialize Canvas2D renderer. */
87
92
  private initCanvas2D;
88
93
  /** Called when video seeks. */
@@ -108,6 +113,8 @@ declare abstract class BaseVideoSubtitleRenderer {
108
113
  protected renderFrame(time: number, index: number): void;
109
114
  /** Render using WebGPU. */
110
115
  private renderFrameWebGPU;
116
+ /** Render using WebGL2. */
117
+ private renderFrameWebGL2;
111
118
  /** Render using Canvas2D. */
112
119
  private renderFrameCanvas2D;
113
120
  /** Dispose of all resources. */
@@ -1 +1 @@
1
- {"version":3,"file":"renderers.d.ts","sourceRoot":"","sources":["../../src/ts/renderers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"renderers.d.ts","sourceRoot":"","sources":["../../src/ts/renderers.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ import { getOrCreateWorker, sendToWorker } from './worker';
7
7
  import { binarySearchTimestamp, convertFrameData, createWorkerState } from './utils';
8
8
  import { PgsParser, VobSubParserLowLevel } from './parsers';
9
9
  import { WebGPURenderer, isWebGPUSupported } from './webgpu-renderer';
10
+ import { WebGL2Renderer, isWebGL2Supported } from './webgl2-renderer';
10
11
  /** Default display settings */
11
12
  const DEFAULT_DISPLAY_SETTINGS = {
12
13
  scale: 1.0,
@@ -33,11 +34,14 @@ class BaseVideoSubtitleRenderer {
33
34
  lastRenderedData = null;
34
35
  /** Display settings for subtitle rendering */
35
36
  displaySettings = { ...DEFAULT_DISPLAY_SETTINGS };
36
- // WebGPU renderer (optional, falls back to Canvas2D if unavailable)
37
+ // WebGPU renderer (optional, falls back to WebGL2 then Canvas2D)
37
38
  webgpuRenderer = null;
38
39
  useWebGPU = false;
39
- preferWebGPU = true;
40
40
  onWebGPUFallback;
41
+ // WebGL2 renderer (optional, falls back to Canvas2D)
42
+ webgl2Renderer = null;
43
+ useWebGL2 = false;
44
+ onWebGL2Fallback;
41
45
  // Performance tracking
42
46
  perfStats = {
43
47
  framesRendered: 0,
@@ -51,8 +55,8 @@ class BaseVideoSubtitleRenderer {
51
55
  this.video = options.video;
52
56
  this.subUrl = options.subUrl;
53
57
  this.subContent = options.subContent;
54
- this.preferWebGPU = options.preferWebGPU !== false; // Default to true
55
58
  this.onWebGPUFallback = options.onWebGPUFallback;
59
+ this.onWebGL2Fallback = options.onWebGL2Fallback;
56
60
  }
57
61
  /** Get current display settings */
58
62
  getDisplaySettings() {
@@ -126,10 +130,13 @@ class BaseVideoSubtitleRenderer {
126
130
  }
127
131
  parent.appendChild(this.canvas);
128
132
  }
129
- // Try WebGPU first if preferred
130
- if (this.preferWebGPU && isWebGPUSupported()) {
133
+ // Try WebGPU first, then WebGL2, then Canvas2D
134
+ if (isWebGPUSupported()) {
131
135
  this.initWebGPU();
132
136
  }
137
+ else if (isWebGL2Supported()) {
138
+ this.initWebGL2();
139
+ }
133
140
  else {
134
141
  this.initCanvas2D();
135
142
  }
@@ -158,12 +165,41 @@ class BaseVideoSubtitleRenderer {
158
165
  console.log('[libbitsub] Using WebGPU renderer');
159
166
  }
160
167
  catch (error) {
161
- console.warn('[libbitsub] WebGPU init failed, falling back to Canvas2D:', error);
168
+ console.warn('[libbitsub] WebGPU init failed, falling back to WebGL2:', error);
162
169
  this.webgpuRenderer?.destroy();
163
170
  this.webgpuRenderer = null;
164
171
  this.useWebGPU = false;
165
- this.initCanvas2D();
166
172
  this.onWebGPUFallback?.();
173
+ // Try WebGL2 before Canvas2D
174
+ if (isWebGL2Supported()) {
175
+ this.initWebGL2();
176
+ }
177
+ else {
178
+ this.initCanvas2D();
179
+ }
180
+ }
181
+ }
182
+ /** Initialize WebGL2 renderer. */
183
+ async initWebGL2() {
184
+ try {
185
+ this.webgl2Renderer = new WebGL2Renderer();
186
+ await this.webgl2Renderer.init();
187
+ if (!this.canvas)
188
+ return;
189
+ const bounds = this.getVideoContentBounds();
190
+ const width = Math.max(1, bounds.width * window.devicePixelRatio);
191
+ const height = Math.max(1, bounds.height * window.devicePixelRatio);
192
+ await this.webgl2Renderer.setCanvas(this.canvas, width, height);
193
+ this.useWebGL2 = true;
194
+ console.log('[libbitsub] Using WebGL2 renderer');
195
+ }
196
+ catch (error) {
197
+ console.warn('[libbitsub] WebGL2 init failed, falling back to Canvas2D:', error);
198
+ this.webgl2Renderer?.destroy();
199
+ this.webgl2Renderer = null;
200
+ this.useWebGL2 = false;
201
+ this.onWebGL2Fallback?.();
202
+ this.initCanvas2D();
167
203
  }
168
204
  }
169
205
  /** Initialize Canvas2D renderer. */
@@ -172,6 +208,7 @@ class BaseVideoSubtitleRenderer {
172
208
  return;
173
209
  this.ctx = this.canvas.getContext('2d');
174
210
  this.useWebGPU = false;
211
+ this.useWebGL2 = false;
175
212
  console.log('[libbitsub] Using Canvas2D renderer');
176
213
  }
177
214
  /** Called when video seeks. */
@@ -227,10 +264,13 @@ class BaseVideoSubtitleRenderer {
227
264
  this.canvas.style.top = `${bounds.y}px`;
228
265
  this.canvas.style.width = `${bounds.width}px`;
229
266
  this.canvas.style.height = `${bounds.height}px`;
230
- // Update WebGPU renderer size if active
267
+ // Update GPU renderer size if active
231
268
  if (this.useWebGPU && this.webgpuRenderer) {
232
269
  this.webgpuRenderer.updateSize(pixelWidth, pixelHeight);
233
270
  }
271
+ else if (this.useWebGL2 && this.webgl2Renderer) {
272
+ this.webgl2Renderer.updateSize(pixelWidth, pixelHeight);
273
+ }
234
274
  this.lastRenderedIndex = -1;
235
275
  this.lastRenderedTime = -1;
236
276
  }
@@ -290,10 +330,13 @@ class BaseVideoSubtitleRenderer {
290
330
  return;
291
331
  }
292
332
  }
293
- // Use WebGPU or Canvas2D based on availability
333
+ // Use best available renderer
294
334
  if (this.useWebGPU && this.webgpuRenderer) {
295
335
  this.renderFrameWebGPU(data, index);
296
336
  }
337
+ else if (this.useWebGL2 && this.webgl2Renderer) {
338
+ this.renderFrameWebGL2(data, index);
339
+ }
297
340
  else {
298
341
  this.renderFrameCanvas2D(data, index);
299
342
  }
@@ -320,6 +363,24 @@ class BaseVideoSubtitleRenderer {
320
363
  const offsetY = (verticalOffset / 100) * this.canvas.height;
321
364
  this.webgpuRenderer.render(data.compositionData, data.width, data.height, scaleX, scaleY, offsetY);
322
365
  }
366
+ /** Render using WebGL2. */
367
+ renderFrameWebGL2(data, index) {
368
+ if (!this.webgl2Renderer || !this.canvas)
369
+ return;
370
+ if (index < 0 || !data || data.compositionData.length === 0) {
371
+ this.webgl2Renderer.clear();
372
+ this.lastRenderedData = null;
373
+ return;
374
+ }
375
+ this.lastRenderedData = data;
376
+ const baseScaleX = this.canvas.width / data.width;
377
+ const baseScaleY = this.canvas.height / data.height;
378
+ const { scale, verticalOffset } = this.displaySettings;
379
+ const scaleX = baseScaleX * scale;
380
+ const scaleY = baseScaleY * scale;
381
+ const offsetY = (verticalOffset / 100) * this.canvas.height;
382
+ this.webgl2Renderer.render(data.compositionData, data.width, data.height, scaleX, scaleY, offsetY);
383
+ }
323
384
  /** Render using Canvas2D. */
324
385
  renderFrameCanvas2D(data, index) {
325
386
  if (!this.ctx || !this.canvas)
@@ -370,11 +431,15 @@ class BaseVideoSubtitleRenderer {
370
431
  }
371
432
  this.resizeObserver?.disconnect();
372
433
  this.resizeObserver = null;
373
- // Clean up WebGPU renderer
434
+ // Clean up GPU renderers
374
435
  if (this.webgpuRenderer) {
375
436
  this.webgpuRenderer.destroy();
376
437
  this.webgpuRenderer = null;
377
438
  }
439
+ if (this.webgl2Renderer) {
440
+ this.webgl2Renderer.destroy();
441
+ this.webgl2Renderer = null;
442
+ }
378
443
  this.canvas?.parentElement?.removeChild(this.canvas);
379
444
  this.canvas = null;
380
445
  this.ctx = null;
@@ -382,6 +447,7 @@ class BaseVideoSubtitleRenderer {
382
447
  this.tempCtx = null;
383
448
  this.lastRenderedData = null;
384
449
  this.useWebGPU = false;
450
+ this.useWebGL2 = false;
385
451
  }
386
452
  }
387
453
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"renderers.js","sourceRoot":"","sources":["../../src/ts/renderers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"renderers.js","sourceRoot":"","sources":["../../src/ts/renderers.ts"],"names":[],"mappings":"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"}
@@ -31,16 +31,16 @@ export interface VideoSubtitleOptions {
31
31
  subContent?: ArrayBuffer;
32
32
  /** Worker URL (kept for API compatibility, not used in WASM version) */
33
33
  workerUrl?: string;
34
- /** Prefer WebGPU renderer if available (default: true) */
35
- preferWebGPU?: boolean;
36
34
  /** Callback when subtitle loading starts */
37
35
  onLoading?: () => void;
38
36
  /** Callback when subtitle loading completes */
39
37
  onLoaded?: () => void;
40
38
  /** Callback when subtitle loading fails */
41
39
  onError?: (error: Error) => void;
42
- /** Callback when WebGPU is unavailable and falling back to Canvas2D */
40
+ /** Callback when WebGPU is unavailable and falling back to WebGL2 or Canvas2D */
43
41
  onWebGPUFallback?: () => void;
42
+ /** Callback when WebGL2 is unavailable and falling back to Canvas2D */
43
+ onWebGL2Fallback?: () => void;
44
44
  }
45
45
  /** Options for VobSub video subtitle renderer. */
46
46
  export interface VideoVobSubOptions extends VideoSubtitleOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ts/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ts/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import type { SubtitleCompositionData } from './types';
2
+ /**
3
+ * Check if WebGL2 is supported in the current browser.
4
+ * Result is cached after the first call.
5
+ */
6
+ export declare function isWebGL2Supported(): boolean;
7
+ /**
8
+ * WebGL2-based subtitle renderer.
9
+ * Uploads RGBA bitmap data to GPU textures and renders textured quads.
10
+ * Uses premultiplied alpha blending to match WebGPU renderer output.
11
+ */
12
+ export declare class WebGL2Renderer {
13
+ private gl;
14
+ private program;
15
+ private vao;
16
+ private uResolution;
17
+ private uDestRect;
18
+ private uTexture;
19
+ private textures;
20
+ private _canvas;
21
+ private _initialized;
22
+ private _width;
23
+ private _height;
24
+ /**
25
+ * Initialize the WebGL2 renderer.
26
+ * Kept async for API parity with WebGPURenderer, but WebGL2 init is synchronous.
27
+ */
28
+ init(): Promise<void>;
29
+ /**
30
+ * Configure the canvas for WebGL2 rendering.
31
+ */
32
+ setCanvas(canvas: HTMLCanvasElement, width: number, height: number): Promise<void>;
33
+ private _compileShader;
34
+ /**
35
+ * Update canvas dimensions.
36
+ */
37
+ updateSize(width: number, height: number): void;
38
+ private _ensureTexture;
39
+ /**
40
+ * Render subtitle compositions to the canvas.
41
+ */
42
+ render(compositions: SubtitleCompositionData[], screenWidth: number, screenHeight: number, scaleX: number, scaleY: number, offsetY: number): void;
43
+ /**
44
+ * Clear the canvas.
45
+ */
46
+ clear(): void;
47
+ /**
48
+ * Check if renderer is initialized.
49
+ */
50
+ get initialized(): boolean;
51
+ /**
52
+ * Destroy all GPU resources.
53
+ */
54
+ destroy(): void;
55
+ }
56
+ //# sourceMappingURL=webgl2-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgl2-renderer.d.ts","sourceRoot":"","sources":["../../src/ts/webgl2-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AA0DtD;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAU3C;AAED;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAAsC;IAChD,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,GAAG,CAAsC;IAGjD,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,SAAS,CAAoC;IACrD,OAAO,CAAC,QAAQ,CAAoC;IAGpD,OAAO,CAAC,QAAQ,CAAkC;IAElD,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,OAAO,CAAI;IAEnB;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmExF,OAAO,CAAC,cAAc;IActB;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAa/C,OAAO,CAAC,cAAc;IA6BtB;;OAEG;IACH,MAAM,CACJ,YAAY,EAAE,uBAAuB,EAAE,EACvC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,IAAI;IA6DP;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;OAEG;IACH,OAAO,IAAI,IAAI;CAiBhB"}
@@ -0,0 +1,290 @@
1
+ // GLSL ES 3.00 Vertex Shader
2
+ // Uses gl_VertexID to generate unit-quad positions without a vertex buffer
3
+ const VERTEX_SHADER_SRC = /* glsl */ `#version 300 es
4
+
5
+ uniform vec2 u_resolution;
6
+ uniform vec4 u_destRect; // x, y, w, h in pixels
7
+
8
+ out vec2 v_texCoord;
9
+
10
+ void main() {
11
+ // Generate unit-square positions for two-triangle quad (CCW)
12
+ vec2 unitPos;
13
+ if (gl_VertexID == 0) unitPos = vec2(0.0, 0.0);
14
+ else if (gl_VertexID == 1) unitPos = vec2(1.0, 0.0);
15
+ else if (gl_VertexID == 2) unitPos = vec2(0.0, 1.0);
16
+ else if (gl_VertexID == 3) unitPos = vec2(1.0, 0.0);
17
+ else if (gl_VertexID == 4) unitPos = vec2(1.0, 1.0);
18
+ else unitPos = vec2(0.0, 1.0);
19
+
20
+ v_texCoord = unitPos;
21
+
22
+ // Convert pixel position to clip space
23
+ vec2 pixelPos = u_destRect.xy + unitPos * u_destRect.zw;
24
+ vec2 clipPos = (pixelPos / u_resolution) * 2.0 - 1.0;
25
+ clipPos.y = -clipPos.y; // Flip Y for canvas coordinates
26
+
27
+ gl_Position = vec4(clipPos, 0.0, 1.0);
28
+ }
29
+ `;
30
+ // GLSL ES 3.00 Fragment Shader - sample RGBA texture directly
31
+ const FRAGMENT_SHADER_SRC = /* glsl */ `#version 300 es
32
+ precision mediump float;
33
+
34
+ uniform sampler2D u_texture;
35
+
36
+ in vec2 v_texCoord;
37
+ out vec4 outColor;
38
+
39
+ void main() {
40
+ // Texture is pre-multiplied alpha; output as-is for premultiplied blending
41
+ outColor = texture(u_texture, v_texCoord);
42
+ }
43
+ `;
44
+ /** Cached result of the WebGL2 support check (null = not yet tested). */
45
+ let _webgl2Supported = null;
46
+ /**
47
+ * Check if WebGL2 is supported in the current browser.
48
+ * Result is cached after the first call.
49
+ */
50
+ export function isWebGL2Supported() {
51
+ if (_webgl2Supported !== null)
52
+ return _webgl2Supported;
53
+ if (typeof document === 'undefined')
54
+ return (_webgl2Supported = false);
55
+ try {
56
+ const canvas = document.createElement('canvas');
57
+ _webgl2Supported = !!canvas.getContext('webgl2');
58
+ }
59
+ catch {
60
+ _webgl2Supported = false;
61
+ }
62
+ return _webgl2Supported;
63
+ }
64
+ /**
65
+ * WebGL2-based subtitle renderer.
66
+ * Uploads RGBA bitmap data to GPU textures and renders textured quads.
67
+ * Uses premultiplied alpha blending to match WebGPU renderer output.
68
+ */
69
+ export class WebGL2Renderer {
70
+ gl = null;
71
+ program = null;
72
+ vao = null;
73
+ // Cached uniform locations
74
+ uResolution = null;
75
+ uDestRect = null;
76
+ uTexture = null;
77
+ // Texture pool for compositions (indexed by slot)
78
+ textures = [];
79
+ _canvas = null;
80
+ _initialized = false;
81
+ _width = 0;
82
+ _height = 0;
83
+ /**
84
+ * Initialize the WebGL2 renderer.
85
+ * Kept async for API parity with WebGPURenderer, but WebGL2 init is synchronous.
86
+ */
87
+ async init() {
88
+ // No-op – actual init happens in setCanvas once we have a canvas element.
89
+ }
90
+ /**
91
+ * Configure the canvas for WebGL2 rendering.
92
+ */
93
+ async setCanvas(canvas, width, height) {
94
+ this._canvas = canvas;
95
+ canvas.width = width;
96
+ canvas.height = height;
97
+ this._width = width;
98
+ this._height = height;
99
+ const gl = canvas.getContext('webgl2', {
100
+ alpha: true,
101
+ premultipliedAlpha: true,
102
+ antialias: false,
103
+ depth: false,
104
+ stencil: false
105
+ });
106
+ if (!gl) {
107
+ throw new Error('Could not get WebGL2 context');
108
+ }
109
+ this.gl = gl;
110
+ // Compile and link shader program
111
+ const vertShader = this._compileShader(gl.VERTEX_SHADER, VERTEX_SHADER_SRC);
112
+ const fragShader = this._compileShader(gl.FRAGMENT_SHADER, FRAGMENT_SHADER_SRC);
113
+ const program = gl.createProgram();
114
+ if (!program)
115
+ throw new Error('Failed to create WebGL2 program');
116
+ gl.attachShader(program, vertShader);
117
+ gl.attachShader(program, fragShader);
118
+ gl.linkProgram(program);
119
+ gl.deleteShader(vertShader);
120
+ gl.deleteShader(fragShader);
121
+ if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
122
+ const log = gl.getProgramInfoLog(program);
123
+ gl.deleteProgram(program);
124
+ throw new Error('WebGL2 program link failed: ' + log);
125
+ }
126
+ this.program = program;
127
+ gl.useProgram(program);
128
+ // Cache uniform locations
129
+ this.uResolution = gl.getUniformLocation(program, 'u_resolution');
130
+ this.uDestRect = gl.getUniformLocation(program, 'u_destRect');
131
+ this.uTexture = gl.getUniformLocation(program, 'u_texture');
132
+ // VAO (required in WebGL2 even without vertex attributes)
133
+ this.vao = gl.createVertexArray();
134
+ gl.bindVertexArray(this.vao);
135
+ // Set initial state
136
+ gl.uniform2f(this.uResolution, width, height);
137
+ gl.uniform1i(this.uTexture, 0);
138
+ // Premultiplied alpha blending: src=ONE, dst=ONE_MINUS_SRC_ALPHA
139
+ gl.enable(gl.BLEND);
140
+ gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
141
+ gl.viewport(0, 0, width, height);
142
+ this._initialized = true;
143
+ console.log('[libbitsub] WebGL2 renderer initialized');
144
+ }
145
+ _compileShader(type, src) {
146
+ const gl = this.gl;
147
+ const shader = gl.createShader(type);
148
+ if (!shader)
149
+ throw new Error('Failed to create shader');
150
+ gl.shaderSource(shader, src);
151
+ gl.compileShader(shader);
152
+ if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
153
+ const log = gl.getShaderInfoLog(shader);
154
+ gl.deleteShader(shader);
155
+ throw new Error('Shader compile error: ' + log);
156
+ }
157
+ return shader;
158
+ }
159
+ /**
160
+ * Update canvas dimensions.
161
+ */
162
+ updateSize(width, height) {
163
+ if (!this.gl || !this._canvas)
164
+ return;
165
+ this._canvas.width = width;
166
+ this._canvas.height = height;
167
+ this._width = width;
168
+ this._height = height;
169
+ this.gl.viewport(0, 0, width, height);
170
+ this.gl.useProgram(this.program);
171
+ this.gl.uniform2f(this.uResolution, width, height);
172
+ }
173
+ _ensureTexture(index, width, height) {
174
+ const gl = this.gl;
175
+ const existing = this.textures[index];
176
+ if (existing && existing.width === width && existing.height === height) {
177
+ return existing;
178
+ }
179
+ // Delete old texture if size changed
180
+ if (existing) {
181
+ gl.deleteTexture(existing.texture);
182
+ }
183
+ const texture = gl.createTexture();
184
+ if (!texture)
185
+ throw new Error('Failed to create WebGL2 texture');
186
+ gl.bindTexture(gl.TEXTURE_2D, texture);
187
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
188
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
189
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
190
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
191
+ // Allocate storage
192
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA8, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
193
+ const info = { texture, width, height, sourceData: null };
194
+ this.textures[index] = info;
195
+ return info;
196
+ }
197
+ /**
198
+ * Render subtitle compositions to the canvas.
199
+ */
200
+ render(compositions, screenWidth, screenHeight, scaleX, scaleY, offsetY) {
201
+ if (!this.gl || !this.program || !this._canvas)
202
+ return;
203
+ const gl = this.gl;
204
+ gl.useProgram(this.program);
205
+ gl.bindVertexArray(this.vao);
206
+ gl.clearColor(0, 0, 0, 0);
207
+ gl.clear(gl.COLOR_BUFFER_BIT);
208
+ gl.activeTexture(gl.TEXTURE0);
209
+ for (let i = 0; i < compositions.length; i++) {
210
+ const comp = compositions[i];
211
+ const { pixelData, x, y } = comp;
212
+ const { width, height, data } = pixelData;
213
+ if (width <= 0 || height <= 0)
214
+ continue;
215
+ const info = this._ensureTexture(i, width, height);
216
+ gl.bindTexture(gl.TEXTURE_2D, info.texture);
217
+ // Only premultiply and re-upload if the source ImageData buffer has changed
218
+ if (info.sourceData !== data) {
219
+ const uploadData = new Uint8Array(data.length);
220
+ for (let j = 0; j < data.length; j += 4) {
221
+ const a = data[j + 3];
222
+ const af = a / 255;
223
+ uploadData[j] = (data[j] * af + 0.5) | 0;
224
+ uploadData[j + 1] = (data[j + 1] * af + 0.5) | 0;
225
+ uploadData[j + 2] = (data[j + 2] * af + 0.5) | 0;
226
+ uploadData[j + 3] = a;
227
+ }
228
+ gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, uploadData);
229
+ info.sourceData = data;
230
+ }
231
+ // Calculate scaled position and size (mirrors WebGPU renderer maths)
232
+ const scaledWidth = width * scaleX;
233
+ const scaledHeight = height * scaleY;
234
+ const baseX = x * (this._width / screenWidth);
235
+ const baseY = y * (this._height / screenHeight);
236
+ const centeredX = baseX + (width * (this._width / screenWidth) - scaledWidth) / 2;
237
+ const adjustedY = baseY + offsetY + (height * (this._height / screenHeight) - scaledHeight);
238
+ gl.uniform4f(this.uDestRect, centeredX, adjustedY, scaledWidth, scaledHeight);
239
+ // Draw 6 vertices for the two-triangle quad
240
+ gl.drawArrays(gl.TRIANGLES, 0, 6);
241
+ }
242
+ // Free GPU textures in slots beyond the current composition count
243
+ if (this.textures.length > compositions.length) {
244
+ for (let i = compositions.length; i < this.textures.length; i++) {
245
+ const stale = this.textures[i];
246
+ if (stale)
247
+ gl.deleteTexture(stale.texture);
248
+ }
249
+ this.textures.length = compositions.length;
250
+ }
251
+ }
252
+ /**
253
+ * Clear the canvas.
254
+ */
255
+ clear() {
256
+ if (!this.gl)
257
+ return;
258
+ this.gl.clearColor(0, 0, 0, 0);
259
+ this.gl.clear(this.gl.COLOR_BUFFER_BIT);
260
+ }
261
+ /**
262
+ * Check if renderer is initialized.
263
+ */
264
+ get initialized() {
265
+ return this._initialized;
266
+ }
267
+ /**
268
+ * Destroy all GPU resources.
269
+ */
270
+ destroy() {
271
+ const gl = this.gl;
272
+ if (gl) {
273
+ for (const info of this.textures) {
274
+ if (info)
275
+ gl.deleteTexture(info.texture);
276
+ }
277
+ if (this.program)
278
+ gl.deleteProgram(this.program);
279
+ if (this.vao)
280
+ gl.deleteVertexArray(this.vao);
281
+ }
282
+ this.textures = [];
283
+ this.program = null;
284
+ this.vao = null;
285
+ this.gl = null;
286
+ this._canvas = null;
287
+ this._initialized = false;
288
+ }
289
+ }
290
+ //# sourceMappingURL=webgl2-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgl2-renderer.js","sourceRoot":"","sources":["../../src/ts/webgl2-renderer.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,10 @@ interface TextureInfo {
4
4
  view: GPUTextureView;
5
5
  width: number;
6
6
  height: number;
7
+ /** Reference to the last uploaded source pixel data – used to skip redundant premultiplication + re-upload. */
8
+ sourceData: Uint8ClampedArray | null;
9
+ /** Cached bind group – valid as long as texture view and quad buffer haven't changed. */
10
+ bindGroup: GPUBindGroup | null;
7
11
  }
8
12
  /**
9
13
  * Check if WebGPU is supported in the current browser.
@@ -1 +1 @@
1
- {"version":3,"file":"webgpu-renderer.d.ts","sourceRoot":"","sources":["../../src/ts/webgpu-renderer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAoEtD,UAAU,WAAW;IACnB,OAAO,EAAE,UAAU,CAAA;IACnB,IAAI,EAAE,cAAc,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;;GAGG;AACH,qBAAa,cAAc;IACzB,MAAM,EAAE,SAAS,GAAG,IAAI,CAAO;IAC/B,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAO;IACvC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAO;IACzC,OAAO,EAAE,UAAU,GAAG,IAAI,CAAO;IACjC,eAAe,EAAE,kBAAkB,GAAG,IAAI,CAAO;IAGjD,aAAa,EAAE,SAAS,GAAG,IAAI,CAAO;IAGtC,eAAe,EAAE,SAAS,EAAE,CAAK;IAGjC,QAAQ,EAAE,WAAW,EAAE,CAAK;IAC5B,sBAAsB,EAAE,UAAU,EAAE,CAAK;IAEzC,MAAM,EAAE,gBAAgB,CAAe;IAEvC,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,YAAY,CAAQ;IAE5B;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAMb,WAAW;IA0GzB;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BxF;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAS/C,OAAO,CAAC,iBAAiB;IAezB;;OAEG;IACH,MAAM,CACJ,YAAY,EAAE,uBAAuB,EAAE,EACvC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,IAAI;IAkIP;;OAEG;IACH,KAAK,IAAI,IAAI;IAqBb;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;OAEG;IACH,OAAO,IAAI,IAAI;CAwBhB"}
1
+ {"version":3,"file":"webgpu-renderer.d.ts","sourceRoot":"","sources":["../../src/ts/webgpu-renderer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAoEtD,UAAU,WAAW;IACnB,OAAO,EAAE,UAAU,CAAA;IACnB,IAAI,EAAE,cAAc,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,+GAA+G;IAC/G,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAA;IACpC,yFAAyF;IACzF,SAAS,EAAE,YAAY,GAAG,IAAI,CAAA;CAC/B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;;GAGG;AACH,qBAAa,cAAc;IACzB,MAAM,EAAE,SAAS,GAAG,IAAI,CAAO;IAC/B,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAO;IACvC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAO;IACzC,OAAO,EAAE,UAAU,GAAG,IAAI,CAAO;IACjC,eAAe,EAAE,kBAAkB,GAAG,IAAI,CAAO;IAGjD,aAAa,EAAE,SAAS,GAAG,IAAI,CAAO;IAGtC,eAAe,EAAE,SAAS,EAAE,CAAK;IAGjC,QAAQ,EAAE,WAAW,EAAE,CAAK;IAC5B,sBAAsB,EAAE,UAAU,EAAE,CAAK;IAEzC,MAAM,EAAE,gBAAgB,CAAe;IAEvC,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,YAAY,CAAQ;IAE5B;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAMb,WAAW;IA0GzB;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BxF;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAS/C,OAAO,CAAC,iBAAiB;IAiBzB;;OAEG;IACH,MAAM,CACJ,YAAY,EAAE,uBAAuB,EAAE,EACvC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,IAAI;IAmJP;;OAEG;IACH,KAAK,IAAI,IAAI;IAqBb;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;OAEG;IACH,OAAO,IAAI,IAAI;CAwBhB"}
@@ -241,7 +241,9 @@ export class WebGPURenderer {
241
241
  texture,
242
242
  view: texture.createView(),
243
243
  width,
244
- height
244
+ height,
245
+ sourceData: null,
246
+ bindGroup: null
245
247
  };
246
248
  }
247
249
  /**
@@ -282,36 +284,38 @@ export class WebGPURenderer {
282
284
  if (width <= 0 || height <= 0)
283
285
  continue;
284
286
  let texInfo = this.textures[i];
285
- // Recreate texture if size changed
287
+ // Recreate texture if size changed; clear cached bind group and source reference
286
288
  if (texInfo.width !== width || texInfo.height !== height) {
287
289
  this.pendingDestroyTextures.push(texInfo.texture);
288
290
  texInfo = this.createTextureInfo(width, height);
289
291
  this.textures[i] = texInfo;
290
292
  }
291
- // Premultiply alpha on CPU so linear texture filtering produces correct results
292
- const uploadData = new Uint8Array(data.length);
293
- if (this.format === 'bgra8unorm') {
294
- for (let j = 0; j < data.length; j += 4) {
295
- const a = data[j + 3];
296
- const af = a / 255;
297
- uploadData[j] = (data[j + 2] * af + 0.5) | 0; // B <- R * a
298
- uploadData[j + 1] = (data[j + 1] * af + 0.5) | 0; // G <- G * a
299
- uploadData[j + 2] = (data[j] * af + 0.5) | 0; // R <- B * a
300
- uploadData[j + 3] = a;
293
+ // Only premultiply and re-upload when the source ImageData buffer has changed
294
+ if (texInfo.sourceData !== data) {
295
+ const uploadData = new Uint8Array(data.length);
296
+ if (this.format === 'bgra8unorm') {
297
+ for (let j = 0; j < data.length; j += 4) {
298
+ const a = data[j + 3];
299
+ const af = a / 255;
300
+ uploadData[j] = (data[j + 2] * af + 0.5) | 0; // B <- R * a
301
+ uploadData[j + 1] = (data[j + 1] * af + 0.5) | 0; // G
302
+ uploadData[j + 2] = (data[j] * af + 0.5) | 0; // R <- B * a
303
+ uploadData[j + 3] = a;
304
+ }
301
305
  }
302
- }
303
- else {
304
- for (let j = 0; j < data.length; j += 4) {
305
- const a = data[j + 3];
306
- const af = a / 255;
307
- uploadData[j] = (data[j] * af + 0.5) | 0;
308
- uploadData[j + 1] = (data[j + 1] * af + 0.5) | 0;
309
- uploadData[j + 2] = (data[j + 2] * af + 0.5) | 0;
310
- uploadData[j + 3] = a;
306
+ else {
307
+ for (let j = 0; j < data.length; j += 4) {
308
+ const a = data[j + 3];
309
+ const af = a / 255;
310
+ uploadData[j] = (data[j] * af + 0.5) | 0;
311
+ uploadData[j + 1] = (data[j + 1] * af + 0.5) | 0;
312
+ uploadData[j + 2] = (data[j + 2] * af + 0.5) | 0;
313
+ uploadData[j + 3] = a;
314
+ }
311
315
  }
316
+ this.device.queue.writeTexture({ texture: texInfo.texture }, uploadData, { bytesPerRow: width * 4 }, { width, height });
317
+ texInfo.sourceData = data;
312
318
  }
313
- // Upload premultiplied pixel data to texture
314
- this.device.queue.writeTexture({ texture: texInfo.texture }, uploadData, { bytesPerRow: width * 4 }, { width, height });
315
319
  // Calculate scaled position and size
316
320
  const scaledWidth = width * scaleX;
317
321
  const scaledHeight = height * scaleY;
@@ -334,17 +338,19 @@ export class WebGPURenderer {
334
338
  ]);
335
339
  const quadBuffer = this.quadDataBuffers[i];
336
340
  this.device.queue.writeBuffer(quadBuffer, 0, quadData);
337
- // Create bind group for this composition
338
- const bindGroup = this.device.createBindGroup({
339
- layout: this.bindGroupLayout,
340
- entries: [
341
- { binding: 0, resource: { buffer: this.uniformBuffer } },
342
- { binding: 1, resource: { buffer: quadBuffer } },
343
- { binding: 2, resource: this.sampler },
344
- { binding: 3, resource: texInfo.view }
345
- ]
346
- });
347
- renderPass.setBindGroup(0, bindGroup);
341
+ // Reuse cached bind group; it is only invalidated when the texture is recreated (size change)
342
+ if (!texInfo.bindGroup) {
343
+ texInfo.bindGroup = this.device.createBindGroup({
344
+ layout: this.bindGroupLayout,
345
+ entries: [
346
+ { binding: 0, resource: { buffer: this.uniformBuffer } },
347
+ { binding: 1, resource: { buffer: quadBuffer } },
348
+ { binding: 2, resource: this.sampler },
349
+ { binding: 3, resource: texInfo.view }
350
+ ]
351
+ });
352
+ }
353
+ renderPass.setBindGroup(0, texInfo.bindGroup);
348
354
  renderPass.draw(6); // 6 vertices for quad
349
355
  }
350
356
  renderPass.end();
@@ -354,6 +360,19 @@ export class WebGPURenderer {
354
360
  tex.destroy();
355
361
  }
356
362
  this.pendingDestroyTextures = [];
363
+ // Free GPU resources in slots beyond the current composition count
364
+ if (this.textures.length > compositions.length) {
365
+ for (let i = compositions.length; i < this.textures.length; i++) {
366
+ this.textures[i].texture.destroy();
367
+ }
368
+ this.textures.length = compositions.length;
369
+ }
370
+ if (this.quadDataBuffers.length > compositions.length) {
371
+ for (let i = compositions.length; i < this.quadDataBuffers.length; i++) {
372
+ this.quadDataBuffers[i].destroy();
373
+ }
374
+ this.quadDataBuffers.length = compositions.length;
375
+ }
357
376
  }
358
377
  /**
359
378
  * Clear the canvas.
@@ -1 +1 @@
1
- {"version":3,"file":"webgpu-renderer.js","sourceRoot":"","sources":["../../src/ts/webgpu-renderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webgpu-renderer.js","sourceRoot":"","sources":["../../src/ts/webgpu-renderer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "libbitsub",
3
- "version": "1.5.1",
3
+ "version": "1.6.0",
4
4
  "author": "altqx",
5
5
  "license": "MIT",
6
6
  "description": "High-performance WASM renderer for graphical subtitles (PGS and VobSub)",
package/pkg/README.md CHANGED
@@ -8,7 +8,7 @@ Started as a fork of Arcus92's [libpgs-js](https://github.com/Arcus92/libpgs-js)
8
8
 
9
9
  - **PGS (Blu-ray)** subtitle parsing and rendering
10
10
  - **VobSub (DVD)** subtitle parsing and rendering
11
- - **WebGPU rendering** GPU-accelerated rendering with automatic Canvas2D fallback
11
+ - **WebGPU / WebGL2 rendering** GPU-accelerated rendering with automatic fallback: WebGPU → WebGL2 → Canvas2D
12
12
  - **High-performance** Rust-based rendering engine compiled to WebAssembly
13
13
  - **Zero-copy** data transfer between JS and WASM where possible
14
14
  - **Caching** for decoded bitmaps to optimize repeated rendering
@@ -319,31 +319,44 @@ setInterval(() => {
319
319
  | `totalEntries` | number | Total subtitle entries/display sets in the loaded file |
320
320
  | `currentIndex` | number | Index of the currently displayed subtitle |
321
321
 
322
- ### WebGPU Rendering
322
+ ### GPU-Accelerated Rendering
323
323
 
324
- libbitsub automatically uses WebGPU for GPU-accelerated rendering when available, with automatic fallback to Canvas2D:
324
+ libbitsub automatically selects the best available GPU renderer at startup, following this fallback chain:
325
+
326
+ **WebGPU → WebGL2 → Canvas2D**
325
327
 
326
328
  ```typescript
327
- import { PgsRenderer, isWebGPUSupported } from 'libbitsub'
329
+ import { PgsRenderer, isWebGPUSupported, isWebGL2Supported } from 'libbitsub'
328
330
 
329
- // Check WebGPU support
331
+ // Check renderer support
330
332
  if (isWebGPUSupported()) {
331
- console.log('WebGPU available - GPU-accelerated rendering enabled')
333
+ console.log('WebGPU available')
334
+ } else if (isWebGL2Supported()) {
335
+ console.log('WebGL2 available')
336
+ } else {
337
+ console.log('Falling back to Canvas2D')
332
338
  }
333
339
 
334
- // Configure WebGPU preference
335
340
  const renderer = new PgsRenderer({
336
341
  video: videoElement,
337
342
  subUrl: '/subtitles/movie.sup',
338
- preferWebGPU: true, // default: true
339
- onWebGPUFallback: () => console.log('Fell back to Canvas2D')
343
+ onWebGPUFallback: () => console.log('WebGPU unavailable, trying WebGL2'),
344
+ onWebGL2Fallback: () => console.log('WebGL2 unavailable, using Canvas2D')
340
345
  })
341
346
  ```
342
347
 
343
348
  **Options:**
344
349
 
345
- - `preferWebGPU` (boolean): Enable WebGPU rendering if available. Default: `true`
346
- - `onWebGPUFallback` (function): Callback when WebGPU is unavailable and falls back to Canvas2D
350
+ - `onWebGPUFallback` (function): Callback when WebGPU initialisation fails
351
+ - `onWebGL2Fallback` (function): Callback when WebGL2 initialisation fails
352
+
353
+ **Renderer capabilities:**
354
+
355
+ | Renderer | Premultiplied alpha | Linear sampling | Browser support |
356
+ | -------- | ------------------- | --------------- | --------------- |
357
+ | WebGPU | ✅ | ✅ | Chrome 113+, Firefox 141+, Edge 113+ |
358
+ | WebGL2 | ✅ | ✅ | All modern browsers |
359
+ | Canvas2D | — | ✅ | Universal |
347
360
 
348
361
  ## Low-Level API (Programmatic Use)
349
362
 
@@ -501,11 +514,11 @@ interface VideoSubtitleOptions {
501
514
  subUrl?: string // URL to subtitle file (provide this OR subContent)
502
515
  subContent?: ArrayBuffer // Direct subtitle content (provide this OR subUrl)
503
516
  workerUrl?: string // Worker URL (for API compatibility)
504
- preferWebGPU?: boolean // Prefer WebGPU renderer if available (default: true)
505
517
  onLoading?: () => void // Called when subtitle loading starts
506
518
  onLoaded?: () => void // Called when subtitle loading completes
507
519
  onError?: (error: Error) => void // Called when subtitle loading fails
508
- onWebGPUFallback?: () => void // Called when WebGPU is unavailable
520
+ onWebGPUFallback?: () => void // Called when WebGPU init fails
521
+ onWebGL2Fallback?: () => void // Called when WebGL2 init fails
509
522
  }
510
523
  ```
511
524
 
@@ -331,8 +331,8 @@ export interface InitOutput {
331
331
  readonly vobsubparser_setDebandRange: (a: number, b: number) => void;
332
332
  readonly vobsubparser_setDebandThreshold: (a: number, b: number) => void;
333
333
  readonly __wbg_subtitleframe_free: (a: number, b: number) => void;
334
- readonly subtitleframe_width: (a: number) => number;
335
334
  readonly subtitleframe_height: (a: number) => number;
335
+ readonly subtitleframe_width: (a: number) => number;
336
336
  readonly subtitleframe_compositionCount: (a: number) => number;
337
337
  readonly __wbindgen_free: (a: number, b: number, c: number) => void;
338
338
  readonly __wbindgen_malloc: (a: number, b: number) => number;
Binary file
@@ -62,8 +62,8 @@ export const vobsubparser_setDebandEnabled: (a: number, b: number) => void;
62
62
  export const vobsubparser_setDebandRange: (a: number, b: number) => void;
63
63
  export const vobsubparser_setDebandThreshold: (a: number, b: number) => void;
64
64
  export const __wbg_subtitleframe_free: (a: number, b: number) => void;
65
- export const subtitleframe_width: (a: number) => number;
66
65
  export const subtitleframe_height: (a: number) => number;
66
+ export const subtitleframe_width: (a: number) => number;
67
67
  export const subtitleframe_compositionCount: (a: number) => number;
68
68
  export const __wbindgen_free: (a: number, b: number, c: number) => void;
69
69
  export const __wbindgen_malloc: (a: number, b: number) => number;
package/pkg/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "altqx"
6
6
  ],
7
7
  "description": "High-performance WASM renderer for graphical subtitles (PGS and VobSub)",
8
- "version": "1.5.1",
8
+ "version": "1.6.0",
9
9
  "license": "MIT",
10
10
  "repository": {
11
11
  "type": "git",