我正在 GLSL 中制作高斯模糊着色器。由于卷积核是对称的,我存储了一半。我写的:
vec3 glow = vec3(0.0);
for (int i = -WIDTH; i <= WIDTH; i++) {
uint j = abs(i);
glow += kernel[j] + texelFetch(u_glowTexture, coord + ivec2(i, 0), 0);
}
奇怪的是,这将模糊画到它应该是的左侧。但后来我将第三行替换为:
uint j = i * sign(i);
现在它像我预期的那样工作。我坏了abs()
吗?我真的发现了驱动程序错误吗?