sharedGraphicalKernel = (gpu, algo, options) => {
Object.assign(options, { dynamicArguments: true, graphical: true });
const kernel = gpu.createKernel(algo, options);
const canvas = kernel.canvas;
let lastArgs;
return container => (...args) => {
if (canvas.parentNode != container) {
if (canvas.parentNode) {
kernel(...lastArgs);
canvas.replaceWith(cloneCanvas(canvas));
}
container.firstChild && container.firstChild.remove();
container.append(canvas);
}
kernel(...(lastArgs = args));
};
}