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