mirror of
https://github.com/gpujs/gpu.js.git
synced 2025-12-08 20:35:56 +00:00
50 lines
1.6 KiB
JavaScript
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());
|
|
});
|