GLSL:pow与整数指数的乘法

时间:2016-09-12 08:37:14

标签: opengl glsl shader exponent

GLSL中哪个更快:

pow(x, 3.0f);

x*x*x;

取幂性能是否取决于硬件供应商或指数值?

1 个答案:

答案 0 :(得分:8)

虽然这肯定取决于硬件/供应商/编译器,但像pow()这样的高级数学函数往往比基本操作贵得多。

最好的方法当然是同时尝试和基准测试。但如果有一个简单的替代高级数学函数,我认为你不会因为使用它而出错。

如果您编写pow(x, 3.0),您可能希望的最好的是编译器将识别特殊情况并展开它。但是,为什么要承担风险,如果替换的同时又简短易读? C / C ++编译器并不总是通过简单的乘法替换pow(x, 2.0),因此我不一定会指望所有GLSL编译器都这样做。