最近のほとんどのGPUは、浮動小数点向けに設計されていますが、最近では整数パフォーマンスでほぼ同等であり、融合型乗算加算がないなどのいくつかの注意点があります。これがシフト操作にどのように適用されるかはわかりません。私はGPUでマーチングキューブを実行しています。最初に各サーフェスキューブの32ビットのパックされた位置を書き出し、次にこれらを次のようにそのキューブの実際の頂点へのパスでアンパックします。
ivec3 unpackedPos = ivec3( packedPos >> 20 & 0x3FF,
packedPos >> 10 & 0x3FF,
packedPos & 0x3FF);
最近、シェーダーユニットにバレルシフターが搭載されているのではないかと思いました。ここで2シフトまたは30シフトしていますか?
編集>>私はばかです...知っておくと便利な回答の人たちに感謝しますが、私はこれについてすべて間違っています。RGB10_A2UIテクスチャ形式を使用してから、ビットシフトをいじるのではなく、単一のイメージのロード/ストア命令でパック/アンパックする必要があります。
RE_EDIT >>かどうか...この方法は明らかに赤いボックスでは機能しますが、緑色のボックスでは機能しないため、ビットシフトに戻ります。
24ビット・シフタは、コンパイラは、いくつかが発生する場合がありますので、整列仮数の単精度浮動小数点で使用されているが、私はあなたが30参照してくださいよとは思わない
—
ダニエル・M Gessel