@webex/ladon-ts 4.2.4 → 4.4.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/CHANGELOG.md +19 -0
- package/build/module/index.d.ts +1 -0
- package/build/module/index.js +2 -1
- package/build/module/lib/config.d.ts +54 -18
- package/build/module/lib/config.js +58 -32
- package/build/module/lib/generator.d.ts +19 -10
- package/build/module/lib/generator.js +107 -79
- package/build/module/lib/pipeline.d.ts +38 -6
- package/build/module/lib/pipeline.js +68 -22
- package/build/module/lib/renderer/blur-renderer.d.ts +2 -2
- package/build/module/lib/renderer/blur-renderer.js +24 -34
- package/build/module/lib/renderer/ladon-renderer.d.ts +2 -2
- package/build/module/lib/renderer/passthrough-renderer.d.ts +2 -2
- package/build/module/lib/renderer/passthrough-renderer.js +1 -1
- package/build/module/lib/renderer/replacement-renderer.d.ts +2 -2
- package/build/module/lib/renderer/replacement-renderer.js +20 -14
- package/build/module/lib/renderer/webgl-renderer.js +8 -6
- package/build/module/lib/shared-resource-manager.d.ts +84 -0
- package/build/module/lib/shared-resource-manager.js +189 -0
- package/build/module/lib/util.d.ts +32 -10
- package/build/module/lib/util.js +139 -61
- package/build/module/lib/version.d.ts +1 -1
- package/build/module/lib/version.js +1 -1
- package/package.json +4 -3
|
@@ -7,7 +7,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
-
import { compileShader, linkProgram } from '../util';
|
|
10
|
+
import { bilinearUpsample, compileShader, linkProgram } from '../util';
|
|
11
11
|
import { WebGLRenderer } from './webgl-renderer';
|
|
12
12
|
export class BlurRenderer extends WebGLRenderer {
|
|
13
13
|
constructor(output_canvas, config) {
|
|
@@ -20,73 +20,62 @@ precision highp float;
|
|
|
20
20
|
#define KERNEL_SIZE ${this.config.render.kernel_size}
|
|
21
21
|
#define HORIZONTAL vec2(1.0, 0.0)
|
|
22
22
|
#define VERTICAL vec2(0.0, 1.0)
|
|
23
|
-
#define EPSILON 0.00001
|
|
24
23
|
|
|
25
24
|
out vec4 outColor;
|
|
26
25
|
|
|
27
26
|
uniform sampler2D u_image;
|
|
28
|
-
uniform float u_kernel[KERNEL_SIZE];
|
|
29
27
|
uniform sampler2D u_mask;
|
|
30
28
|
uniform vec2 u_resolution;
|
|
29
|
+
uniform float u_kernel[KERNEL_SIZE];
|
|
31
30
|
|
|
32
|
-
|
|
31
|
+
// Function to retrieve the mask value
|
|
33
32
|
float get_mask(vec2 st) {
|
|
34
|
-
return
|
|
33
|
+
return texture(u_mask, st).r;
|
|
35
34
|
}
|
|
36
35
|
|
|
36
|
+
// Get the inverse of the masked area
|
|
37
37
|
float get_inv_mask(vec2 st) {
|
|
38
38
|
return 1.0 - get_mask(st);
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
if (uv.x < 0.0 || uv.x > 1.0 || uv.y < 0.0 || uv.y > 1.0) {
|
|
43
|
-
return vec4(vec3(0.0), weight);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
// 4th channel is masked weight value
|
|
47
|
-
return vec4(vec3(texture(src, uv).rgb * get_inv_mask(uv) * weight), get_mask(uv) * weight);
|
|
48
|
-
}
|
|
49
|
-
|
|
41
|
+
// Blurring function
|
|
50
42
|
vec3 blur(sampler2D src, vec2 uv, vec2 direction) {
|
|
51
|
-
vec4
|
|
52
|
-
|
|
53
|
-
vec2 step = (direction / u_resolution);
|
|
43
|
+
vec4 accum = vec4(0.0);
|
|
44
|
+
vec2 step = direction / u_resolution;
|
|
54
45
|
int offset = (KERNEL_SIZE - 1) / 2;
|
|
55
46
|
|
|
56
47
|
for (int i = 0; i < KERNEL_SIZE; i++) {
|
|
57
|
-
vec2
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
if (abs(result.a - 1.0) < EPSILON) {
|
|
62
|
-
return vec3(0.0);
|
|
48
|
+
vec2 sampleUV = uv + step * float(i - offset);
|
|
49
|
+
vec4 sampleTex = texture(src, sampleUV);
|
|
50
|
+
float weight = u_kernel[i];
|
|
51
|
+
accum += sampleTex * weight;
|
|
63
52
|
}
|
|
64
53
|
|
|
65
|
-
//
|
|
66
|
-
return
|
|
54
|
+
float weightSum = max(accum.a, 0.001); // Avoid division by zero
|
|
55
|
+
return accum.rgb / weightSum;
|
|
67
56
|
}
|
|
68
57
|
`;
|
|
69
58
|
this.fragment_shader_pass_1_src = this.fragment_shader_common +
|
|
70
59
|
`
|
|
71
60
|
void main() {
|
|
72
61
|
vec2 st = gl_FragCoord.xy / u_resolution;
|
|
73
|
-
|
|
74
|
-
outColor = vec4(blur(u_image, st, HORIZONTAL) * get_inv_mask(st), 1.0);
|
|
62
|
+
outColor = vec4(blur(u_image, st, HORIZONTAL), 1.0);
|
|
75
63
|
}
|
|
76
64
|
`;
|
|
77
65
|
this.fragment_shader_pass_2_src = this.fragment_shader_common +
|
|
78
66
|
`
|
|
79
67
|
uniform sampler2D u_blur;
|
|
80
68
|
|
|
81
|
-
|
|
82
69
|
void main() {
|
|
83
|
-
${this.getUVCalculation()}
|
|
70
|
+
${this.getUVCalculation()};
|
|
84
71
|
|
|
85
72
|
vec3 blurred = blur(u_blur, st, VERTICAL);
|
|
86
|
-
vec3
|
|
87
|
-
float mask =
|
|
73
|
+
vec3 original = texture(u_image, st).rgb;
|
|
74
|
+
float mask = get_mask(st);
|
|
88
75
|
|
|
89
|
-
|
|
76
|
+
// Correct blending based on the mask
|
|
77
|
+
vec3 color = mix(original, blurred, 1.0 - mask);
|
|
78
|
+
outColor = vec4(color, 1.0);
|
|
90
79
|
}
|
|
91
80
|
`;
|
|
92
81
|
if (this.config.render.kernel_size % 2 === 0) {
|
|
@@ -149,9 +138,10 @@ void main() {
|
|
|
149
138
|
return __awaiter(this, void 0, void 0, function* () {
|
|
150
139
|
this.uploadVideoStream(input);
|
|
151
140
|
if (mask.warm) {
|
|
141
|
+
const maskData = bilinearUpsample(mask.data, this.config.mask.output_size.width, this.config.mask.output_size.height, this.config.mask.upscaled_size.width, this.config.mask.upscaled_size.height);
|
|
152
142
|
this.gl.activeTexture(this.gl.TEXTURE1);
|
|
153
143
|
this.gl.bindTexture(this.gl.TEXTURE_2D, this.mask_texture);
|
|
154
|
-
this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.
|
|
144
|
+
this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.R8, this.config.mask.upscaled_size.width, this.config.mask.upscaled_size.height, 0, this.gl.RED, this.gl.UNSIGNED_BYTE, maskData);
|
|
155
145
|
}
|
|
156
146
|
// program pass 1 - blur in one direction & output to framebuffer
|
|
157
147
|
this.gl.useProgram(this.program_1);
|
|
@@ -187,4 +177,4 @@ void main() {
|
|
|
187
177
|
return new Float32Array(kernel);
|
|
188
178
|
}
|
|
189
179
|
}
|
|
190
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
180
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmx1ci1yZW5kZXJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvcmVuZGVyZXIvYmx1ci1yZW5kZXJlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUd2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakQsTUFBTSxPQUFPLFlBQWEsU0FBUSxhQUFhO0lBOEUzQyxZQUFtQixhQUFnQyxFQUFrQixNQUFzQjtRQUN2RixLQUFLLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRGQsa0JBQWEsR0FBYixhQUFhLENBQW1CO1FBQWtCLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBckVuRiwyQkFBc0IsR0FBRzs7OzBCQUdWLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBcUIsQ0FBQyxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBcUN2RSxDQUFDO1FBRVUsK0JBQTBCLEdBQzlCLElBQUksQ0FBQyxzQkFBc0I7WUFDM0I7Ozs7O0NBS1AsQ0FBQztRQUVTLCtCQUEwQixHQUM3QixJQUFJLENBQUMsc0JBQXNCO1lBQzNCOzs7O01BSUYsSUFBSSxDQUFDLGdCQUFnQixFQUFFOzs7Ozs7Ozs7O0NBVTVCLENBQUM7UUFLTSxJQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBcUIsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMxRCxNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7U0FDM0Q7UUFFRCx1QkFBdUI7UUFDdkI7WUFDSSxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQy9CLElBQUksQ0FBQyxFQUFFLEVBQ1AsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQ3JCLElBQUksQ0FBQyxpQkFB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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { LadonOutput } from '../generator';
|
|
2
2
|
export interface LadonRenderer {
|
|
3
|
-
render(input: Uint8ClampedArray, mask:
|
|
3
|
+
render(input: Uint8ClampedArray, mask: LadonOutput): Promise<void>;
|
|
4
4
|
load(): Promise<void>;
|
|
5
5
|
destroy(): void;
|
|
6
6
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PipelineConfig } from '../config';
|
|
2
|
-
import {
|
|
2
|
+
import { LadonOutput } from '../generator';
|
|
3
3
|
import { LadonRenderer } from './ladon-renderer';
|
|
4
4
|
import { WebGLRenderer } from './webgl-renderer';
|
|
5
5
|
export declare class PassthroughRenderer extends WebGLRenderer implements LadonRenderer {
|
|
@@ -8,7 +8,7 @@ export declare class PassthroughRenderer extends WebGLRenderer implements LadonR
|
|
|
8
8
|
private program;
|
|
9
9
|
private fragment_shader;
|
|
10
10
|
constructor(output_canvas: HTMLCanvasElement, config: PipelineConfig);
|
|
11
|
-
render(input: Uint8ClampedArray, _:
|
|
11
|
+
render(input: Uint8ClampedArray, _: LadonOutput): Promise<void>;
|
|
12
12
|
load(): Promise<void>;
|
|
13
13
|
destroy(): void;
|
|
14
14
|
}
|
|
@@ -54,4 +54,4 @@ void main() {
|
|
|
54
54
|
// empty
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3Rocm91Z2gtcmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3JlbmRlcmVyL3Bhc3N0aHJvdWdoLXJlbmRlcmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUVBLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBR3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVqRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsYUFBYTtJQW1CbEQsWUFBbUIsYUFBZ0MsRUFBa0IsTUFBc0I7UUFDdkYsS0FBSyxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQURkLGtCQUFhLEdBQWIsYUFBYSxDQUFtQjtRQUFrQixXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQWhCbkYsb0JBQWUsR0FBRzs7Ozs7Ozs7OztNQVV4QixJQUFJLENBQUMsZ0JBQWdCLEVBQUU7Ozs7Q0FJNUIsQ0FBQztRQUtNLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzVGLE1BQU0sZUFBZSxHQUFHLGFBQWEsQ0FDakMsSUFBSSxDQUFDLEVBQUUsRUFDUCxJQUFJLENBQUMsRUFBRSxDQUFDLGVBQWUsRUFDdkIsSUFBSSxDQUFDLGVBQWUsQ0FDdkIsQ0FBQztRQUVGLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsYUFBYSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVqQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFWSxNQUFNLENBQ2YsS0FBd0I7SUFDeEIsZ0VBQWdFO0lBQ2hFLENBQWM7O1lBRWQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRTlCLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUVqQyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFFaEUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3BCLENBQUM7S0FBQTtJQUVZLElBQUk7O1lBQ2IsUUFBUTtRQUNaLENBQUM7S0FBQTtJQUVNLE9BQU87UUFDVixRQUFRO0lBQ1osQ0FBQztDQUNKIn0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PipelineConfig } from '../config';
|
|
2
|
-
import {
|
|
2
|
+
import { LadonOutput } from '../generator';
|
|
3
3
|
import { LadonRenderer } from './ladon-renderer';
|
|
4
4
|
import { WebGLRenderer } from './webgl-renderer';
|
|
5
5
|
export declare class ReplacementRenderer extends WebGLRenderer implements LadonRenderer {
|
|
@@ -10,7 +10,7 @@ export declare class ReplacementRenderer extends WebGLRenderer implements LadonR
|
|
|
10
10
|
protected background_texture: WebGLTexture;
|
|
11
11
|
private fragment_shader;
|
|
12
12
|
constructor(output_canvas: HTMLCanvasElement, config: PipelineConfig);
|
|
13
|
-
render(input: Uint8ClampedArray, mask:
|
|
13
|
+
render(input: Uint8ClampedArray, mask: LadonOutput): Promise<void>;
|
|
14
14
|
load(): Promise<void>;
|
|
15
15
|
destroy(): void;
|
|
16
16
|
}
|
|
@@ -7,7 +7,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
-
import { compileShader, linkProgram } from '../util';
|
|
10
|
+
import { bilinearUpsample, compileShader, linkProgram } from '../util';
|
|
11
11
|
import { WebGLRenderer } from './webgl-renderer';
|
|
12
12
|
export class ReplacementRenderer extends WebGLRenderer {
|
|
13
13
|
constructor(output_canvas, config) {
|
|
@@ -19,25 +19,30 @@ precision highp float;
|
|
|
19
19
|
|
|
20
20
|
out vec4 outColor;
|
|
21
21
|
|
|
22
|
-
uniform sampler2D
|
|
23
|
-
uniform sampler2D
|
|
24
|
-
uniform sampler2D
|
|
25
|
-
uniform vec2
|
|
22
|
+
uniform sampler2D u_background;
|
|
23
|
+
uniform sampler2D u_image;
|
|
24
|
+
uniform sampler2D u_mask;
|
|
25
|
+
uniform vec2 u_resolution;
|
|
26
26
|
|
|
27
27
|
|
|
28
|
+
// Retrieve the mask and inverse mask
|
|
28
29
|
float get_mask(vec2 st) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
float get_inv_mask(vec2 st) {
|
|
33
|
-
return 1.0 - get_mask(st);
|
|
30
|
+
float maskValue = texture(u_mask, st).r;
|
|
31
|
+
// Apply a smooth gradient at the edges of the mask
|
|
32
|
+
return smoothstep(0.45, 0.55, maskValue);
|
|
34
33
|
}
|
|
35
34
|
|
|
36
35
|
void main() {
|
|
37
36
|
${this.getUVCalculation()}
|
|
38
37
|
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
vec3 background = texture(u_background, st).rgb;
|
|
39
|
+
vec3 image = texture(u_image, st).rgb;
|
|
40
|
+
float mask = get_mask(st);
|
|
41
|
+
|
|
42
|
+
// Smooth blending between the background and the image based on the mask
|
|
43
|
+
vec3 color = background * (1.0 - mask) + image * mask;
|
|
44
|
+
outColor = vec4(color, 1.0);
|
|
45
|
+
}
|
|
41
46
|
`;
|
|
42
47
|
const background_canvas_ctx = this.config.render.background.getContext('2d');
|
|
43
48
|
if (!background_canvas_ctx) {
|
|
@@ -76,9 +81,10 @@ void main() {
|
|
|
76
81
|
return __awaiter(this, void 0, void 0, function* () {
|
|
77
82
|
this.uploadVideoStream(input);
|
|
78
83
|
if (mask.warm) {
|
|
84
|
+
const maskData = bilinearUpsample(mask.data, this.config.mask.output_size.width, this.config.mask.output_size.height, this.config.mask.upscaled_size.width, this.config.mask.upscaled_size.height);
|
|
79
85
|
this.gl.activeTexture(this.gl.TEXTURE1);
|
|
80
86
|
this.gl.bindTexture(this.gl.TEXTURE_2D, this.mask_texture);
|
|
81
|
-
this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.
|
|
87
|
+
this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.R8, this.config.mask.upscaled_size.width, this.config.mask.upscaled_size.height, 0, this.gl.RED, this.gl.UNSIGNED_BYTE, maskData);
|
|
82
88
|
}
|
|
83
89
|
if (!this.config.render.static) {
|
|
84
90
|
const background_data = this.background_canvas_ctx.getImageData(0, 0, this.config.render.background.width, this.config.render.background.height).data;
|
|
@@ -100,4 +106,4 @@ void main() {
|
|
|
100
106
|
// empty
|
|
101
107
|
}
|
|
102
108
|
}
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZW1lbnQtcmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3JlbmRlcmVyL3JlcGxhY2VtZW50LXJlbmRlcmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUVBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBR3ZFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVqRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsYUFBYTtJQXFDbEQsWUFBbUIsYUFBZ0MsRUFBa0IsTUFBc0I7UUFDdkYsS0FBSyxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQURkLGtCQUFhLEdBQWIsYUFBYSxDQUFtQjtRQUFrQixXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQS9CbkYsb0JBQWUsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQW1CeEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFOzs7Ozs7Ozs7O0NBVTVCLENBQUM7UUFLTSxNQUFNLHFCQUFxQixHQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQ2YsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7U0FDOUU7UUFDRCxJQUFJLENBQUMscUJBQXFCLEdBQUcscUJBQXFCLENBQUM7UUFDbkQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksQ0FDM0QsQ0FBQyxFQUNELENBQUMsRUFDQSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQTRCLENBQUMsVUFBVSxDQUFDLEtBQUssRUFDekQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUE0QixDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQzlELENBQUMsSUFB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
|
|
@@ -14,7 +14,7 @@ void main() {
|
|
|
14
14
|
gl_Position = position;
|
|
15
15
|
}
|
|
16
16
|
`;
|
|
17
|
-
const gl = this.output_canvas.getContext('webgl2');
|
|
17
|
+
const gl = this.output_canvas.getContext('webgl2', { antialias: true });
|
|
18
18
|
if (!gl) {
|
|
19
19
|
const output_2d = this.output_canvas.getContext('2d');
|
|
20
20
|
if (!output_2d) {
|
|
@@ -24,7 +24,9 @@ void main() {
|
|
|
24
24
|
this.intermediate_canvas = document.createElement('canvas');
|
|
25
25
|
this.intermediate_canvas.height = this.config.input.height;
|
|
26
26
|
this.intermediate_canvas.width = this.config.input.width;
|
|
27
|
-
const gl_intermediate = this.intermediate_canvas.getContext('webgl2'
|
|
27
|
+
const gl_intermediate = this.intermediate_canvas.getContext('webgl2', {
|
|
28
|
+
antialias: true,
|
|
29
|
+
});
|
|
28
30
|
if (!gl_intermediate) {
|
|
29
31
|
throw new Error('[ladon-ts] - error getting output context webgl');
|
|
30
32
|
}
|
|
@@ -52,11 +54,11 @@ void main() {
|
|
|
52
54
|
// Mask texture.
|
|
53
55
|
this.mask_texture = mask_texture;
|
|
54
56
|
this.gl.bindTexture(this.gl.TEXTURE_2D, this.mask_texture);
|
|
55
|
-
this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.
|
|
56
|
-
this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.
|
|
57
|
+
this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.LINEAR);
|
|
58
|
+
this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.LINEAR);
|
|
57
59
|
this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_WRAP_S, this.gl.CLAMP_TO_EDGE);
|
|
58
60
|
this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_WRAP_T, this.gl.CLAMP_TO_EDGE);
|
|
59
|
-
this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.
|
|
61
|
+
this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.R8, this.config.mask.upscaled_size.width, this.config.mask.upscaled_size.height, 0, this.gl.RED, this.gl.UNSIGNED_BYTE, null);
|
|
60
62
|
this.gl.bindTexture(this.gl.TEXTURE_2D, null);
|
|
61
63
|
const vertex_array = this.gl.createVertexArray();
|
|
62
64
|
if (!vertex_array) {
|
|
@@ -110,4 +112,4 @@ void main() {
|
|
|
110
112
|
}
|
|
111
113
|
}
|
|
112
114
|
}
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViZ2wtcmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3JlbmRlcmVyL3dlYmdsLXJlbmRlcmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBZ0IsYUFBYTtJQXdCL0IsWUFBbUIsYUFBZ0MsRUFBa0IsTUFBc0I7UUFBeEUsa0JBQWEsR0FBYixhQUFhLENBQW1CO1FBQWtCLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBZmpGLFVBQUssR0FBRyxJQUFJLFlBQVksQ0FBQztZQUMvQixDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUc7WUFFOUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHO1NBQ2pELENBQUMsQ0FBQztRQUVPLHNCQUFpQixHQUFHOzs7Ozs7O0NBT2pDLENBQUM7UUFHTSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUV4RSxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ0wsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFdEQsSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDWixNQUFNLElBQUksS0FBSyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7YUFDOUU7WUFFRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFD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
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import * as ort from 'onnxruntime-web';
|
|
2
|
+
import { PipelineConfig, PreloadConfig, SizeConfig } from './config';
|
|
3
|
+
/**
|
|
4
|
+
* Shared resource manager used to preload and share resources across different pipelines.
|
|
5
|
+
* This is useful when multiple pipelines are using the same model or when the model needs
|
|
6
|
+
* to be preloaded before the pipeline is created.
|
|
7
|
+
*/
|
|
8
|
+
declare class SharedResourceManager {
|
|
9
|
+
private modelSessions;
|
|
10
|
+
private worker?;
|
|
11
|
+
private workerUrl?;
|
|
12
|
+
/**
|
|
13
|
+
* Initialize the worker using the provided configuration.
|
|
14
|
+
*
|
|
15
|
+
* @param {PreloadConfig} config The configuration object.
|
|
16
|
+
* @returns {Promise<Worker>} A promise that resolves when the worker is initialized.
|
|
17
|
+
* @example
|
|
18
|
+
* await initializeWorker(config);
|
|
19
|
+
*/
|
|
20
|
+
initializeWorker(config: PreloadConfig): Promise<Worker>;
|
|
21
|
+
/**
|
|
22
|
+
* Terminate the worker.
|
|
23
|
+
*/
|
|
24
|
+
terminateWorker(): void;
|
|
25
|
+
/**
|
|
26
|
+
* Preload the model using the provided configuration.
|
|
27
|
+
*
|
|
28
|
+
* @param {PreloadConfig} config The configuration object.
|
|
29
|
+
* @returns {Promise<void>} A promise that resolves when the model is preloaded.
|
|
30
|
+
* @example
|
|
31
|
+
* await preloadModel(config);
|
|
32
|
+
*/
|
|
33
|
+
preloadModel(config: PreloadConfig): Promise<ort.InferenceSession>;
|
|
34
|
+
/**
|
|
35
|
+
* Preload the worker using the provided configuration.
|
|
36
|
+
*
|
|
37
|
+
* @param {PreloadConfig} config The configuration object.
|
|
38
|
+
* @returns {Promise<void>} A promise that resolves when the worker is preloaded.
|
|
39
|
+
* @example
|
|
40
|
+
* await preloadWorker(config);
|
|
41
|
+
*/
|
|
42
|
+
preloadWorker(config: PreloadConfig): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Warmup the model session with a dummy input to avoid latency when running the model for the first time.
|
|
45
|
+
*
|
|
46
|
+
* @param {ort.InferenceSession} session The model session.
|
|
47
|
+
* @param {SizeConfig} inputSize The input size of the model.
|
|
48
|
+
* @param {number} inputChannels The number of input channels (e.g., RGB is 3).
|
|
49
|
+
* @param {ort.Tensor.Type} inputType The input tensor type.
|
|
50
|
+
* @returns {Promise<void>} A promise that resolves when the model is warmed up.
|
|
51
|
+
* @example
|
|
52
|
+
* await warmupModel(session, inputSize, inputChannels, inputType);
|
|
53
|
+
*/
|
|
54
|
+
warmupModel(session: ort.InferenceSession, inputSize?: SizeConfig, inputChannels?: number, inputType?: ort.Tensor.Type): Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* Get the model session for the provided model URL.
|
|
57
|
+
*
|
|
58
|
+
* @param {string} modelUrl The model URL.
|
|
59
|
+
* @returns {ort.InferenceSession} The model session.
|
|
60
|
+
* @example
|
|
61
|
+
* const session = getModelSession(modelUrl);
|
|
62
|
+
*/
|
|
63
|
+
getModelSession(modelUrl: string): ort.InferenceSession;
|
|
64
|
+
/**
|
|
65
|
+
* Resolves the model URL based on the configuration.
|
|
66
|
+
*
|
|
67
|
+
* @param {PipelineConfig} config The configuration object.
|
|
68
|
+
* @returns {Promise<string>} The resolved model URL.
|
|
69
|
+
* @example
|
|
70
|
+
* const modelUrl = await getModelUrl(config);
|
|
71
|
+
*/
|
|
72
|
+
getModelUrl({ mask: { model_url_resolver, model_uri } }: PipelineConfig | PreloadConfig): Promise<string>;
|
|
73
|
+
getWorker(): Worker | undefined;
|
|
74
|
+
getWorkerUrl(): string | undefined;
|
|
75
|
+
}
|
|
76
|
+
export declare const sharedResourceManager: SharedResourceManager;
|
|
77
|
+
/**
|
|
78
|
+
* Preload the resources using the provided configuration. This function is used to preload the model
|
|
79
|
+
* and the worker before creating the pipeline.
|
|
80
|
+
*
|
|
81
|
+
* @param config - The configuration object.
|
|
82
|
+
*/
|
|
83
|
+
export declare const preload: (config: PreloadConfig) => Promise<void>;
|
|
84
|
+
export {};
|