mirror of
https://github.com/gpujs/gpu.js.git
synced 2025-12-08 20:35:56 +00:00
197 lines
5.0 KiB
JavaScript
197 lines
5.0 KiB
JavaScript
const { assert, skip, test, module: describe } = require('qunit');
|
|
const { GPU } = require('../../src');
|
|
|
|
describe('issue #473 - only 4 pixels are shown');
|
|
|
|
function testOnly4PixelsAreShownRGBStaticOutput(mode) {
|
|
const gpu = new GPU({ mode });
|
|
const render = gpu.createKernel(
|
|
function() {
|
|
this.color(1, 1, 1);
|
|
},
|
|
{
|
|
output: [20, 20],
|
|
graphical: true,
|
|
}
|
|
);
|
|
|
|
render();
|
|
|
|
const pixels = render.getPixels();
|
|
assert.equal(pixels.length, 20 * 20 * 4);
|
|
assert.equal(pixels.filter(v => v === 255).length, 20 * 20 * 4);
|
|
gpu.destroy();
|
|
}
|
|
|
|
test('RGB static output auto', () => {
|
|
testOnly4PixelsAreShownRGBStaticOutput();
|
|
});
|
|
|
|
test('RGB static output gpu', () => {
|
|
testOnly4PixelsAreShownRGBStaticOutput('gpu');
|
|
});
|
|
|
|
(GPU.isWebGLSupported ? test : skip)('RGB static output webgl', () => {
|
|
testOnly4PixelsAreShownRGBStaticOutput('webgl');
|
|
});
|
|
|
|
(GPU.isWebGL2Supported ? test : skip)('RGB static output webgl2', () => {
|
|
testOnly4PixelsAreShownRGBStaticOutput('webgl2');
|
|
});
|
|
|
|
(GPU.isHeadlessGLSupported ? test : skip)('RGB static output headlessgl', () => {
|
|
testOnly4PixelsAreShownRGBStaticOutput('headlessgl');
|
|
});
|
|
|
|
(GPU.isCanvasSupported ? test : skip)('RGB static output cpu', () => {
|
|
testOnly4PixelsAreShownRGBStaticOutput('cpu');
|
|
});
|
|
|
|
function testOnly4PixelsAreShownRGBAStaticOutput(mode) {
|
|
const gpu = new GPU({ mode });
|
|
const render = gpu.createKernel(
|
|
function() {
|
|
this.color(1, 1, 1, 1);
|
|
},
|
|
{
|
|
output: [20, 20],
|
|
graphical: true,
|
|
}
|
|
);
|
|
|
|
render();
|
|
|
|
const pixels = render.getPixels();
|
|
assert.equal(pixels.length, 20 * 20 * 4);
|
|
assert.equal(pixels.filter(v => v === 255).length, 20 * 20 * 4);
|
|
gpu.destroy();
|
|
}
|
|
|
|
test('RGBA static output auto', () => {
|
|
testOnly4PixelsAreShownRGBAStaticOutput();
|
|
});
|
|
|
|
test('RGBA static output gpu', () => {
|
|
testOnly4PixelsAreShownRGBAStaticOutput('gpu');
|
|
});
|
|
|
|
(GPU.isWebGLSupported ? test : skip)('RGBA static output webgl', () => {
|
|
testOnly4PixelsAreShownRGBAStaticOutput('webgl');
|
|
});
|
|
|
|
(GPU.isWebGL2Supported ? test : skip)('RGBA static output webgl2', () => {
|
|
testOnly4PixelsAreShownRGBAStaticOutput('webgl2');
|
|
});
|
|
|
|
(GPU.isHeadlessGLSupported ? test : skip)('RGBA static output headlessgl', () => {
|
|
testOnly4PixelsAreShownRGBAStaticOutput('headlessgl');
|
|
});
|
|
|
|
(GPU.isCanvasSupported ? test : skip)('RGBA static output cpu', () => {
|
|
testOnly4PixelsAreShownRGBAStaticOutput('cpu');
|
|
});
|
|
|
|
function testOnly4PixelsAreShownRGBDynamicOutput(mode) {
|
|
const gpu = new GPU({ mode });
|
|
const render = gpu.createKernel(
|
|
function() {
|
|
this.color(1, 1, 1);
|
|
},
|
|
{
|
|
output: [20, 20],
|
|
graphical: true,
|
|
dynamicOutput: true,
|
|
}
|
|
);
|
|
|
|
render();
|
|
|
|
const pixels = render.getPixels();
|
|
assert.equal(pixels.length, 20 * 20 * 4);
|
|
assert.equal(pixels.filter(v => v === 255).length, 20 * 20 * 4);
|
|
|
|
render.setOutput([10, 10]);
|
|
render();
|
|
|
|
const pixels2 = render.getPixels();
|
|
assert.equal(pixels2.length, 10 * 10 * 4);
|
|
assert.equal(pixels2.filter(v => v === 255).length, 10 * 10 * 4);
|
|
gpu.destroy();
|
|
}
|
|
|
|
test('rgb dynamic output auto', () => {
|
|
testOnly4PixelsAreShownRGBDynamicOutput();
|
|
});
|
|
|
|
test('rgb dynamic output gpu', () => {
|
|
testOnly4PixelsAreShownRGBDynamicOutput('gpu');
|
|
});
|
|
|
|
(GPU.isWebGLSupported ? test : skip)('rgb dynamic output webgl', () => {
|
|
testOnly4PixelsAreShownRGBDynamicOutput('webgl');
|
|
});
|
|
|
|
(GPU.isWebGL2Supported ? test : skip)('rgb dynamic output webgl2', () => {
|
|
testOnly4PixelsAreShownRGBDynamicOutput('webgl2');
|
|
});
|
|
|
|
(GPU.isHeadlessGLSupported ? test : skip)('rgb dynamic output headlessgl', () => {
|
|
testOnly4PixelsAreShownRGBDynamicOutput('headlessgl');
|
|
});
|
|
|
|
(GPU.isCanvasSupported ? test : skip)('rgb dynamic output cpu', () => {
|
|
testOnly4PixelsAreShownRGBDynamicOutput('cpu');
|
|
});
|
|
|
|
function testOnly4PixelsAreShownRGBADynamicOutput(mode) {
|
|
const gpu = new GPU({ mode });
|
|
const render = gpu.createKernel(
|
|
function() {
|
|
this.color(1, 1, 1, 1);
|
|
},
|
|
{
|
|
output: [20, 20],
|
|
graphical: true,
|
|
dynamicOutput: true,
|
|
}
|
|
);
|
|
|
|
render();
|
|
|
|
const pixels = render.getPixels();
|
|
assert.equal(pixels.length, 20 * 20 * 4);
|
|
assert.equal(pixels.filter(v => v === 255).length, 20 * 20 * 4);
|
|
|
|
render.setOutput([10, 10]);
|
|
render();
|
|
|
|
const pixels2 = render.getPixels();
|
|
assert.equal(pixels2.length, 10 * 10 * 4);
|
|
assert.equal(pixels2.filter(v => v === 255).length, 10 * 10 * 4);
|
|
gpu.destroy();
|
|
}
|
|
|
|
test('rgba dynamic output auto', () => {
|
|
testOnly4PixelsAreShownRGBADynamicOutput();
|
|
});
|
|
|
|
test('rgba dynamic output gpu', () => {
|
|
testOnly4PixelsAreShownRGBADynamicOutput('gpu');
|
|
});
|
|
|
|
(GPU.isWebGLSupported ? test : skip)('rgba dynamic output webgl', () => {
|
|
testOnly4PixelsAreShownRGBADynamicOutput('webgl');
|
|
});
|
|
|
|
(GPU.isWebGL2Supported ? test : skip)('rgba dynamic output webgl2', () => {
|
|
testOnly4PixelsAreShownRGBADynamicOutput('webgl2');
|
|
});
|
|
|
|
(GPU.isHeadlessGLSupported ? test : skip)('rgba dynamic output headlessgl', () => {
|
|
testOnly4PixelsAreShownRGBADynamicOutput('headlessgl');
|
|
});
|
|
|
|
(GPU.isCanvasSupported ? test : skip)('rgba dynamic output cpu', () => {
|
|
testOnly4PixelsAreShownRGBADynamicOutput('cpu');
|
|
});
|