不同CG/GLSL/HLSL功能的性能

Mr.*_*Boy 7 opengl 3d performance shader direct3d

有标准的着色器函数库,例如Cg.但是有没有资源可以告诉你每次采取多长时间......我的想法类似于你曾经如何查看每个ASM操作所需的周期数.

Nic*_*las 12

没有可靠的资源可以告诉您各种标准着色器功能需要多长时间.甚至不是特定的硬件.

其原因与指令调度和现代着色器架构的工作方式有关.采取一个简单的sin功能.假设硬件有一个特殊的硬件来计算值的正弦值,所以它不是手动使用Tailor系列或其他东西.但是,我们还要说它需要一系列4个操作码来实际计算它.因此,sin需要"4个周期".

但是,所有这些操作码都是标量操作.因此,尽管他们会,你其实可以有一些3向量点积,或在某些硬件的情况下,4 -矢量点积事情在同一时间,在同一处理器上.因此,如果硬件具有带标量运算的4矢量点积,则执行a sin和矩阵向量乘法所需的周期数仍为4.

那么sin运营费用是多少?如果你把矩阵相乘,那么没有什么比这更快了.如果你拿出来sin,没有什么比这更快了.它要多少钱?你不能说,因为单一操作的成本是无关紧要的; 唯一可测量的数量是着色器本身的成本.

最终,您所能做的就是尝试合理地构建着色器并查看性能.除非你有低级调试工具来处理底层着色器组件(并且没有,DX组件不够好),否则这是你能做的最好的.