oidn-web 0.1.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.
Files changed (52) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2 -0
  3. package/dist/oidn.mjs +22909 -0
  4. package/dist/oidn.umd.js +5905 -0
  5. package/lib/UNet.d.ts +54 -0
  6. package/lib/UNet.js +467 -0
  7. package/lib/UNet.js.map +1 -0
  8. package/lib/WGPUComputePass.d.ts +53 -0
  9. package/lib/WGPUComputePass.js +220 -0
  10. package/lib/WGPUComputePass.js.map +1 -0
  11. package/lib/WGPUFullQuadPass.d.ts +51 -0
  12. package/lib/WGPUFullQuadPass.js +261 -0
  13. package/lib/WGPUFullQuadPass.js.map +1 -0
  14. package/lib/backend.d.ts +5 -0
  15. package/lib/backend.js +41 -0
  16. package/lib/backend.js.map +1 -0
  17. package/lib/hdr.d.ts +31 -0
  18. package/lib/hdr.js +340 -0
  19. package/lib/hdr.js.map +1 -0
  20. package/lib/helper.d.ts +1 -0
  21. package/lib/helper.js +27 -0
  22. package/lib/helper.js.map +1 -0
  23. package/lib/kernels.d.ts +1 -0
  24. package/lib/kernels.js +26 -0
  25. package/lib/kernels.js.map +1 -0
  26. package/lib/main.d.ts +20 -0
  27. package/lib/main.js +20 -0
  28. package/lib/main.js.map +1 -0
  29. package/lib/process.d.ts +39 -0
  30. package/lib/process.js +309 -0
  31. package/lib/process.js.map +1 -0
  32. package/lib/tza.d.ts +15 -0
  33. package/lib/tza.js +114 -0
  34. package/lib/tza.js.map +1 -0
  35. package/package.json +26 -0
  36. package/src/UNet.ts +708 -0
  37. package/src/WGPUComputePass.ts +318 -0
  38. package/src/WGPUFullQuadPass.ts +348 -0
  39. package/src/backend.ts +53 -0
  40. package/src/hdr.ts +398 -0
  41. package/src/helper.ts +35 -0
  42. package/src/kernels.ts +31 -0
  43. package/src/main.ts +42 -0
  44. package/src/process.ts +362 -0
  45. package/src/tza.ts +136 -0
  46. package/weights/.gitattributes +1 -0
  47. package/weights/LICENSE.txt +202 -0
  48. package/weights/README.md +7 -0
  49. package/weights/rt_hdr.tza +0 -0
  50. package/weights/rt_hdr_alb_nrm.tza +0 -0
  51. package/weights/rt_ldr.tza +0 -0
  52. package/weights/rt_ldr_alb_nrm.tza +0 -0
