mirror of
https://github.com/gpujs/gpu.js.git
synced 2026-01-18 16:04:10 +00:00
Change `HTMLImageArray` render strategy to `gl.NEAREST`, like all the others Let `WebGL2FunctionNode` extend `WebGLFunctionNode` and lighten Remove all the different html pages associated with tests, and just use one file to handle them and use qunit for filtering them Bump version number
155 lines
4.0 KiB
JavaScript
155 lines
4.0 KiB
JavaScript
QUnit.test('Issue #233 - kernel map with float output (GPU only) (auto)', function() {
|
|
var lst = [1, 2, 3, 4, 5, 6, 7];
|
|
|
|
var gpu = new GPU({ mode: null });
|
|
|
|
var kernels = gpu.createKernelMap({
|
|
stepA: function (x) {
|
|
return x * x;
|
|
},
|
|
stepB: function (x) {
|
|
return x + 1;
|
|
}
|
|
}, function (lst) {
|
|
var val = lst[this.thread.x];
|
|
|
|
stepA(val);
|
|
stepB(val);
|
|
|
|
return val;
|
|
})
|
|
.setFloatOutput(true)
|
|
.setOutput([lst.length]);
|
|
|
|
var result = kernels(lst);
|
|
|
|
var unwrap = gpu.createKernel(function(x) {
|
|
return x[this.thread.x];
|
|
})
|
|
.setFloatTextures(true)
|
|
.setOutput([lst.length]);
|
|
|
|
var stepAResult = unwrap(result.stepA);
|
|
var stepBResult = unwrap(result.stepB);
|
|
|
|
QUnit.assert.deepEqual(QUnit.extend([], stepAResult), lst.map(function (x) { return x * x }));
|
|
QUnit.assert.deepEqual(QUnit.extend([], stepBResult), lst.map(function (x) { return x + 1 }));
|
|
QUnit.assert.deepEqual(QUnit.extend([], result.result), lst);
|
|
});
|
|
|
|
QUnit.test('Issue #233 - kernel map with float output (GPU only) (gpu)', function() {
|
|
var lst = [1, 2, 3, 4, 5, 6, 7];
|
|
|
|
var gpu = new GPU({ mode: 'gpu' });
|
|
|
|
var kernels = gpu.createKernelMap({
|
|
stepA: function (x) {
|
|
return x * x;
|
|
},
|
|
stepB: function (x) {
|
|
return x + 1;
|
|
}
|
|
}, function (lst) {
|
|
var val = lst[this.thread.x];
|
|
|
|
stepA(val);
|
|
stepB(val);
|
|
|
|
return val;
|
|
})
|
|
.setFloatOutput(true)
|
|
.setOutput([lst.length]);
|
|
|
|
var result = kernels(lst);
|
|
|
|
var unwrap = gpu.createKernel(function(x) {
|
|
return x[this.thread.x];
|
|
})
|
|
.setFloatTextures(true)
|
|
.setOutput([lst.length]);
|
|
|
|
var stepAResult = unwrap(result.stepA);
|
|
var stepBResult = unwrap(result.stepB);
|
|
|
|
QUnit.assert.deepEqual(QUnit.extend([], stepAResult), lst.map(function (x) { return x * x }));
|
|
QUnit.assert.deepEqual(QUnit.extend([], stepBResult), lst.map(function (x) { return x + 1 }));
|
|
QUnit.assert.deepEqual(QUnit.extend([], result.result), lst);
|
|
});
|
|
|
|
QUnit.test('Issue #233 - kernel map with float output (GPU only) (webgl)', function() {
|
|
var lst = [1, 2, 3, 4, 5, 6, 7];
|
|
|
|
var gpu = new GPU({ mode: 'webgl' });
|
|
|
|
var kernels = gpu.createKernelMap({
|
|
stepA: function (x) {
|
|
return x * x;
|
|
},
|
|
stepB: function (x) {
|
|
return x + 1;
|
|
}
|
|
}, function (lst) {
|
|
var val = lst[this.thread.x];
|
|
|
|
stepA(val);
|
|
stepB(val);
|
|
|
|
return val;
|
|
})
|
|
.setFloatOutput(true)
|
|
.setOutput([lst.length]);
|
|
|
|
var result = kernels(lst);
|
|
|
|
var unwrap = gpu.createKernel(function(x) {
|
|
return x[this.thread.x];
|
|
})
|
|
.setFloatTextures(true)
|
|
.setOutput([lst.length]);
|
|
|
|
var stepAResult = unwrap(result.stepA);
|
|
var stepBResult = unwrap(result.stepB);
|
|
|
|
QUnit.assert.deepEqual(QUnit.extend([], stepAResult), lst.map(function (x) { return x * x }));
|
|
QUnit.assert.deepEqual(QUnit.extend([], stepBResult), lst.map(function (x) { return x + 1 }));
|
|
QUnit.assert.deepEqual(QUnit.extend([], result.result), lst);
|
|
});
|
|
|
|
QUnit.test('Issue #233 - kernel map with float output (GPU only) (webgl2)', function() {
|
|
var lst = [1, 2, 3, 4, 5, 6, 7];
|
|
|
|
var gpu = new GPU({ mode: 'webgl2' });
|
|
|
|
var kernels = gpu.createKernelMap({
|
|
stepA: function (x) {
|
|
return x * x;
|
|
},
|
|
stepB: function (x) {
|
|
return x + 1;
|
|
}
|
|
}, function (lst) {
|
|
var val = lst[this.thread.x];
|
|
|
|
stepA(val);
|
|
stepB(val);
|
|
|
|
return val;
|
|
})
|
|
.setFloatOutput(true)
|
|
.setOutput([lst.length]);
|
|
|
|
var result = kernels(lst);
|
|
|
|
var unwrap = gpu.createKernel(function(x) {
|
|
return x[this.thread.x];
|
|
})
|
|
.setFloatTextures(true)
|
|
.setOutput([lst.length]);
|
|
|
|
var stepAResult = unwrap(result.stepA);
|
|
var stepBResult = unwrap(result.stepB);
|
|
|
|
QUnit.assert.deepEqual(QUnit.extend([], stepAResult), lst.map(function (x) { return x * x }));
|
|
QUnit.assert.deepEqual(QUnit.extend([], stepBResult), lst.map(function (x) { return x + 1 }));
|
|
QUnit.assert.deepEqual(QUnit.extend([], result.result), lst);
|
|
}); |