8
我正在GLSL中製作高斯模糊着色器。由於卷積核是對稱的,因此我存儲了其中的一半。我寫道:GLSL abs()損壞?
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()
?我真的發現驅動程序錯誤嗎?
什麼是您的GL_VERSION和GL_SHADING_LANGUAGE_VERSION? – Matthias
uint j = uint(abs(i));'工作嗎? – Matthias
你的建議不適合我。我的源文件頂部有#version 420。 glxinfo通過Cg編譯器顯示「4.2.0 NVIDIA 304.64」和「4.20 NVIDIA」。 – dupersuper