mirror of
https://github.com/gpujs/gpu.js.git
synced 2025-12-08 20:35:56 +00:00
feat: Upgrade gpu-mock.js fix: Typescript `Texture` definition fix: Typescript JSON definition fix: Some internal documentation fix: Some removal of unused or duplicate code
79 lines
2.5 KiB
JavaScript
79 lines
2.5 KiB
JavaScript
const { assert, test, module: describe, only, skip } = require('qunit');
|
|
const { GPU } = require('../../src');
|
|
|
|
describe('internal: different texture cloning');
|
|
|
|
function testArrayThenArray1D4(mode) {
|
|
const gpu = new GPU({ mode });
|
|
function createTextureOf(value, type) {
|
|
return (gpu.createKernel(function(value) {
|
|
return value[this.thread.x];
|
|
}, {
|
|
output: [1],
|
|
pipeline: true,
|
|
argumentTypes: { value: type }
|
|
}))(value);
|
|
}
|
|
const arrayTexture = createTextureOf([1], 'Array');
|
|
const arrayTextureClone = arrayTexture.clone();
|
|
const array4Texture = createTextureOf([[1,2,3,4]], 'Array1D(4)');
|
|
const array4TextureClone = array4Texture.clone();
|
|
assert.notEqual(arrayTextureClone, array4TextureClone);
|
|
assert.deepEqual(arrayTextureClone.toArray(), new Float32Array([1]));
|
|
assert.deepEqual(array4TextureClone.toArray(), [new Float32Array([1,2,3,4])]);
|
|
gpu.destroy();
|
|
}
|
|
|
|
test('Array then Array1D(4) auto', () => {
|
|
testArrayThenArray1D4();
|
|
});
|
|
|
|
(GPU.isWebGLSupported ? test : skip)('Array then Array1D(4) webgl', () => {
|
|
testArrayThenArray1D4('webgl');
|
|
});
|
|
|
|
(GPU.isWebGL2Supported ? test : skip)('Array then Array1D(4) webgl2', () => {
|
|
testArrayThenArray1D4('webgl2');
|
|
});
|
|
|
|
(GPU.isHeadlessGLSupported ? test : skip)('Array then Array1D(4) headlessgl', () => {
|
|
testArrayThenArray1D4('headlessgl');
|
|
});
|
|
|
|
function testArray1D4ThenArray(mode) {
|
|
const gpu = new GPU({ mode });
|
|
function createTextureOf(value, type) {
|
|
return (gpu.createKernel(function(value) {
|
|
return value[this.thread.x];
|
|
}, {
|
|
output: [1],
|
|
pipeline: true,
|
|
argumentTypes: { value: type }
|
|
}))(value);
|
|
}
|
|
const array4Texture = createTextureOf([[1,2,3,4]], 'Array1D(4)');
|
|
const array4TextureClone = array4Texture.clone();
|
|
const arrayTexture = createTextureOf([1], 'Array');
|
|
const arrayTextureClone = arrayTexture.clone();
|
|
assert.notEqual(array4TextureClone, arrayTextureClone);
|
|
assert.deepEqual(array4TextureClone.toArray(), [new Float32Array([1,2,3,4])]);
|
|
assert.deepEqual(arrayTextureClone.toArray(), new Float32Array([1]));
|
|
gpu.destroy();
|
|
}
|
|
|
|
test('Array1D(4) then Array auto', () => {
|
|
testArray1D4ThenArray();
|
|
});
|
|
|
|
(GPU.isWebGLSupported ? test : skip)('Array1D(4) then Array webgl', () => {
|
|
testArray1D4ThenArray('webgl');
|
|
});
|
|
|
|
(GPU.isWebGL2Supported ? test : skip)('Array1D(4) then Array webgl2', () => {
|
|
testArray1D4ThenArray('webgl2');
|
|
});
|
|
|
|
(GPU.isHeadlessGLSupported ? test : skip)('Array1D(4) then Array headlessgl', () => {
|
|
testArray1D4ThenArray('headlessgl');
|
|
});
|