gpujs / gpu.js

GPU Accelerated JavaScript
https://gpu.rocks
MIT License
15.08k stars 650 forks source link

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

Open morganbarrett opened 3 years ago

morganbarrett commented 3 years ago

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 commented 3 years ago

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

webshared commented 2 years ago

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