这个gpu操作的算法?

时间:2018-05-18 07:23:19

标签: javascript algorithm gpu.js

我正在使用一个允许在GPU上计算大型矩阵运算的库gpu.js。我正在努力做的并不是很难我不会想,但我似乎无法开始为它找出算法。基本上我有一个存储为r,g,b的数组缓冲区,每个像素重复一次,因此4x4图像将是64个值的数组。

我想输出比输入大X倍的图像,但是使用“最近邻”计算,所以每个像素只是2x2平方或3x3等。

所以操作设置如下(注意gpu.js需要数组作为输入)并记住它在整个大小输出上进行迭代,所以我必须找到较小的{{1}中存在的正确坐标基于sourceBuffer中的当前索引(索引由lib公开为outputBuffer)。

this.thread.x

这是我尝试过的,但现在奇怪的是只输出屏幕的当前宽度作为每个条目的值。

这个算法的正确算法是什么?通常我习惯用循环遍历源代码来做这种事情,但在这种情况下,我必须在1维数组中单独处理每个像素rgba值,我对如何做到这一点感到困惑。 / p>

显然,我需要尽可能少地进行操作。

1 个答案:

答案 0 :(得分:1)

如果存储项目行或列专业,则取决于某种程度。假设你做了专业。

每一行看起来都是r1 g2 b1 a1 r2 g2 b2 a2 ....,然后是下一行,依此类推。你需要知道图像的大小(至少每行有多大),我会称之为N.所以从行x列y得到的组件c需要value_pos = x * (N * 4) + y * 4 + c。这里的一切都是0索引。您可以使用读取和写入的值,只需在两者之间更新N,因为它们应该具有不同的大小。