Graphical output canvas is affected by a separate kernel
- Lenguaje dominante
- JavaScript
- Estrellas
- 15.5k
- Forks
- 663
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción

## *What* is wrong?
It seems as if one kernel's output size can affect the size of a canvas created by another. This means that the canvas created by a kernel is larger than should be expected.
## *Where* does it happen?
GPU.js running in browser in Chrome on a Mac (WebGL2 enabled)
## *How* do we replicate the issue?
```javascript
const gpu = new GPU();
const img_width = 64;
const img_height = 64;
const imgKernel = gpu
.createKernel(function (_image) {
const pixel = _image[this.thread.y][this.thread.x];
return pixel[0];
})
.setOutput([img_width, img_height]);
const renderKernel = gpu
.createKernel(function () {
this.color(1, 0, 0, 1);
})
.setGraphical(true)
.setOutput([32, 32]);
const image = document.createElement("img");
image.src = "./test.png";
image.onload = () => {
console.log("image width x height", image.naturalWidth, image.naturalHeight);
const imgOut = imgKernel(image); // This is not used just run
document.body.appendChild(renderKernel.canvas);
renderKernel();
};
```
The output looks like this:

You can see that the canvas is 64x64 pixels, the size of the `imgKernel` but the red section is 32x32 inside that which is the output of `renderKernel` despite the two having no relationship other than both of them are called.
## *How* important is this (1-5)?
*5* This is a pretty limiting bug if you want to use multiple kernels.
## Expected behavior (i.e. solution)
Should show a 32x32 red canvas as far as I can tell.
## Other Comments
Thank you for your time looking at this.
Guía de contribución
Evaluación
Este issue todavía no se ha evaluado.