我知道大多数现代GPU,虽然是为浮点设计的,但现在在整数性能上或多或少是等价的,但有几个注意事项,比如缺少融合乘法加法。不过,我不知道这如何适用于移位操作。我在GPU上做移动立方体,最初为每个表面立方体写出一个32位的填充位置,然后在稍后传递到该立方体中的实际顶点时解压这些数据,如下所示:
ivec3 unpackedPos = ivec3( packedPos >> 20 & 0x3FF,
packedPos >> 10 & 0x3FF,
packedPos & 0x3FF);我只是想知道,这些天着色器中是否有桶形变形装置?我在这里轮班2班还是30班?
EDIT>>我是个白痴..。谢谢你的回答,伙计们,知道这些很有用,但我一直都搞错了。我应该使用RGB10_A2UI纹理格式,然后用单个图像加载/存储指令打包/解压,而不是自己乱搞比特转移。
RE_EDIT>>或不..。这种方法显然适用于红色的盒子,而不是绿色的盒子,所以它又回到了位移位。
发布于 2016-03-04 20:43:42
是的(在nVIDIA Maxwell上有50%的FMA 32b吞吐量)。
请参阅https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#arithmetic-instructions
https://computergraphics.stackexchange.com/questions/2133
复制相似问题