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);
}
奇妙なことに、これは本来あるべき状態よりもわずかに左側にぼかしを描いています。しかし、その 3 行目を次のように置き換えます。
uint j = i * sign(i);
そして今、期待どおりに機能しています。私は壊れましたabs()
か?本当にドライバーのバグを見つけたのでしょうか?