javascript - 为什么这个基本的像素艺术着色器会导致孤立像素?(JS中GPU加速最近邻插值)
问题描述
我有一个非常基本的着色器,它采用典型的颜色通道缓冲区,例如:
[r, g, b, a, r, g, b, a, ...]
它使用GPU.js库对当前索引执行矩阵运算this.thread.x
并this.thread.y
表示当前索引,如下所示:
并拍摄这样的图像:
并返回如下结果:
这基本上只是最近邻插值与放大。但正如您在这些结果的底部看到的那样,一些像素被分散到图像周围的非预期位置,在这种情况下都在底部。
export default function(inputBuffer, width, height, scale) {
var bufferWidth = width * 4;
var subX = Math.floor(this.thread.x / scale);
var subY = height - Math.floor(this.thread.y / scale);
var subIndex = subX * 4 + subY * width * 4;
var rIndex = subIndex;
var gIndex = subIndex + 1;
var bIndex = subIndex + 2;
var rRaw = inputBuffer[rIndex];
var gRaw = inputBuffer[gIndex];
var bRaw = inputBuffer[bIndex];
this.color(rRaw / 255, gRaw / 255, bRaw / 255);
}
源缓冲区不包含这些工件。我的代码有什么问题导致这种情况?
解决方案
推荐阅读
- javascript - 如何计算所有上传文件的总大小
- php - 按多个字段对多维数组进行排序
- python - 无法获得正确的代码输出?
- corda - 针对非发布分支构建 CorDapps
- dc.js - 无法让 rowCharts 与复合图表一起使用 - 特别是用于比较选定和未选定覆盖图的示例
- events - 无法单击按钮(.click),因为没有 click() 事件侦听器
- powerquery - 计算多个文本字符串的出现次数
- openvpn - 在 MFA 中添加 Google 身份验证后 Openvpn 身份验证失败
- node.js - 使用 vimeo 上传视频
- java - ObjectMapper 在尝试使用空字段构造实例时抛出 JsonMappingException