gpujs / gpujs/gpu.js

Getting wrong color when drawing large image

Open
#707 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
JavaScript
Stars
15.5k
Forks
663
PR merge metrics
No merged PRs in 30d

Description

First of all , thank you for your great work.
I've been trying to follow [wobbling cat](https://observablehq.com/@fil/image-to-gpu) 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](https://user-images.githubusercontent.com/6382447/127479252-b584a6aa-ef0c-4a23-b860-c67f2f95b9f3.jpeg)

**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**

- NodeJS : 14.17.3
- gpu.js : 2.11.3
- jpeg-js : 0.4.3
- AMD Radeon Pro 5300M

**Original image**
It should just redraw the same image.

![car](https://user-images.githubusercontent.com/6382447/127481060-3d502e8a-052a-4c69-ae70-3986c492c133.jpeg)

Importance : 3

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.