关于GLSL MAD (“乘加”)优化的问题。
根据这个优化,我们应该帮助GLSL编译器优化mad表达式。这一切都清楚地告诉我
result += x*y 看起来应该是:
result = x*y + result但是与-=有什么关系呢?
result -= x*y如果我写:
result = result - x*y这将不是“乘加”。
如果:
result = -x*y + result它能优化它吗?我担心是因为-x
我只想向自己澄清这件事。
发布于 2014-02-22 19:35:24
很难猜测一个特定的编译器/优化器在任何特定情况下会做什么。有了GLSL,您就会发现在野外有很多不同的实现(以及它们的版本)。
一般来说,我认为result += x*y永远不会带来比result = result + x*y更好的优化结果--毕竟它只是语法糖,而不是一些不同的操作。
如果您想了解某些编译器为您的代码做了什么,我建议您看看AMD着色分析仪,它将显示编译器的结果。此外,您还可以从它们的nvidia命令行编译器中使用CG工具包,后者也编译GLSL。它将只输出ARB组装级顶点/片段程序,而不需要真正的指令级代码,但它仍然允许您查看优化器从GLSL结构中得到的结果。
发布于 2014-02-27 20:59:26
只是为了添加另一个资源:LowLevelThinking.pdf是一种很好的方法,您可以引导编译器实现更优化的代码。
这个建议并不是glsl特有的,但当我看到你的问题时,我想到了它,因为他确实强调你应该编写一段很有可能变成疯狂安装的代码。
https://stackoverflow.com/questions/21958782
复制相似问题