着色器中的Pow功能与查找纹理

时间:2011-04-27 13:26:54

标签: shader hlsl lookup-tables xbox360

我正在为XBOX 360开发,我在一些照明计算中使用了pow()内在函数。

6 - 8年前它used to be common使用1D查找纹理来近似pow()。还有人这样做吗?

对于6岁的XBOX 360来说,是否值得尝试一下,还是不太可能提高性能?

1 个答案:

答案 0 :(得分:3)

使用pow instruction(或HLSL中的等效intrinsic功能。)需要3个指令槽,表示速度相当快。

我没有坐下来想出查找表的确切成本。但是你很难在更少的指令槽中找到有用的实现。显然它需要一个纹理读取(它本身不是自由的,并且它很可能是依赖纹理读取而且非常慢)。

(另外:如果查找纹理是更好的选择,那么GPU可以像它本身那样实现pow指令。)

以前使用纹理的常见原因是着色器模型1.x中vertexpixel shaderspow指令不存在。在2.x和更新的内容中,它可用(more instruction sets)。