libbitsub 1.5.1 → 1.7.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 +262 -223
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/ts/parsers.d.ts +18 -1
- package/dist/ts/parsers.d.ts.map +1 -1
- package/dist/ts/parsers.js +151 -0
- package/dist/ts/parsers.js.map +1 -1
- package/dist/ts/renderers.d.ts +54 -4
- package/dist/ts/renderers.d.ts.map +1 -1
- package/dist/ts/renderers.js +457 -87
- package/dist/ts/renderers.js.map +1 -1
- package/dist/ts/types.d.ts +147 -3
- package/dist/ts/types.d.ts.map +1 -1
- package/dist/ts/utils.d.ts +11 -1
- package/dist/ts/utils.d.ts.map +1 -1
- package/dist/ts/utils.js +100 -1
- package/dist/ts/utils.js.map +1 -1
- package/dist/ts/wasm.js.map +1 -1
- package/dist/ts/webgl2-renderer.d.ts +57 -0
- package/dist/ts/webgl2-renderer.d.ts.map +1 -0
- package/dist/ts/webgl2-renderer.js +293 -0
- package/dist/ts/webgl2-renderer.js.map +1 -0
- package/dist/ts/webgpu-renderer.d.ts +5 -1
- package/dist/ts/webgpu-renderer.d.ts.map +1 -1
- package/dist/ts/webgpu-renderer.js +64 -45
- package/dist/ts/webgpu-renderer.js.map +1 -1
- package/dist/ts/worker.d.ts.map +1 -1
- package/dist/ts/worker.js +145 -87
- package/dist/ts/worker.js.map +1 -1
- package/dist/wrapper.d.ts +3 -2
- package/dist/wrapper.d.ts.map +1 -1
- package/dist/wrapper.js +3 -1
- package/dist/wrapper.js.map +1 -1
- package/package.json +3 -2
- package/pkg/README.md +262 -223
- package/pkg/libbitsub.d.ts +120 -0
- package/pkg/libbitsub.js +251 -15
- package/pkg/libbitsub_bg.wasm +0 -0
- package/pkg/libbitsub_bg.wasm.d.ts +24 -0
- package/pkg/package.json +1 -1
- package/src/wrapper.ts +14 -1
|
@@ -0,0 +1,57 @@
|
|
|
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 uOpacity;
|
|
20
|
+
private textures;
|
|
21
|
+
private _canvas;
|
|
22
|
+
private _initialized;
|
|
23
|
+
private _width;
|
|
24
|
+
private _height;
|
|
25
|
+
/**
|
|
26
|
+
* Initialize the WebGL2 renderer.
|
|
27
|
+
* Kept async for API parity with WebGPURenderer, but WebGL2 init is synchronous.
|
|
28
|
+
*/
|
|
29
|
+
init(): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* Configure the canvas for WebGL2 rendering.
|
|
32
|
+
*/
|
|
33
|
+
setCanvas(canvas: HTMLCanvasElement, width: number, height: number): Promise<void>;
|
|
34
|
+
private _compileShader;
|
|
35
|
+
/**
|
|
36
|
+
* Update canvas dimensions.
|
|
37
|
+
*/
|
|
38
|
+
updateSize(width: number, height: number): void;
|
|
39
|
+
private _ensureTexture;
|
|
40
|
+
/**
|
|
41
|
+
* Render subtitle compositions to the canvas.
|
|
42
|
+
*/
|
|
43
|
+
render(compositions: SubtitleCompositionData[], screenWidth: number, screenHeight: number, scaleX: number, scaleY: number, shiftX: number, shiftY: number, opacity: number): void;
|
|
44
|
+
/**
|
|
45
|
+
* Clear the canvas.
|
|
46
|
+
*/
|
|
47
|
+
clear(): void;
|
|
48
|
+
/**
|
|
49
|
+
* Check if renderer is initialized.
|
|
50
|
+
*/
|
|
51
|
+
get initialized(): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Destroy all GPU resources.
|
|
54
|
+
*/
|
|
55
|
+
destroy(): void;
|
|
56
|
+
}
|
|
57
|
+
//# 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;AA2DtD;;;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;IACpD,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,CAE1B;IAED;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmEvF;IAED,OAAO,CAAC,cAAc;IActB;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAW9C;IAED,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,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,IAAI,CA0DN;IAED;;OAEG;IACH,KAAK,IAAI,IAAI,CAIZ;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;OAEG;IACH,OAAO,IAAI,IAAI,CAgBd;CACF"}
|
|
@@ -0,0 +1,293 @@
|
|
|
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
|
+
uniform float u_opacity;
|
|
36
|
+
|
|
37
|
+
in vec2 v_texCoord;
|
|
38
|
+
out vec4 outColor;
|
|
39
|
+
|
|
40
|
+
void main() {
|
|
41
|
+
// Texture is pre-multiplied alpha; output as-is for premultiplied blending
|
|
42
|
+
outColor = texture(u_texture, v_texCoord) * u_opacity;
|
|
43
|
+
}
|
|
44
|
+
`;
|
|
45
|
+
/** Cached result of the WebGL2 support check (null = not yet tested). */
|
|
46
|
+
let _webgl2Supported = null;
|
|
47
|
+
/**
|
|
48
|
+
* Check if WebGL2 is supported in the current browser.
|
|
49
|
+
* Result is cached after the first call.
|
|
50
|
+
*/
|
|
51
|
+
export function isWebGL2Supported() {
|
|
52
|
+
if (_webgl2Supported !== null)
|
|
53
|
+
return _webgl2Supported;
|
|
54
|
+
if (typeof document === 'undefined')
|
|
55
|
+
return (_webgl2Supported = false);
|
|
56
|
+
try {
|
|
57
|
+
const canvas = document.createElement('canvas');
|
|
58
|
+
_webgl2Supported = !!canvas.getContext('webgl2');
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
_webgl2Supported = false;
|
|
62
|
+
}
|
|
63
|
+
return _webgl2Supported;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* WebGL2-based subtitle renderer.
|
|
67
|
+
* Uploads RGBA bitmap data to GPU textures and renders textured quads.
|
|
68
|
+
* Uses premultiplied alpha blending to match WebGPU renderer output.
|
|
69
|
+
*/
|
|
70
|
+
export class WebGL2Renderer {
|
|
71
|
+
gl = null;
|
|
72
|
+
program = null;
|
|
73
|
+
vao = null;
|
|
74
|
+
// Cached uniform locations
|
|
75
|
+
uResolution = null;
|
|
76
|
+
uDestRect = null;
|
|
77
|
+
uTexture = null;
|
|
78
|
+
uOpacity = null;
|
|
79
|
+
// Texture pool for compositions (indexed by slot)
|
|
80
|
+
textures = [];
|
|
81
|
+
_canvas = null;
|
|
82
|
+
_initialized = false;
|
|
83
|
+
_width = 0;
|
|
84
|
+
_height = 0;
|
|
85
|
+
/**
|
|
86
|
+
* Initialize the WebGL2 renderer.
|
|
87
|
+
* Kept async for API parity with WebGPURenderer, but WebGL2 init is synchronous.
|
|
88
|
+
*/
|
|
89
|
+
async init() {
|
|
90
|
+
// No-op – actual init happens in setCanvas once we have a canvas element.
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Configure the canvas for WebGL2 rendering.
|
|
94
|
+
*/
|
|
95
|
+
async setCanvas(canvas, width, height) {
|
|
96
|
+
this._canvas = canvas;
|
|
97
|
+
canvas.width = width;
|
|
98
|
+
canvas.height = height;
|
|
99
|
+
this._width = width;
|
|
100
|
+
this._height = height;
|
|
101
|
+
const gl = canvas.getContext('webgl2', {
|
|
102
|
+
alpha: true,
|
|
103
|
+
premultipliedAlpha: true,
|
|
104
|
+
antialias: false,
|
|
105
|
+
depth: false,
|
|
106
|
+
stencil: false
|
|
107
|
+
});
|
|
108
|
+
if (!gl) {
|
|
109
|
+
throw new Error('Could not get WebGL2 context');
|
|
110
|
+
}
|
|
111
|
+
this.gl = gl;
|
|
112
|
+
// Compile and link shader program
|
|
113
|
+
const vertShader = this._compileShader(gl.VERTEX_SHADER, VERTEX_SHADER_SRC);
|
|
114
|
+
const fragShader = this._compileShader(gl.FRAGMENT_SHADER, FRAGMENT_SHADER_SRC);
|
|
115
|
+
const program = gl.createProgram();
|
|
116
|
+
if (!program)
|
|
117
|
+
throw new Error('Failed to create WebGL2 program');
|
|
118
|
+
gl.attachShader(program, vertShader);
|
|
119
|
+
gl.attachShader(program, fragShader);
|
|
120
|
+
gl.linkProgram(program);
|
|
121
|
+
gl.deleteShader(vertShader);
|
|
122
|
+
gl.deleteShader(fragShader);
|
|
123
|
+
if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
|
|
124
|
+
const log = gl.getProgramInfoLog(program);
|
|
125
|
+
gl.deleteProgram(program);
|
|
126
|
+
throw new Error('WebGL2 program link failed: ' + log);
|
|
127
|
+
}
|
|
128
|
+
this.program = program;
|
|
129
|
+
gl.useProgram(program);
|
|
130
|
+
// Cache uniform locations
|
|
131
|
+
this.uResolution = gl.getUniformLocation(program, 'u_resolution');
|
|
132
|
+
this.uDestRect = gl.getUniformLocation(program, 'u_destRect');
|
|
133
|
+
this.uTexture = gl.getUniformLocation(program, 'u_texture');
|
|
134
|
+
this.uOpacity = gl.getUniformLocation(program, 'u_opacity');
|
|
135
|
+
// VAO (required in WebGL2 even without vertex attributes)
|
|
136
|
+
this.vao = gl.createVertexArray();
|
|
137
|
+
gl.bindVertexArray(this.vao);
|
|
138
|
+
// Set initial state
|
|
139
|
+
gl.uniform2f(this.uResolution, width, height);
|
|
140
|
+
gl.uniform1i(this.uTexture, 0);
|
|
141
|
+
gl.uniform1f(this.uOpacity, 1);
|
|
142
|
+
// Premultiplied alpha blending: src=ONE, dst=ONE_MINUS_SRC_ALPHA
|
|
143
|
+
gl.enable(gl.BLEND);
|
|
144
|
+
gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
|
|
145
|
+
gl.viewport(0, 0, width, height);
|
|
146
|
+
this._initialized = true;
|
|
147
|
+
console.log('[libbitsub] WebGL2 renderer initialized');
|
|
148
|
+
}
|
|
149
|
+
_compileShader(type, src) {
|
|
150
|
+
const gl = this.gl;
|
|
151
|
+
const shader = gl.createShader(type);
|
|
152
|
+
if (!shader)
|
|
153
|
+
throw new Error('Failed to create shader');
|
|
154
|
+
gl.shaderSource(shader, src);
|
|
155
|
+
gl.compileShader(shader);
|
|
156
|
+
if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
|
|
157
|
+
const log = gl.getShaderInfoLog(shader);
|
|
158
|
+
gl.deleteShader(shader);
|
|
159
|
+
throw new Error('Shader compile error: ' + log);
|
|
160
|
+
}
|
|
161
|
+
return shader;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Update canvas dimensions.
|
|
165
|
+
*/
|
|
166
|
+
updateSize(width, height) {
|
|
167
|
+
if (!this.gl || !this._canvas)
|
|
168
|
+
return;
|
|
169
|
+
this._canvas.width = width;
|
|
170
|
+
this._canvas.height = height;
|
|
171
|
+
this._width = width;
|
|
172
|
+
this._height = height;
|
|
173
|
+
this.gl.viewport(0, 0, width, height);
|
|
174
|
+
this.gl.useProgram(this.program);
|
|
175
|
+
this.gl.uniform2f(this.uResolution, width, height);
|
|
176
|
+
}
|
|
177
|
+
_ensureTexture(index, width, height) {
|
|
178
|
+
const gl = this.gl;
|
|
179
|
+
const existing = this.textures[index];
|
|
180
|
+
if (existing && existing.width === width && existing.height === height) {
|
|
181
|
+
return existing;
|
|
182
|
+
}
|
|
183
|
+
// Delete old texture if size changed
|
|
184
|
+
if (existing) {
|
|
185
|
+
gl.deleteTexture(existing.texture);
|
|
186
|
+
}
|
|
187
|
+
const texture = gl.createTexture();
|
|
188
|
+
if (!texture)
|
|
189
|
+
throw new Error('Failed to create WebGL2 texture');
|
|
190
|
+
gl.bindTexture(gl.TEXTURE_2D, texture);
|
|
191
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
|
|
192
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
|
|
193
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
|
|
194
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
|
|
195
|
+
// Allocate storage
|
|
196
|
+
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA8, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
|
|
197
|
+
const info = { texture, width, height, sourceData: null };
|
|
198
|
+
this.textures[index] = info;
|
|
199
|
+
return info;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Render subtitle compositions to the canvas.
|
|
203
|
+
*/
|
|
204
|
+
render(compositions, screenWidth, screenHeight, scaleX, scaleY, shiftX, shiftY, opacity) {
|
|
205
|
+
if (!this.gl || !this.program || !this._canvas)
|
|
206
|
+
return;
|
|
207
|
+
const gl = this.gl;
|
|
208
|
+
gl.useProgram(this.program);
|
|
209
|
+
gl.bindVertexArray(this.vao);
|
|
210
|
+
gl.clearColor(0, 0, 0, 0);
|
|
211
|
+
gl.clear(gl.COLOR_BUFFER_BIT);
|
|
212
|
+
gl.activeTexture(gl.TEXTURE0);
|
|
213
|
+
gl.uniform1f(this.uOpacity, opacity);
|
|
214
|
+
for (let i = 0; i < compositions.length; i++) {
|
|
215
|
+
const comp = compositions[i];
|
|
216
|
+
const { pixelData, x, y } = comp;
|
|
217
|
+
const { width, height, data } = pixelData;
|
|
218
|
+
if (width <= 0 || height <= 0)
|
|
219
|
+
continue;
|
|
220
|
+
const info = this._ensureTexture(i, width, height);
|
|
221
|
+
gl.bindTexture(gl.TEXTURE_2D, info.texture);
|
|
222
|
+
// Only premultiply and re-upload if the source ImageData buffer has changed
|
|
223
|
+
if (info.sourceData !== data) {
|
|
224
|
+
const uploadData = new Uint8Array(data.length);
|
|
225
|
+
for (let j = 0; j < data.length; j += 4) {
|
|
226
|
+
const a = data[j + 3];
|
|
227
|
+
const af = a / 255;
|
|
228
|
+
uploadData[j] = (data[j] * af + 0.5) | 0;
|
|
229
|
+
uploadData[j + 1] = (data[j + 1] * af + 0.5) | 0;
|
|
230
|
+
uploadData[j + 2] = (data[j + 2] * af + 0.5) | 0;
|
|
231
|
+
uploadData[j + 3] = a;
|
|
232
|
+
}
|
|
233
|
+
gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, uploadData);
|
|
234
|
+
info.sourceData = data;
|
|
235
|
+
}
|
|
236
|
+
// Calculate scaled position and size (mirrors WebGPU renderer maths)
|
|
237
|
+
const scaledWidth = width * scaleX;
|
|
238
|
+
const scaledHeight = height * scaleY;
|
|
239
|
+
const adjustedX = x * (this._width / screenWidth) + shiftX;
|
|
240
|
+
const adjustedY = y * (this._height / screenHeight) + shiftY;
|
|
241
|
+
gl.uniform4f(this.uDestRect, adjustedX, adjustedY, scaledWidth, scaledHeight);
|
|
242
|
+
// Draw 6 vertices for the two-triangle quad
|
|
243
|
+
gl.drawArrays(gl.TRIANGLES, 0, 6);
|
|
244
|
+
}
|
|
245
|
+
// Free GPU textures in slots beyond the current composition count
|
|
246
|
+
if (this.textures.length > compositions.length) {
|
|
247
|
+
for (let i = compositions.length; i < this.textures.length; i++) {
|
|
248
|
+
const stale = this.textures[i];
|
|
249
|
+
if (stale)
|
|
250
|
+
gl.deleteTexture(stale.texture);
|
|
251
|
+
}
|
|
252
|
+
this.textures.length = compositions.length;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Clear the canvas.
|
|
257
|
+
*/
|
|
258
|
+
clear() {
|
|
259
|
+
if (!this.gl)
|
|
260
|
+
return;
|
|
261
|
+
this.gl.clearColor(0, 0, 0, 0);
|
|
262
|
+
this.gl.clear(this.gl.COLOR_BUFFER_BIT);
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Check if renderer is initialized.
|
|
266
|
+
*/
|
|
267
|
+
get initialized() {
|
|
268
|
+
return this._initialized;
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Destroy all GPU resources.
|
|
272
|
+
*/
|
|
273
|
+
destroy() {
|
|
274
|
+
const gl = this.gl;
|
|
275
|
+
if (gl) {
|
|
276
|
+
for (const info of this.textures) {
|
|
277
|
+
if (info)
|
|
278
|
+
gl.deleteTexture(info.texture);
|
|
279
|
+
}
|
|
280
|
+
if (this.program)
|
|
281
|
+
gl.deleteProgram(this.program);
|
|
282
|
+
if (this.vao)
|
|
283
|
+
gl.deleteVertexArray(this.vao);
|
|
284
|
+
}
|
|
285
|
+
this.textures = [];
|
|
286
|
+
this.program = null;
|
|
287
|
+
this.vao = null;
|
|
288
|
+
this.gl = null;
|
|
289
|
+
this._canvas = null;
|
|
290
|
+
this._initialized = false;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
//# 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.
|
|
@@ -45,7 +49,7 @@ export declare class WebGPURenderer {
|
|
|
45
49
|
/**
|
|
46
50
|
* Render subtitle compositions to the canvas.
|
|
47
51
|
*/
|
|
48
|
-
render(compositions: SubtitleCompositionData[], screenWidth: number, screenHeight: number, scaleX: number, scaleY: number,
|
|
52
|
+
render(compositions: SubtitleCompositionData[], screenWidth: number, screenHeight: number, scaleX: number, scaleY: number, shiftX: number, shiftY: number, opacity: number): void;
|
|
49
53
|
/**
|
|
50
54
|
* Clear the canvas.
|
|
51
55
|
*/
|
|
@@ -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;
|
|
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;AAqEtD,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,CAI1B;YAEa,WAAW;IA0GzB;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BvF;IAED;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAO9C;IAED,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,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,IAAI,CAqJN;IAED;;OAEG;IACH,KAAK,IAAI,IAAI,CAmBZ;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;OAEG;IACH,OAAO,IAAI,IAAI,CAuBd;CACF"}
|
|
@@ -8,6 +8,7 @@ struct VertexOutput {
|
|
|
8
8
|
|
|
9
9
|
struct Uniforms {
|
|
10
10
|
resolution: vec2f,
|
|
11
|
+
opacity: f32,
|
|
11
12
|
}
|
|
12
13
|
|
|
13
14
|
struct QuadData {
|
|
@@ -60,7 +61,7 @@ struct FragmentInput {
|
|
|
60
61
|
@fragment
|
|
61
62
|
fn fragmentMain(input: FragmentInput) -> @location(0) vec4f {
|
|
62
63
|
// Sample pre-multiplied alpha texture (premultiplied on CPU upload)
|
|
63
|
-
return textureSample(tex, texSampler, input.texCoord);
|
|
64
|
+
return textureSample(tex, texSampler, input.texCoord) * uniforms.opacity;
|
|
64
65
|
}
|
|
65
66
|
`;
|
|
66
67
|
/**
|
|
@@ -128,7 +129,7 @@ export class WebGPURenderer {
|
|
|
128
129
|
});
|
|
129
130
|
// Create uniform buffer
|
|
130
131
|
this.uniformBuffer = this.device.createBuffer({
|
|
131
|
-
size: 16,
|
|
132
|
+
size: 16,
|
|
132
133
|
usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST
|
|
133
134
|
});
|
|
134
135
|
// Create bind group layout
|
|
@@ -136,7 +137,7 @@ export class WebGPURenderer {
|
|
|
136
137
|
entries: [
|
|
137
138
|
{
|
|
138
139
|
binding: 0,
|
|
139
|
-
visibility: GPUShaderStage.VERTEX,
|
|
140
|
+
visibility: GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT,
|
|
140
141
|
buffer: { type: 'uniform' }
|
|
141
142
|
},
|
|
142
143
|
{
|
|
@@ -219,7 +220,7 @@ export class WebGPURenderer {
|
|
|
219
220
|
canvas.width = width;
|
|
220
221
|
canvas.height = height;
|
|
221
222
|
// Update uniform buffer with resolution
|
|
222
|
-
this.device.queue.writeBuffer(this.uniformBuffer, 0, new Float32Array([width, height]));
|
|
223
|
+
this.device.queue.writeBuffer(this.uniformBuffer, 0, new Float32Array([width, height, 1, 0]));
|
|
223
224
|
}
|
|
224
225
|
/**
|
|
225
226
|
* Update canvas dimensions.
|
|
@@ -229,7 +230,7 @@ export class WebGPURenderer {
|
|
|
229
230
|
return;
|
|
230
231
|
this._canvas.width = width;
|
|
231
232
|
this._canvas.height = height;
|
|
232
|
-
this.device.queue.writeBuffer(this.uniformBuffer, 0, new Float32Array([width, height]));
|
|
233
|
+
this.device.queue.writeBuffer(this.uniformBuffer, 0, new Float32Array([width, height, 1, 0]));
|
|
233
234
|
}
|
|
234
235
|
createTextureInfo(width, height) {
|
|
235
236
|
const texture = this.device.createTexture({
|
|
@@ -241,15 +242,18 @@ export class WebGPURenderer {
|
|
|
241
242
|
texture,
|
|
242
243
|
view: texture.createView(),
|
|
243
244
|
width,
|
|
244
|
-
height
|
|
245
|
+
height,
|
|
246
|
+
sourceData: null,
|
|
247
|
+
bindGroup: null
|
|
245
248
|
};
|
|
246
249
|
}
|
|
247
250
|
/**
|
|
248
251
|
* Render subtitle compositions to the canvas.
|
|
249
252
|
*/
|
|
250
|
-
render(compositions, screenWidth, screenHeight, scaleX, scaleY,
|
|
253
|
+
render(compositions, screenWidth, screenHeight, scaleX, scaleY, shiftX, shiftY, opacity) {
|
|
251
254
|
if (!this.device || !this.context || !this.pipeline)
|
|
252
255
|
return;
|
|
256
|
+
this.device.queue.writeBuffer(this.uniformBuffer, 0, new Float32Array([this._canvas.width, this._canvas.height, opacity, 0]));
|
|
253
257
|
const commandEncoder = this.device.createCommandEncoder();
|
|
254
258
|
const textureView = this.context.getCurrentTexture().createView();
|
|
255
259
|
// Begin render pass with clear
|
|
@@ -282,47 +286,47 @@ export class WebGPURenderer {
|
|
|
282
286
|
if (width <= 0 || height <= 0)
|
|
283
287
|
continue;
|
|
284
288
|
let texInfo = this.textures[i];
|
|
285
|
-
// Recreate texture if size changed
|
|
289
|
+
// Recreate texture if size changed; clear cached bind group and source reference
|
|
286
290
|
if (texInfo.width !== width || texInfo.height !== height) {
|
|
287
291
|
this.pendingDestroyTextures.push(texInfo.texture);
|
|
288
292
|
texInfo = this.createTextureInfo(width, height);
|
|
289
293
|
this.textures[i] = texInfo;
|
|
290
294
|
}
|
|
291
|
-
//
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
295
|
+
// Only premultiply and re-upload when the source ImageData buffer has changed
|
|
296
|
+
if (texInfo.sourceData !== data) {
|
|
297
|
+
const uploadData = new Uint8Array(data.length);
|
|
298
|
+
if (this.format === 'bgra8unorm') {
|
|
299
|
+
for (let j = 0; j < data.length; j += 4) {
|
|
300
|
+
const a = data[j + 3];
|
|
301
|
+
const af = a / 255;
|
|
302
|
+
uploadData[j] = (data[j + 2] * af + 0.5) | 0; // B <- R * a
|
|
303
|
+
uploadData[j + 1] = (data[j + 1] * af + 0.5) | 0; // G
|
|
304
|
+
uploadData[j + 2] = (data[j] * af + 0.5) | 0; // R <- B * a
|
|
305
|
+
uploadData[j + 3] = a;
|
|
306
|
+
}
|
|
301
307
|
}
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
308
|
+
else {
|
|
309
|
+
for (let j = 0; j < data.length; j += 4) {
|
|
310
|
+
const a = data[j + 3];
|
|
311
|
+
const af = a / 255;
|
|
312
|
+
uploadData[j] = (data[j] * af + 0.5) | 0;
|
|
313
|
+
uploadData[j + 1] = (data[j + 1] * af + 0.5) | 0;
|
|
314
|
+
uploadData[j + 2] = (data[j + 2] * af + 0.5) | 0;
|
|
315
|
+
uploadData[j + 3] = a;
|
|
316
|
+
}
|
|
311
317
|
}
|
|
318
|
+
this.device.queue.writeTexture({ texture: texInfo.texture }, uploadData, { bytesPerRow: width * 4 }, { width, height });
|
|
319
|
+
texInfo.sourceData = data;
|
|
312
320
|
}
|
|
313
|
-
// Upload premultiplied pixel data to texture
|
|
314
|
-
this.device.queue.writeTexture({ texture: texInfo.texture }, uploadData, { bytesPerRow: width * 4 }, { width, height });
|
|
315
321
|
// Calculate scaled position and size
|
|
316
322
|
const scaledWidth = width * scaleX;
|
|
317
323
|
const scaledHeight = height * scaleY;
|
|
318
|
-
const
|
|
319
|
-
const
|
|
320
|
-
const centeredX = baseX + (width * (this._canvas.width / screenWidth) - scaledWidth) / 2;
|
|
321
|
-
const adjustedY = baseY + offsetY + (height * (this._canvas.height / screenHeight) - scaledHeight);
|
|
324
|
+
const adjustedX = x * (this._canvas.width / screenWidth) + shiftX;
|
|
325
|
+
const adjustedY = y * (this._canvas.height / screenHeight) + shiftY;
|
|
322
326
|
// Update quad data buffer
|
|
323
327
|
const quadData = new Float32Array([
|
|
324
328
|
// destRect
|
|
325
|
-
|
|
329
|
+
adjustedX,
|
|
326
330
|
adjustedY,
|
|
327
331
|
scaledWidth,
|
|
328
332
|
scaledHeight,
|
|
@@ -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
|
-
//
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
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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"}
|