gpujs / gpu.js

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

Getting wrong color when drawing large image #707

Open naeemy opened 3 years ago

naeemy commented 3 years ago

First of all , thank you for your great work. I've been trying to follow wobbling cat example but first I started by redrawing an image. I use nodejs and getPixels() method instead of getting a canvas. It all works fine with cat.jpg and other 1000 x 1000 images but when I use large (3634x5451) image this is what happened.

rotated

CODE

const kernel = function(image) {
      let x = this.thread.x,
          y = this.thread.y;

      const n = 4 * ( x + this.constants.w * (this.constants.h - y) );
      this.color(image[n] / 256, image[n+1] / 256, image[n+2] / 256, image[n+3] / 256)
    }

const drawImage = gpu.createKernel(kernel)
      .setConstants({ w: width, h: height})
      .setOutput([width, height])
      .setGraphical(true)

drawImage(buffer)
const pixels = drawImage.getPixels()
gpu.destroy()

// write image file with returned pixels

Running on

Original image It should just redraw the same image.

car

Importance : 3

oubenruing commented 2 years ago

I have the same problem and it seems that the color exceptions start from the image pixel index greater than 2048*2048.

thesunfei commented 2 years ago

I have the same problem too so I have to reduce the size of the image.