gpu.js/test/features/combine-kernels.js
Robert Plummer b2df0ab604 fix #316
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
2018-06-12 14:07:41 -04:00

47 lines
1.7 KiB
JavaScript

(function() {
function combineKernels(mode) {
var gpu = new GPU({ mode: mode });
var kernel1 = gpu.createKernel(function(a, b) {
return a[this.thread.x] + b[this.thread.x];
}, { output: [5] });
var kernel2 = gpu.createKernel(function(c, d) {
return c[this.thread.x] * d[this.thread.x];
}, { output: [5] });
return gpu.combineKernels(kernel1, kernel2, function(array1, array2, array3) {
return kernel2(kernel1(array1, array2), array3);
});
}
QUnit.test( "combineKernels (auto)", function() {
var superKernel = combineKernels(null);
var result = QUnit.extend([], superKernel([1,2,3,4,5], [1,2,3,4,5], [1,2,3,4,5]));
QUnit.assert.deepEqual(result, [2, 8, 18, 32, 50]);
});
QUnit.test( "combineKernels (gpu)", function() {
var superKernel = combineKernels('webgl');
var result = QUnit.extend([], superKernel([1,2,3,4,5], [1,2,3,4,5], [1,2,3,4,5]));
QUnit.assert.deepEqual(result, [2, 8, 18, 32, 50]);
});
QUnit.test( "combineKernels (webgl)", function() {
var superKernel = combineKernels('webgl');
var result = QUnit.extend([], superKernel([1,2,3,4,5], [1,2,3,4,5], [1,2,3,4,5]));
QUnit.assert.deepEqual(result, [2, 8, 18, 32, 50]);
});
QUnit.test( "combineKernels (webgl2)", function() {
var superKernel = combineKernels('webgl2');
var result = QUnit.extend([], superKernel([1,2,3,4,5], [1,2,3,4,5], [1,2,3,4,5]));
QUnit.assert.deepEqual(result, [2, 8, 18, 32, 50]);
});
QUnit.test( "combineKernels (cpu)", function() {
var superKernel = combineKernels('cpu');
var result = QUnit.extend([], superKernel([1,2,3,4,5], [1,2,3,4,5], [1,2,3,4,5]));
QUnit.assert.deepEqual(result, [2, 8, 18, 32, 50]);
});
})();