package/lib/process.js ADDED
@@ -0,0 +1,309 @@
1
+ import { WGPUComputePass } from './WGPUComputePass';
2
+ const a = 1.41283765e3;
3
+ const b = 1.64593172;
4
+ const c = 4.31384981e-1;
5
+ const d = -2.94139609e-3;
6
+ const e = 1.92653254e-1;
7
+ const f = 6.26026094e-3;
8
+ const g = 9.98620152e-1;
9
+ const y0 = 1.5794576e-6;
10
+ const y1 = 3.22087631e-2;
11
+ const x0 = 2.23151711e-3;
12
+ const x1 = 3.70974749e-1;
13
+ function PUForward(y) {
14
+ if (y <= y0) {
15
+ y = a * y;
16
+ }
17
+ else if (y <= y1) {
18
+ y = b * Math.pow(y, c) + d;
19
+ }
20
+ else {
21
+ y = e * Math.log(y + f) + g;
22
+ }
23
+ return y;
24
+ }
25
+ function PUInverse(x) {
26
+ if (x <= x0) {
27
+ x = x / a;
28
+ }
29
+ else if (x <= x1) {
30
+ x = Math.pow((x - d) / b, 1 / c);
31
+ }
32
+ else {
33
+ x = Math.exp((x - g) / e) - f;
34
+ }
35
+ return x;
36
+ }
37
+ const yMax = 65504;
38
+ const xMax = PUForward(yMax);
39
+ const normScale = 1 / xMax;
40
+ const rcpNormScale = xMax;
41
+ export class Tile {
42
+ x;
43
+ y;
44
+ width;
45
+ height;
46
+ constructor(x, y, width, height) {
47
+ this.x = x;
48
+ this.y = y;
49
+ this.width = width;
50
+ this.height = height;
51
+ }
52
+ }
53
+ // TODO put in gpu
54
+ export function avgLogLum({ data, channels }) {
55
+ let totalLuminance = 0;
56
+ for (let i = 0; i < data.length; i += channels) {
57
+ const r = data[i];
58
+ const g = data[i + 1];
59
+ const b = data[i + 2];
60
+ const lum = 0.212671 * r + 0.71516 * g + 0.072169 * b;
61
+ // TODO performance
62
+ // https://github.com/RenderKit/oidn/blob/713ec7838ba650f99e0a896549c0dca5eeb3652d/devices/cpu/cpu_autoexposure.cpp#L43
63
+ totalLuminance += Math.log2(lum + 0.0001);
64
+ }
65
+ const numPixels = data.length / channels;
66
+ const averageLuminance = totalLuminance / numPixels;
67
+ const key = 0.18;
68
+ // https://github.com/RenderKit/oidn/blob/713ec7838ba650f99e0a896549c0dca5eeb3652d/training/color.py#L173
69
+ return key / Math.pow(2, averageLuminance);
70
+ }
71
+ export function hdrTransferFuncCPU({ data, channels, inputScale }) {
72
+ const newData = new Float32Array(data.length);
73
+ newData.set(data);
74
+ // https://github.com/RenderKit/oidn/blob/713ec7838ba650f99e0a896549c0dca5eeb3652d/core/color.h#L71
75
+ for (let i = 0; i < newData.length; i += channels) {
76
+ // First three are color
77
+ for (let c = 0; c < 3; c++) {
78
+ let y = newData[i + c] * inputScale;
79
+ // https://github.com/RenderKit/oidn/blob/713ec7838ba650f99e0a896549c0dca5eeb3652d/devices/cpu/color.ispc#L135
80
+ newData[i + c] = PUForward(y) * normScale;
81
+ }
82
+ }
83
+ return newData;
84
+ }
85
+ export function hdrTransferFuncInverseCPU({ data, channels, inputScale }) {
86
+ const newData = new Float32Array(data.length);
87
+ newData.set(data);
88
+ const outputScale = 1 / inputScale;
89
+ for (let i = 0; i < newData.length; i += channels) {
90
+ for (let c = 0; c < 3; c++) {
91
+ let x = newData[i + c] * rcpNormScale;
92
+ newData[i + c] = PUInverse(x) * outputScale;
93
+ }
94
+ }
95
+ return newData;
96
+ }
97
+ const constsCode = `
98
+ const a = ${a};
99
+ const b = ${b};
100
+ const c = ${c};
101
+ const d = ${d};
102
+ const e = ${e};
103
+ const f = ${f};
104
+ const g = ${g};
105
+ const y0 =${y0};
106
+ const y1 =${y1};
107
+ const x0 =${x0};
108
+ const x1 =${x1};
109
+
110
+ const normScale = ${normScale};
111
+ const rcpNormScale = ${rcpNormScale};
112
+ `;
113
+ export class GPUDataProcess {
114
+ _device;
115
+ _inputPass;
116
+ _outputPass;
117
+ constructor(_device) {
118
+ this._device = _device;
119
+ this._inputPass = new WGPUComputePass('inputPass', this._device, {
120
+ inputs: ['color', 'albedo', 'normal'],
121
+ outputs: ['color', 'albedo', 'normal'],
122
+ uniforms: [
123
+ {
124
+ label: 'inputScale',
125
+ type: 'f32',
126
+ data: new Float32Array([1])
127
+ },
128
+ {
129
+ label: 'inputSize',
130
+ type: 'vec2<f32>',
131
+ data: new Float32Array(2)
132
+ },
133
+ {
134
+ label: 'outputSize',
135
+ type: 'vec2<f32>',
136
+ data: new Float32Array(2)
137
+ },
138
+ {
139
+ label: 'inputOffset',
140
+ type: 'vec2<f32>',
141
+ data: new Float32Array(2)
142
+ }
143
+ ],
144
+ csDefine: /* wgsl */ `
145
+ ${constsCode}
146
+ fn PUForward(y: f32) -> f32 {
147
+ if (y <= y0) {
148
+ return a * y;
149
+ } else if (y <= y1) {
150
+ return b * pow(y, c) + d;
151
+ } else {
152
+ return e * log(y + f) + g;
153
+ }
154
+ }
155
+ `,
156
+ csMain: /* wgsl */ `
157
+ let x = f32(globalId.x);
158
+ let y = f32(globalId.y);
159
+ let inIdx = i32((y + inputOffset.y) * inputSize.x + (x + inputOffset.x));
160
+ let col = in_color[inIdx] * inputScale;
161
+ let alb = in_albedo[inIdx];
162
+ let nor = in_normal[inIdx];
163
+
164
+ let outIdx = i32(y * outputSize.x + x);
165
+ out_color[outIdx] = vec3f(PUForward(col.r), PUForward(col.g), PUForward(col.b)) * normScale;
166
+ out_normal[outIdx] = nor.rgb;
167
+ out_albedo[outIdx] = alb.rgb;
168
+ `
169
+ });
170
+ this._outputPass = new WGPUComputePass('outputPass', this._device, {
171
+ inputs: ['color', 'raw'],
172
+ outputs: ['color'],
173
+ uniforms: [
174
+ {
175
+ // TODO inputScale from avg log lum
176
+ label: 'inputScale',
177
+ type: 'f32',
178
+ data: new Float32Array([1])
179
+ },
180
+ {
181
+ label: 'inputSize',
182
+ type: 'vec2<f32>',
183
+ data: new Float32Array(2)
184
+ },
185
+ {
186
+ label: 'outputSize',
187
+ type: 'vec2<f32>',
188
+ data: new Float32Array(2)
189
+ },
190
+ {
191
+ label: 'imageSize',
192
+ type: 'vec2<f32>',
193
+ data: new Float32Array(2)
194
+ },
195
+ {
196
+ label: 'inputOffset',
197
+ type: 'vec2<f32>',
198
+ data: new Float32Array(2)
199
+ },
200
+ {
201
+ label: 'outputOffset',
202
+ type: 'vec2<f32>',
203
+ data: new Float32Array(2)
204
+ }
205
+ ],
206
+ csDefine: /* wgsl */ `
207
+ ${constsCode}
208
+ fn PUInverse(y: f32) -> f32 {
209
+ if (y <= x0) {
210
+ return y / a;
211
+ } else if (y <= x1) {
212
+ return pow((y - d) / b, 1 / c);
213
+ } else {
214
+ return exp((y - g) / e) - f;
215
+ }
216
+ }
217
+ `,
218
+ csMain: /* wgsl */ `
219
+ let x = f32(globalId.x);
220
+ let y = f32(globalId.y);
221
+ if (x >= outputSize.x || y >= outputSize.y) {
222
+ return;
223
+ }
224
+ let inIdx = i32((y + inputOffset.y) * inputSize.x + x + inputOffset.x);
225
+ let outIdx = i32((y + outputOffset.y) * imageSize.x + x + outputOffset.x);
226
+ let col = in_color[inIdx] * rcpNormScale;
227
+ let raw = in_raw[outIdx];
228
+ out_color[outIdx] = vec4f(
229
+ vec3f(PUInverse(col.r), PUInverse(col.g), PUInverse(col.b)) / inputScale,
230
+ // Pick the alpha
231
+ raw.a
232
+ );
233
+ `
234
+ });
235
+ // TODO input scale
236
+ this._inputPass.setOutputParams({
237
+ color: { channels: 3 },
238
+ albedo: { channels: 3 },
239
+ normal: { channels: 3 }
240
+ });
241
+ // TODO input scale
242
+ this._outputPass.setOutputParams({
243
+ color: { channels: 4 }
244
+ });
245
+ }
246
+ setImageSize(w, h) {
247
+ this._inputPass.setUniform('inputSize', new Float32Array([w, h]));
248
+ this._outputPass.setUniform('imageSize', new Float32Array([w, h]));
249
+ this._outputPass.setSize(w, h);
250
+ }
251
+ setInputTile(tile) {
252
+ const inputPass = this._inputPass;
253
+ const size = new Float32Array([tile.width, tile.height]);
254
+ inputPass.setUniform('inputOffset', new Float32Array([tile.x, tile.y]));
255
+ inputPass.setUniform('outputSize', size);
256
+ inputPass.setSize(size[0], size[1]);
257
+ this._outputPass.setUniform('inputSize', size);
258
+ }
259
+ setOutputTile(dstTile, srcTile) {
260
+ const outputPass = this._outputPass;
261
+ const size = new Float32Array([dstTile.width, dstTile.height]);
262
+ const dx = dstTile.x - srcTile.x;
263
+ const dy = dstTile.y - srcTile.y;
264
+ outputPass.setUniform('outputSize', size);
265
+ outputPass.setUniform('inputOffset', new Float32Array([dx, dy]));
266
+ outputPass.setUniform('outputOffset', new Float32Array([dstTile.x, dstTile.y]));
267
+ outputPass.setExecuteSize(size[0], size[1]);
268
+ }
269
+ forward(colorBuffer,
270
+ // TODO optional albedo and normal.
271
+ albedoBuffer, normalBuffer) {
272
+ const inputGPUPass = this._inputPass;
273
+ const commandEncoder = this._device.createCommandEncoder();
274
+ inputGPUPass.createPass(commandEncoder, {
275
+ color: { buffer: colorBuffer, channels: 4 },
276
+ albedo: { buffer: albedoBuffer, channels: 4 },
277
+ normal: { buffer: normalBuffer, channels: 4 }
278
+ });
279
+ this._device.queue.submit([commandEncoder.finish()]);
280
+ return {
281
+ color: inputGPUPass.getOutputBuffer('color'),
282
+ albedo: inputGPUPass.getOutputBuffer('albedo'),
283
+ normal: inputGPUPass.getOutputBuffer('normal')
284
+ };
285
+ }
286
+ inverse(buffer, raw) {
287
+ const device = this._device;
288
+ const commandEncoder = device.createCommandEncoder();
289
+ const outputGPUPass = this._outputPass;
290
+ outputGPUPass.createPass(commandEncoder, {
291
+ color: { buffer: buffer, channels: 4 },
292
+ raw: { buffer: raw, channels: 4 }
293
+ });
294
+ this._device.queue.submit([commandEncoder.finish()]);
295
+ return outputGPUPass.getOutputBuffer('color');
296
+ }
297
+ copyInputDataToOutput(inputColorBuffer) {
298
+ const encoder = this._device.createCommandEncoder();
299
+ const outputGPUPass = this._outputPass;
300
+ const colorBuffer = outputGPUPass.getOutputBuffer('color');
301
+ encoder.copyBufferToBuffer(inputColorBuffer, 0, colorBuffer, 0, colorBuffer.size);
302
+ this._device.queue.submit([encoder.finish()]);
303
+ }
304
+ dispose() {
305
+ this._outputPass.dispose();
306
+ this._inputPass.dispose();
307
+ }
308
+ }
309
+ //# sourceMappingURL=process.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process.js","sourceRoot":"","sources":["../src/process.ts"],"names":[],"mappings":"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"}
package/lib/tza.d.ts ADDED
@@ -0,0 +1,15 @@
1
+ export type TensorLayout = 'x' | 'oihw';
2
+ export type DataType = 'Float32' | 'Float16';
3
+ export declare class TensorDesc {
4
+ dims: number[];
5
+ paddedDims: number[];
6
+ layout: TensorLayout;
7
+ dataType: DataType;
8
+ getByteSize(): number;
9
+ }
10
+ export declare class HostTensor {
11
+ desc: TensorDesc;
12
+ data: Uint8Array;
13
+ constructor(desc: TensorDesc, data: Uint8Array);
14
+ }
15
+ export declare function parseTZA(buffer: ArrayBuffer): Map<string, HostTensor>;
package/lib/tza.js ADDED
@@ -0,0 +1,114 @@
1
+ // Copyright 2018 Intel Corporation
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ export class TensorDesc {
4
+ dims = [];
5
+ paddedDims = [];
6
+ layout = 'x';
7
+ dataType = 'Float32';
8
+ getByteSize() {
9
+ let size = 1;
10
+ for (const dim of this.paddedDims) {
11
+ size *= dim;
12
+ }
13
+ if (this.dataType === 'Float32') {
14
+ size *= 4;
15
+ }
16
+ else if (this.dataType === 'Float16') {
17
+ size *= 2;
18
+ }
19
+ return size;
20
+ }
21
+ }
22
+ export class HostTensor {
23
+ desc;
24
+ data;
25
+ constructor(desc, data) {
26
+ this.desc = desc;
27
+ this.data = data;
28
+ }
29
+ }
30
+ class DataViewReader {
31
+ _view;
32
+ offset = 0;
33
+ constructor(_view) {
34
+ this._view = _view;
35
+ }
36
+ read(size) {
37
+ const view = this._view;
38
+ const offset = this.offset;
39
+ this.offset += size;
40
+ switch (size) {
41
+ case 1:
42
+ return view.getUint8(offset);
43
+ case 2:
44
+ return view.getUint16(offset, true);
45
+ case 4:
46
+ return view.getUint32(offset, true);
47
+ case 8:
48
+ // TODO
49
+ return Number(view.getBigUint64(offset, true));
50
+ default:
51
+ throw new Error('unsupported read size');
52
+ }
53
+ }
54
+ }
55
+ export function parseTZA(buffer) {
56
+ const input = new Uint8Array(buffer);
57
+ const viewReader = new DataViewReader(new DataView(buffer));
58
+ // Parse the magic value
59
+ const magic = viewReader.read(2);
60
+ if (magic !== 0x41d7) {
61
+ throw new Error('invalid or corrupted weights blob');
62
+ }
63
+ // Parse the version
64
+ const majorVersion = viewReader.read(1);
65
+ const minorVersion = viewReader.read(1);
66
+ if (majorVersion !== 2) {
67
+ throw new Error('unsupported weights blob version');
68
+ }
69
+ // Parse the table offset and jump to the table
70
+ const tableOffset = viewReader.read(8);
71
+ viewReader.offset = tableOffset;
72
+ // Parse the number of tensors
73
+ const numTensors = viewReader.read(4);
74
+ // Parse the tensors
75
+ const tensorMap = new Map();
76
+ for (let i = 0; i < numTensors; ++i) {
77
+ const tensorDesc = new TensorDesc();
78
+ // Parse the name
79
+ const nameLen = viewReader.read(2);
80
+ const name = new TextDecoder().decode(input.subarray(viewReader.offset, viewReader.offset + nameLen));
81
+ viewReader.offset += nameLen;
82
+ // Parse the number of dimensions
83
+ const ndims = viewReader.read(1);
84
+ // Parse the shape of the tensor
85
+ for (let j = 0; j < ndims; ++j) {
86
+ tensorDesc.dims.push(viewReader.read(4));
87
+ }
88
+ tensorDesc.paddedDims = [...tensorDesc.dims];
89
+ // Parse the layout of the tensor
90
+ const layoutStr = new TextDecoder().decode(input.subarray(viewReader.offset, viewReader.offset + ndims));
91
+ if (layoutStr === 'oihw') {
92
+ tensorDesc.layout = 'oihw';
93
+ }
94
+ viewReader.offset += ndims;
95
+ // Parse the data type of the tensor
96
+ const dataType = String.fromCharCode(viewReader.read(1));
97
+ if (dataType === 'f') {
98
+ tensorDesc.dataType = 'Float32';
99
+ }
100
+ else if (dataType === 'h') {
101
+ tensorDesc.dataType = 'Float16';
102
+ }
103
+ else {
104
+ throw new Error('invalid tensor data type');
105
+ }
106
+ // Parse the offset to the tensor data
107
+ const tensorOffset = viewReader.read(8);
108
+ const tensorData = input.slice(tensorOffset, tensorOffset + tensorDesc.getByteSize());
109
+ // Add the tensor to the map
110
+ tensorMap.set(name, new HostTensor(tensorDesc, tensorData));
111
+ }
112
+ return tensorMap;
113
+ }
114
+ //# sourceMappingURL=tza.js.map
package/lib/tza.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tza.js","sourceRoot":"","sources":["../src/tza.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,sCAAsC;AAOtC,MAAM,OAAO,UAAU;IACrB,IAAI,GAAa,EAAE,CAAC;IACpB,UAAU,GAAa,EAAE,CAAC;IAC1B,MAAM,GAAiB,GAAG,CAAC;IAC3B,QAAQ,GAAa,SAAS,CAAC;IAE/B,WAAW;QACT,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,IAAI,IAAI,GAAG,CAAC;QACd,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,CAAC;QACZ,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACvC,IAAI,IAAI,CAAC,CAAC;QACZ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,MAAM,OAAO,UAAU;IACF;IAAyB;IAA5C,YAAmB,IAAgB,EAAS,IAAgB;QAAzC,SAAI,GAAJ,IAAI,CAAY;QAAS,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;CACjE;AAED,MAAM,cAAc;IAGE;IAFpB,MAAM,GAAW,CAAC,CAAC;IAEnB,YAAoB,KAAe;QAAf,UAAK,GAAL,KAAK,CAAU;IAAG,CAAC;IAEvC,IAAI,CAAC,IAAY;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC;QACpB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,CAAC;gBACJ,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC/B,KAAK,CAAC;gBACJ,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACtC,KAAK,CAAC;gBACJ,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACtC,KAAK,CAAC;gBACJ,OAAO;gBACP,OAAO,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;YACjD;gBACE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;CACF;AAED,MAAM,UAAU,QAAQ,CAAC,MAAmB;IAC1C,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,IAAI,cAAc,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAE5D,wBAAwB;IACxB,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IAED,oBAAoB;IACpB,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxC,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IAED,+CAA+C;IAC/C,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvC,UAAU,CAAC,MAAM,GAAG,WAAW,CAAC;IAEhC,8BAA8B;IAC9B,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEtC,oBAAoB;IACpB,MAAM,SAAS,GAAG,IAAI,GAAG,EAAsB,CAAC;IAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC;QACpC,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;QAEpC,iBAAiB;QACjB,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CACnC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC,CAC/D,CAAC;QACF,UAAU,CAAC,MAAM,IAAI,OAAO,CAAC;QAE7B,iCAAiC;QACjC,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAEjC,gCAAgC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC;YAC/B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC;QAED,UAAU,CAAC,UAAU,GAAG,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAE7C,iCAAiC;QACjC,MAAM,SAAS,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CACxC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,CAC7D,CAAC;QACF,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YACzB,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;QAC7B,CAAC;QAED,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC;QAE3B,oCAAoC;QACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;YACrB,UAAU,CAAC,QAAQ,GAAG,SAAS,CAAC;QAClC,CAAC;aAAM,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;YAC5B,UAAU,CAAC,QAAQ,GAAG,SAAS,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QAED,sCAAsC;QACtC,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAC5B,YAAY,EACZ,YAAY,GAAG,UAAU,CAAC,WAAW,EAAE,CACxC,CAAC;QAEF,4BAA4B;QAC5B,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "oidn-web",
3
+ "version": "0.1.0",
4
+ "description": "Run Open Image Denoiser on the Web",
5
+ "main": "lib/main.js",
6
+ "scripts": {
7
+ "build": "vite build",
8
+ "dev": "vite dev",
9
+ "watch": "vite build -w",
10
+ "prepublishOnly": "npm run build && npm run build:lib",
11
+ "build:lib": "tsc",
12
+ "watch:lib": "tsc --watch"
13
+ },
14
+ "author": "pissang",
15
+ "license": "MIT",
16
+ "dependencies": {
17
+ "@petamoriken/float16": "^3.8.7",
18
+ "@tensorflow/tfjs": "^4.20.0",
19
+ "@tensorflow/tfjs-backend-webgpu": "^4.20.0"
20
+ },
21
+ "devDependencies": {
22
+ "typescript": "^5.4.5",
23
+ "vite": "^5.2.13",
24
+ "vite-plugin-mkcert": "^1.17.5"
25
+ }
26
+ }