我正在为XBOX 360开发,我在一些照明计算中使用了pow()内在函数。
6 - 8年前它used to be common使用1D查找纹理来近似pow()。还有人这样做吗?
对于6岁的XBOX 360来说,是否值得尝试一下,还是不太可能提高性能?
答案 0 :(得分:3)
使用pow
instruction(或HLSL中的等效intrinsic功能。)需要3个指令槽,表示速度相当快。
我没有坐下来想出查找表的确切成本。但是你很难在更少的指令槽中找到有用的实现。显然它需要一个纹理读取(它本身不是自由的,并且它很可能是依赖纹理读取而且非常慢)。
(另外:如果查找纹理是更好的选择,那么GPU可以像它本身那样实现pow
指令。)
以前使用纹理的常见原因是着色器模型1.x中vertex或pixel shaders的pow
指令不存在。在2.x和更新的内容中,它可用(more instruction sets)。