oidn-web 0.2.2 → 0.3.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.
@@ -3,12 +3,14 @@ function isStorageParamsEqual(params, other) {
3
3
  }
4
4
  export const WORKGROUP_SIZE = 8;
5
5
  export class WGPUComputePass {
6
+ autoUpdateOutputBuffer = true;
6
7
  _label;
7
8
  _device;
8
9
  _outputBuffers = {};
9
10
  _pipeline;
10
11
  _bindGroups = [];
11
12
  _needsUpdatePipeline = true;
13
+ _needsResizeBuffer = true;
12
14
  _inputs = [];
13
15
  _outputs = [];
14
16
  _uniforms = [];
@@ -20,6 +22,11 @@ export class WGPUComputePass {
20
22
  _csCode = '';
21
23
  _csMain;
22
24
  _csDefine;
25
+ _groupOffsets = {
26
+ inputs: 0,
27
+ uniforms: 1,
28
+ outputs: 2
29
+ };
23
30
  constructor(label, device, opts) {
24
31
  this._label = label;
25
32
  this._device = device;
@@ -28,6 +35,7 @@ export class WGPUComputePass {
28
35
  this._inputs = opts.inputs;
29
36
  this._outputs = opts.outputs;
30
37
  this._uniforms = opts.uniforms;
38
+ this.autoUpdateOutputBuffer = opts.autoUpdateOutputBuffer ?? true;
31
39
  opts.uniforms.forEach((uniform) => {
32
40
  this._uniformBuffers[uniform.label] = device.createBuffer({
33
41
  label: this._label,
@@ -37,6 +45,11 @@ export class WGPUComputePass {
37
45
  this._device.queue.writeBuffer(this._uniformBuffers[uniform.label], 0, uniform.data);
38
46
  });
39
47
  }
48
+ setCSCode({ csDefine, csMain }) {
49
+ this._csDefine = csDefine;
50
+ this._csMain = csMain;
51
+ this._needsUpdatePipeline = true;
52
+ }
40
53
  setSize(width, height) {
41
54
  width = Math.ceil(width);
42
55
  height = Math.ceil(height);
@@ -44,7 +57,7 @@ export class WGPUComputePass {
44
57
  this._width = width;
45
58
  this._height = height;
46
59
  if (sizeChanged) {
47
- this._resizeOutputBuffers();
60
+ this._needsResizeBuffer = true;
48
61
  this._needsUpdatePipeline = true;
49
62
  }
50
63
  }
@@ -55,14 +68,29 @@ export class WGPUComputePass {
55
68
  this._execHeight = height;
56
69
  }
57
70
  setOutputParams(outputParams) {
58
- this._updateOutputBuffers(outputParams);
71
+ if (this.autoUpdateOutputBuffer) {
72
+ this._updateOutputBuffers(outputParams);
73
+ }
59
74
  this._needsUpdatePipeline = true;
60
75
  }
76
+ setOutputBuffers(outputBuffers) {
77
+ this._outputBuffers = Object.keys(outputBuffers).reduce((obj, key) => {
78
+ obj[key] = {
79
+ buffer: outputBuffers[key],
80
+ params: { channels: 4 }
81
+ };
82
+ return obj;
83
+ }, {});
84
+ }
61
85
  setUniform(label, data) {
62
86
  const buffer = this._uniformBuffers[label];
63
87
  this._device.queue.writeBuffer(buffer, 0, data);
64
88
  }
65
- getOutputBuffer(name) {
89
+ getOutput(name) {
90
+ if (this._needsResizeBuffer && this.autoUpdateOutputBuffer) {
91
+ this._resizeOutputBuffers();
92
+ this._needsResizeBuffer = false;
93
+ }
66
94
  return this._outputBuffers[name].buffer;
67
95
  }
68
96
  dispose() {
@@ -70,7 +98,7 @@ export class WGPUComputePass {
70
98
  this._uniformBuffers[key].destroy();
71
99
  });
72
100
  Object.keys(this._outputBuffers).forEach((key) => {
73
- this._outputBuffers[key].texture.destroy();
101
+ this._outputBuffers[key].buffer.destroy();
74
102
  });
75
103
  }
76
104
  _createBuffer(params) {
@@ -108,13 +136,13 @@ export class WGPUComputePass {
108
136
  }
109
137
  }
110
138
  }
111
- _updatePipeline(inputParams) {
139
+ _updatePipeline(inputParams, inputTypes) {
112
140
  if (!this._needsUpdatePipeline) {
113
141
  return;
114
142
  }
115
143
  this._needsUpdatePipeline = false;
116
144
  const device = this._device;
117
- const csCode = this._getFullCs(inputParams);
145
+ const csCode = this._getFullCs(inputParams, inputTypes);
118
146
  if (csCode === this._csCode) {
119
147
  return;
120
148
  }
@@ -132,22 +160,41 @@ export class WGPUComputePass {
132
160
  });
133
161
  this._updateBindGroups();
134
162
  }
135
- _getFullCs(inputParams) {
163
+ _getFullCs(inputParams, inputTypes) {
136
164
  const inputs = this._inputs;
137
- const hasInputs = inputs.length > 0;
165
+ const uniforms = this._uniforms;
166
+ let offset = 0;
167
+ const groupOffsets = (this._groupOffsets = {
168
+ inputs: 0,
169
+ uniforms: 0,
170
+ outputs: 0
171
+ });
172
+ if (inputs.length > 0) {
173
+ offset++;
174
+ }
175
+ if (uniforms.length > 0) {
176
+ groupOffsets.uniforms = offset;
177
+ offset++;
178
+ }
179
+ groupOffsets.outputs = offset;
138
180
  const cs = `
139
181
  ${inputs
140
182
  .sort()
141
- .map((bufferName, idx) =>
142
- // TODO more channels option.
143
- `@group(0) @binding(${idx}) var<storage, read> in_${bufferName}: array<vec${inputParams[bufferName].channels}f>;`)
183
+ .map((inputName, idx) => {
184
+ const bindingPrefix = `@group(${groupOffsets.inputs}) @binding(${idx}) `;
185
+ const varName = `in_${inputName}`;
186
+ // TODO more channels option.
187
+ return inputTypes[inputName] === 'texture'
188
+ ? `${bindingPrefix} var ${varName}: texture_2d<f32>;`
189
+ : `${bindingPrefix} var<storage, read> ${varName}: array<vec${inputParams[inputName].channels}f>;`;
190
+ })
144
191
  .join('\n')}
145
192
  ${this._uniforms
146
- .map((uniform, idx) => `@group(${hasInputs ? 1 : 0}) @binding(${idx}) var<uniform> ${uniform.label}: ${uniform.type};`)
193
+ .map((uniform, idx) => `@group(${groupOffsets.uniforms}) @binding(${idx}) var<uniform> ${uniform.label}: ${uniform.type};`)
147
194
  .join('\n')}
148
195
 
149
196
  ${this._outputs
150
- .map((name, idx) => `@group(${hasInputs ? 2 : 1}) @binding(${idx}) var<storage, read_write> out_${name}: array<vec${this._outputBuffers[name].params.channels}f>;`)
197
+ .map((name, idx) => `@group(${groupOffsets.outputs}) @binding(${idx}) var<storage, read_write> out_${name}: array<vec${this._outputBuffers[name].params.channels}f>;`)
151
198
  .join('\n')}
152
199
  ${this._csDefine ?? ''}
153
200
  @compute @workgroup_size(${WORKGROUP_SIZE}, ${WORKGROUP_SIZE}, 1)
@@ -160,12 +207,11 @@ ${this._csMain}
160
207
  _updateBindGroups() {
161
208
  const bindGroups = [];
162
209
  const device = this._device;
163
- //TODO
164
- const uniformBindGroupIndex = this._inputs.length > 0 ? 1 : 0;
210
+ const groupOffsets = this._groupOffsets;
165
211
  if (this._uniforms.length > 0) {
166
- bindGroups[uniformBindGroupIndex] = device.createBindGroup({
212
+ bindGroups[groupOffsets.uniforms] = device.createBindGroup({
167
213
  label: this._label,
168
- layout: this._pipeline.getBindGroupLayout(uniformBindGroupIndex),
214
+ layout: this._pipeline.getBindGroupLayout(groupOffsets.uniforms),
169
215
  entries: this._uniforms.map((uniform, idx) => ({
170
216
  binding: idx,
171
217
  resource: {
@@ -176,27 +222,37 @@ ${this._csMain}
176
222
  }
177
223
  this._bindGroups = bindGroups;
178
224
  }
179
- createPass(commandEncoder, inputBuffers) {
180
- this._updatePipeline(inputBuffers);
181
- const hasInputs = this._inputs.length > 0;
225
+ createPass(commandEncoder, inputs) {
226
+ if (this._needsResizeBuffer && this.autoUpdateOutputBuffer) {
227
+ this._resizeOutputBuffers();
228
+ this._needsResizeBuffer = false;
229
+ }
230
+ const inputTypes = this._inputs.reduce((obj, inputName) => {
231
+ obj[inputName] = inputs[inputName].buffer ? 'buffer' : 'texture';
232
+ return obj;
233
+ }, {});
234
+ this._updatePipeline(inputs, inputTypes);
235
+ const groupOffsets = this._groupOffsets;
182
236
  // TODO createBindGroup every time?
183
- if (hasInputs) {
184
- this._bindGroups[0] = this._device.createBindGroup({
237
+ if (this._inputs.length > 0) {
238
+ this._bindGroups[groupOffsets.inputs] = this._device.createBindGroup({
185
239
  label: this._label,
186
- layout: this._pipeline.getBindGroupLayout(0),
187
- entries: this._inputs.map((bufferName, idx) => ({
240
+ layout: this._pipeline.getBindGroupLayout(groupOffsets.inputs),
241
+ entries: this._inputs.map((inputName, idx) => ({
188
242
  binding: idx,
189
243
  // TODO
190
- resource: {
191
- buffer: inputBuffers[bufferName].buffer
192
- }
244
+ resource: inputs[inputName].buffer
245
+ ? {
246
+ buffer: inputs[inputName].buffer
247
+ }
248
+ : inputs[inputName].texture.createView()
193
249
  }))
194
250
  });
195
251
  }
196
252
  // Outputs
197
- this._bindGroups[hasInputs ? 2 : 1] = this._device.createBindGroup({
253
+ this._bindGroups[groupOffsets.outputs] = this._device.createBindGroup({
198
254
  label: this._label,
199
- layout: this._pipeline.getBindGroupLayout(hasInputs ? 2 : 1),
255
+ layout: this._pipeline.getBindGroupLayout(groupOffsets.outputs),
200
256
  entries: this._outputs.map((bufferName, idx) => ({
201
257
  binding: idx,
202
258
  resource: {
@@ -1 +1 @@
1
- {"version":3,"file":"WGPUComputePass.js","sourceRoot":"","sources":["../src/WGPUComputePass.ts"],"names":[],"mappings":"AAAA,SAAS,oBAAoB,CAC3B,MAA6B,EAC7B,KAA4B;IAE5B,OAAO,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAgBhC,MAAM,OAAO,eAAe;IAClB,MAAM,CAAC;IAEP,OAAO,CAAC;IACR,cAAc,GAMlB,EAAE,CAAC;IAEC,SAAS,CAAsB;IAC/B,WAAW,GAAmB,EAAE,CAAC;IACjC,oBAAoB,GAAG,IAAI,CAAC;IAE5B,OAAO,GAAa,EAAE,CAAC;IACvB,QAAQ,GAAa,EAAE,CAAC;IACxB,SAAS,GAAc,EAAE,CAAC;IAC1B,eAAe,GAA8B,EAAE,CAAC;IAEhD,MAAM,GAAG,EAAE,CAAC;IACZ,OAAO,GAAG,EAAE,CAAC;IAEb,UAAU,CAAU;IACpB,WAAW,CAAU;IAErB,OAAO,GAAG,EAAE,CAAC;IACb,OAAO,CAAC;IACR,SAAS,CAAC;IAElB,YACE,KAAa,EACb,MAAiB,EACjB,IAMC;QAED,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE/B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAChC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC;gBACxD,KAAK,EAAE,IAAI,CAAC,MAAM;gBAClB,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU;gBAC7B,KAAK,EAAE,cAAc,CAAC,OAAO,GAAG,cAAc,CAAC,QAAQ;aACxD,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAC5B,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,EACnC,CAAC,EACD,OAAO,CAAC,IAAI,CACb,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,KAAa,EAAE,MAAc;QACnC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,MAAM,WAAW,GAAG,KAAK,KAAK,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,IAAI,CAAC,OAAO,CAAC;QACrE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACnC,CAAC;IACH,CAAC;IAED,cAAc,CAAC,KAAa,EAAE,MAAc;QAC1C,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;IAC5B,CAAC;IAED,eAAe,CAAC,YAA8C;QAC5D,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;QACxC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;IACnC,CAAC;IAED,UAAU,CAAC,KAAa,EAAE,IAA6C;QACrE,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,eAAe,CAAC,IAAO;QACrB,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IAC1C,CAAC;IAED,OAAO;QACL,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAC/C,IAAI,CAAC,eAAuB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;QAC/C,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAC9C,IAAI,CAAC,cAAsB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,aAAa,CAAC,MAA6B;QACjD,uEAAuE;QACvE,6CAA6C;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;YAC/B,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,yCAAyC;YACzC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC;YAC9B,KAAK,EACH,cAAc,CAAC,OAAO;gBACtB,cAAc,CAAC,QAAQ;gBACvB,cAAc,CAAC,QAAQ;SAC1B,CAAC,CAAC;IACL,CAAC;IAEO,oBAAoB;QAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1C,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAChC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;YAC9C,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAEO,oBAAoB,CAC1B,YAAmD;QAEnD,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1C,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YACjC,IACE,CAAC,oBAAoB,CACnB,MAAM,EACN,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,IAAK,EAA4B,CAC5D,EACD,CAAC;gBACD,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;gBACrC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBAC1C,aAAa,CAAC,GAAG,CAAC,GAAG;oBACnB,MAAM;oBACN,MAAM;iBACP,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAEO,eAAe,CAAC,WAAiD;QACvE,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QACD,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAI,MAAM,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,qBAAqB,CAAC;YAC5C,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,MAAM,EAAE,MAAM,CAAC,kBAAkB,CAAC;oBAChC,KAAK,EAAE,IAAI,CAAC,MAAM;oBAClB,IAAI,EAAE,MAAM;iBACb,CAAC;gBACF,UAAU,EAAE,MAAM;aACnB;SACF,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAEO,UAAU,CAAC,WAAiD;QAClE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACpC,MAAM,EAAE,GAAG;EACb,MAAM;aACL,IAAI,EAAE;aACN,GAAG,CACF,CAAC,UAAU,EAAE,GAAG,EAAE,EAAE;QAClB,6BAA6B;QAC7B,sBAAsB,GAAG,2BAA2B,UAAU,cAAc,WAAW,CAAC,UAAU,CAAC,CAAC,QAAQ,KAAK,CACpH;aACA,IAAI,CAAC,IAAI,CAAC;EACX,IAAI,CAAC,SAAS;aACb,GAAG,CACF,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,CACf,UAAU,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,kBAC1C,OAAO,CAAC,KACV,KAAK,OAAO,CAAC,IAAI,GAAG,CACvB;aACA,IAAI,CAAC,IAAI,CAAC;;EAEX,IAAI,CAAC,QAAQ;aACZ,GAAG,CACF,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CACZ,UACE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAClB,cAAc,GAAG,kCAAkC,IAAI,cACrD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QACnC,KAAK,CACR;aACA,IAAI,CAAC,IAAI,CAAC;EACX,IAAI,CAAC,SAAS,IAAI,EAAE;2BACK,cAAc,KAAK,cAAc;;EAE1D,IAAI,CAAC,OAAO;;CAEb,CAAC;QAEE,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,iBAAiB;QACvB,MAAM,UAAU,GAAmB,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAE5B,MAAM;QACN,MAAM,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,UAAU,CAAC,qBAAqB,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC;gBACzD,KAAK,EAAE,IAAI,CAAC,MAAM;gBAClB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,qBAAqB,CAAC;gBAChE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CACzB,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,CACf,CAAC;oBACC,OAAO,EAAE,GAAG;oBACZ,QAAQ,EAAE;wBACR,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC;qBAC5C;iBACoB,CAAA,CAC1B;aACF,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAChC,CAAC;IAED,UAAU,CACR,cAAiC,EACjC,YAA6C;QAE7C,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QAEnC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1C,mCAAmC;QACnC,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;gBACjD,KAAK,EAAE,IAAI,CAAC,MAAM;gBAClB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBAC5C,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;oBAC9C,OAAO,EAAE,GAAG;oBACZ,OAAO;oBACP,QAAQ,EAAE;wBACR,MAAM,EAAE,YAAY,CAAC,UAAe,CAAC,CAAC,MAAM;qBAC7C;iBACF,CAAC,CAAC;aACJ,CAAC,CAAC;QACL,CAAC;QAED,UAAU;QACV,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;YACjE,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC/C,OAAO,EAAE,GAAG;gBACZ,QAAQ,EAAE;oBACR,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,MAAM;iBAC/C;aACF,CAAC,CAAC;SACJ,CAAC,CAAC;QAEH,wBAAwB;QACxB,MAAM,WAAW,GAAG,cAAc,CAAC,gBAAgB,EAAE,CAAC;QAEtD,mBAAmB;QACnB,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxC,cAAc;QACd,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE;YAC1C,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QACH,WAAW,CAAC,kBAAkB,CAC5B,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,EAC5D,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,EAC9D,CAAC,CACF,CAAC;QACF,sBAAsB;QACtB,WAAW,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC;CACF"}
1
+ {"version":3,"file":"WGPUComputePass.js","sourceRoot":"","sources":["../src/WGPUComputePass.ts"],"names":[],"mappings":"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"}
package/lib/backend.js CHANGED
@@ -33,7 +33,12 @@ export async function initWebGPUBackend() {
33
33
  catch (e) { }
34
34
  }
35
35
  export async function initWebGPUBackendWithDevice(device, adapter) {
36
- const backend = new WebGPUBackend(device, adapter);
36
+ // TODO multiple device and adapter in one backend
37
+ let backend = ENGINE.findBackend('webgpu-oidn');
38
+ if (backend != null) {
39
+ return backend;
40
+ }
41
+ backend = new WebGPUBackend(device, adapter);
37
42
  ENGINE.registerBackend('webgpu-oidn', () => backend);
38
43
  await ENGINE.setBackend('webgpu-oidn');
39
44
  return backend;
@@ -1 +1 @@
1
- {"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAE3D,OAAO,WAAW,CAAC;AAEnB,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,IAAI,CAAC;QACH,MAAM,aAAa,GAA6B;YAC9C,eAAe,EAAE,kBAAkB;SACpC,CAAC;QAEF,MAAM,OAAO,GAAG,CAAC,MAAM,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,aAAa,CAAC,CAAE,CAAC;QACrE,MAAM,gBAAgB,GAAwB,EAAE,CAAC;QAEjD,MAAM,gBAAgB,GAAG,EAAE,CAAC;QAC5B,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC5C,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,CAAC;YAC/C,gBAAgB,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAChD,CAAC;QACD,gBAAgB,CAAC,gBAAgB;YAC/B,gBAA4C,CAAC;QAE/C,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;QACrC,gBAAgB,CAAC,cAAc,GAAG;YAChC,8BAA8B,EAC5B,aAAa,CAAC,8BAA8B;YAC9C,gCAAgC,EAC9B,aAAa,CAAC,gCAAgC;YAChD,2BAA2B,EAAE,aAAa,CAAC,2BAA2B;YACtE,aAAa,EAAE,aAAa,CAAC,aAAa;YAC1C,wBAAwB,EAAE,aAAa,CAAC,wBAAwB;YAChE,iCAAiC,EAC/B,aAAa,CAAC,iCAAiC;SAClD,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAC7D,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAEvD,OAAO,2BAA2B,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,MAAiB,EACjB,OAAuB;IAEvB,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,CAAC,eAAe,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAEvC,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAE3D,OAAO,WAAW,CAAC;AAEnB,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,IAAI,CAAC;QACH,MAAM,aAAa,GAA6B;YAC9C,eAAe,EAAE,kBAAkB;SACpC,CAAC;QAEF,MAAM,OAAO,GAAG,CAAC,MAAM,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,aAAa,CAAC,CAAE,CAAC;QACrE,MAAM,gBAAgB,GAAwB,EAAE,CAAC;QAEjD,MAAM,gBAAgB,GAAG,EAAE,CAAC;QAC5B,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC5C,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,CAAC;YAC/C,gBAAgB,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAChD,CAAC;QACD,gBAAgB,CAAC,gBAAgB;YAC/B,gBAA4C,CAAC;QAE/C,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;QACrC,gBAAgB,CAAC,cAAc,GAAG;YAChC,8BAA8B,EAC5B,aAAa,CAAC,8BAA8B;YAC9C,gCAAgC,EAC9B,aAAa,CAAC,gCAAgC;YAChD,2BAA2B,EAAE,aAAa,CAAC,2BAA2B;YACtE,aAAa,EAAE,aAAa,CAAC,aAAa;YAC1C,wBAAwB,EAAE,aAAa,CAAC,wBAAwB;YAChE,iCAAiC,EAC/B,aAAa,CAAC,iCAAiC;SAClD,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAC7D,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAEvD,OAAO,2BAA2B,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,MAAiB,EACjB,OAAuB;IAEvB,kDAAkD;IAClD,IAAI,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IAChD,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACpB,OAAO,OAAwB,CAAC;IAClC,CAAC;IAED,OAAO,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7C,MAAM,CAAC,eAAe,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAEvC,OAAO,OAAwB,CAAC;AAClC,CAAC"}
package/lib/helper.d.ts CHANGED
@@ -1 +1,4 @@
1
+ import * as tfjs from '@tensorflow/tfjs-core';
1
2
  export declare function profileAndLogKernelCode(execute: () => void, disabled?: boolean): void;
3
+ export declare function memory(): tfjs.MemoryInfo;
4
+ export declare function tidy(f: () => void): void;
package/lib/helper.js CHANGED
@@ -24,4 +24,10 @@ export function profileAndLogKernelCode(execute, disabled = true) {
24
24
  console.log(code);
25
25
  });
26
26
  }
27
+ export function memory() {
28
+ return tfjs.memory();
29
+ }
30
+ export function tidy(f) {
31
+ return tfjs.tidy(f);
32
+ }
27
33
  //# sourceMappingURL=helper.js.map
package/lib/helper.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"helper.js","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAC9C,MAAM,UAAU,uBAAuB,CAAC,OAAmB,EAAE,QAAQ,GAAG,IAAI;IAC1E,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;QACV,OAAO;IACT,CAAC;IACD,IAAI;SACD,OAAO,CAAC,GAAG,EAAE;QACZ,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;QACZ,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAC5B,IAAI,GAAG,CACL,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CACvE,CACF,CAAC;QACF,SAAS,YAAY,CAAC,IAAY;YAChC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC1D,CAAC;QACD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAChC,CAAC,IAAI,EAAE,EAAE,CACP,YAAY,YAAY,CACtB,IAAI,CACL,yDAAyD,IAAI,IAAI,CACrE,CAAC;QACF,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvE,MAAM,IAAI,GAAG;IACf,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;IAErB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;GAEtB,CAAC;QACE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"helper.js","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAC9C,MAAM,UAAU,uBAAuB,CAAC,OAAmB,EAAE,QAAQ,GAAG,IAAI;IAC1E,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;QACV,OAAO;IACT,CAAC;IACD,IAAI;SACD,OAAO,CAAC,GAAG,EAAE;QACZ,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;QACZ,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAC5B,IAAI,GAAG,CACL,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CACvE,CACF,CAAC;QACF,SAAS,YAAY,CAAC,IAAY;YAChC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC1D,CAAC;QACD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAChC,CAAC,IAAI,EAAE,EAAE,CACP,YAAY,YAAY,CACtB,IAAI,CACL,yDAAyD,IAAI,IAAI,CACrE,CAAC;QACF,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvE,MAAM,IAAI,GAAG;IACf,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;IAErB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;GAEtB,CAAC;QACE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,MAAM;IACpB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,CAAa;IAChC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC"}
package/lib/process.d.ts CHANGED
@@ -22,18 +22,27 @@ export declare function hdrTransferFuncInverseCPU({ data, channels, inputScale }
22
22
  }): Float32Array;
23
23
  export declare class GPUDataProcess {
24
24
  private _device;
25
- private _inputPass;
25
+ private _isHDR;
26
+ private _inputPassAux;
27
+ private _inputPassColor;
26
28
  private _outputPass;
27
- constructor(_device: GPUDevice);
29
+ private _copyPass;
30
+ private _isInputTexture;
31
+ constructor(_device: GPUDevice, _isHDR: boolean);
32
+ private _updatePasses;
28
33
  setImageSize(w: number, h: number): void;
29
34
  setInputTile(tile: Tile): void;
30
35
  setOutputTile(dstTile: Tile, srcTile: Tile): void;
31
- forward(colorBuffer: GPUBuffer, albedoBuffer: GPUBuffer, normalBuffer: GPUBuffer): {
36
+ forward(colorBuffer: GPUBuffer | GPUTexture, albedoBuffer: GPUBuffer | GPUTexture | undefined, normalBuffer: GPUBuffer | GPUTexture | undefined, denoiseAlpha: boolean | undefined): {
32
37
  color: GPUBuffer;
33
38
  albedo: GPUBuffer;
34
39
  normal: GPUBuffer;
40
+ } | {
41
+ color: GPUBuffer;
42
+ albedo?: undefined;
43
+ normal?: undefined;
35
44
  };
36
- inverse(buffer: GPUBuffer, raw: GPUBuffer): GPUBuffer;
37
- copyInputDataToOutput(inputColorBuffer: GPUBuffer): void;
45
+ inverse(buffer: GPUBuffer, raw: GPUBuffer | GPUTexture): GPUBuffer;
46
+ copyInputDataToOutput(inputColorBuffer: GPUBuffer | GPUTexture): void;
38
47
  dispose(): void;
39
48
  }