Opengl glsl-=mad优化

Opengl glsl-=mad优化,opengl,glsl,Opengl,Glsl,关于GLSL MAD乘法和加法优化的问题 根据这一点,我们应该帮助GLSL编译器优化mad表达式。我跟你说清楚了 result += x*y 应该是这样的: result = x*y + result 但是如何处理-= result -= x*y 如果我写: result = result - x*y 这不是乘法和加法 如果: 它优化了它吗?我担心是因为-x 我只想对自己澄清一下这件事。很难猜测特定的编译器/优化器在任何特定情况下会做什么。使用GLSL,您会遇到这样的情况,即在野外有许

关于GLSL MAD乘法和加法优化的问题

根据这一点,我们应该帮助GLSL编译器优化mad表达式。我跟你说清楚了

result += x*y 
应该是这样的:

result = x*y + result
但是如何处理-=

result -= x*y
如果我写:

result = result - x*y
这不是乘法和加法 如果:

它优化了它吗?我担心是因为-x


我只想对自己澄清一下这件事。

很难猜测特定的编译器/优化器在任何特定情况下会做什么。使用GLSL,您会遇到这样的情况,即在野外有许多不同的实现和版本

一般来说,我认为result+=x*y永远不会导致result=result+x*y之外的另一个优化结果——它毕竟只是语法上的糖分,而不是一些不同的操作


如果您想了解某些编译器对您的代码做了什么,我建议您查看一下哪些编译器会向您显示编译器结果。此外,您还可以使用他们的,这也编译GLSL。它将只输出ARB汇编级顶点/片段程序,而不应输出真正的指令级代码,但它仍将允许您查看优化器是如何利用GLSL构造的。

很难猜测特定编译器/优化器在任何特定情况下会做什么。使用GLSL,您会遇到这样的情况,即在野外有许多不同的实现和版本

一般来说,我认为result+=x*y永远不会导致result=result+x*y之外的另一个优化结果——它毕竟只是语法上的糖分,而不是一些不同的操作


如果您想了解某些编译器对您的代码做了什么,我建议您查看一下哪些编译器会向您显示编译器结果。此外,您还可以使用他们的,这也编译GLSL。它将只输出ARB汇编级顶点/片段程序,而不应向您提供真正的指令级代码,但它仍将允许您查看优化器在何处对GLSL构造进行了优化。

只需添加另一个资源: 这是一个很好的方法,可以引导编译器实现更优化的代码


这个建议并不针对glsl,但当我看到你的问题时,我想到了它,因为他强调你应该编写代码,这很有可能会演变成疯狂的指令。

只是为了添加另一个资源: 这是一个很好的方法,可以引导编译器实现更优化的代码


这个建议并不针对glsl,但当我看到你的问题时,我想到了它,因为他强调你应该编写代码,这很有可能会导致疯狂指令。

AMD的着色器分析器适用于nVidia卡吗?cg工具包有一些gui吗?但是。。。。那么-=?:@tower120:AMDs着色器分析器完全独立于GPU工作:它只编译代码并进行静态性能分析。NVIDIAs CG编译器也可以在CPU上工作。对于我建议在这里使用的情况,GPU其实并不重要。我不知道有什么图形用户界面,毕竟它是一个编译器。AMD的着色器分析器适用于nVidia卡吗?cg工具包有一些gui吗?但是。。。。那么-=?:@tower120:AMDs着色器分析器完全独立于GPU工作:它只编译代码并进行静态性能分析。NVIDIAs CG编译器也可以在CPU上工作。对于我建议在这里使用的情况,GPU其实并不重要。我不知道它有什么GUI——毕竟它是一个编译器。
result = -x*y + result