GPGPUで整数計算(5)

整数の演算

intの演算はどうなのだろうか。


uniform samplerRECT texUnit0;

void main(void) {
vec4 color = texRECT(texUnit0, gl_FragCoord.xy);
ivec4 icolor = ivec4(color);
icolor /= 3;
gl_FragColor = vec4(icolor);
}

これを実行すると、


0.000000
0.000000
0.000000
1.000000
1.000000
1.000000
2.000000
2.000000
2.000000
3.000000

となった。
ふつうにintの計算になっている。
ほかにも、整数用の演算やビット演算の結果もCのintと一致する。


icolor %= 3;
icolor--;
icolor <<= 3;
icolor &= 3;
icolor ^= 3;
icolor = ~icolor;