gpu.js/test/features/read-image-bitmap.js

50 lines
1.6 KiB
JavaScript

const { assert, skip, test, module: describe } = require('qunit');
const { GPU } = require('../../src');
describe('features: read from image bitmap');
function readImageBitmap(mode, done) {
const gpu = new GPU({ mode });
const image = new Image();
image.src = 'jellyfish.jpeg';
const kernel = gpu.createKernel(function(image) {
const pixel = image[this.thread.y][this.thread.x];
return pixel[0] + pixel[1] + pixel[2] + pixel[3];
}, {
output: [1]
});
image.onload = async function() {
const imageBitmapPromise = createImageBitmap(image, 0, 0, 1, 1);
const imageBitmap = await imageBitmapPromise;
const result = kernel(imageBitmap);
assert.equal(result.length, 1);
assert.equal(result[0].toFixed(2), 3.22);
await gpu.destroy();
done();
};
}
(typeof Image !== 'undefined' ? test : skip)('readImageBitmap auto', (assert) => {
readImageBitmap(null, assert.async());
});
(typeof Image !== 'undefined' ? test : skip)('readImageBitmap gpu', (assert) => {
readImageBitmap('gpu', assert.async());
});
(GPU.isWebGLSupported && typeof Image !== 'undefined' ? test : skip)('readImageBitmap webgl', (assert) => {
readImageBitmap('webgl', assert.async());
});
(GPU.isWebGL2Supported && typeof Image !== 'undefined' ? test : skip)('readImageBitmap webgl2', (assert) => {
readImageBitmap('webgl2', assert.async());
});
(GPU.isHeadlessGLSupported && typeof Image !== 'undefined' ? test : skip)('readImageBitmap headlessgl', (assert) => {
readImageBitmap('headlessgl', assert.async());
});
(typeof Image !== 'undefined' ? test : skip)('readImageBitmap cpu', (assert) => {
readImageBitmap('cpu', assert.async());
});