gpu.js icon indicating copy to clipboard operation
gpu.js copied to clipboard

Graphical output has "padded" data when pipelining in a non matching texture size

Open morganbarrett opened this issue 4 years ago • 2 comments

A GIF or MEME to give some spice of the internet

What is wrong?

When pipelining in another kernel with a different size to the kernel that is marked graphical, the canvas becomes bigger by the same factor.

Where does it happen?

In the browser.

How do we replicate the issue?

https://codesandbox.io/s/lucid-wilson-5eb3d

let kernalA = gpu.createKernel(
  function () {
    return this.thread.x / 100;
  },
  {
    output: [100, 100, 10],
    pipeline: true
  }
);

let kernalB = gpu.createKernel(
  function (pars) {
    this.color(pars[0][this.thread.y][this.thread.x], 0, 0);
  },
  {
    output: [100, 100],
    graphical: true
  }
);

kernalB(kernalA());

How important is this (1-5)?

6(9)

Expected behavior (i.e. solution)

The dimensions of the canvas should match the output of the kernel marked as graphical.

Other Comments

morganbarrett avatar Aug 07 '21 14:08 morganbarrett

A workaround for now seems to be: https://codesandbox.io/s/sweet-darwin-ojh3o?file=/src/index.js

morganbarrett avatar Aug 07 '21 16:08 morganbarrett

The same happens for me when outputs shapes are different, even if kernel results are not connected. output: [100, 100, 10], output: [100, 100],

webshared avatar Sep 17 '21 21:09 webshared