gpt4 book ai didi

optimization - GLSL 着色器中 cos() 和 sin() 函数的速度?

转载 作者:行者123 更新时间:2023-12-03 13:51:56 24 4
gpt4 key购买 nike

我对 sin() 的速度信息感兴趣和 cos()在 Open GL 着色器语言中。

GLSL Specification Document表示:

The built-in functions basically fall into three categories:

  • ...
  • ...
  • They represent an operation graphics hardware is likely to accelerate at some point. The trigonometry functions fall into this category.


编辑:

正如已经指出的那样,计算单个操作的时钟周期,例如 sin()cos()并没有真正讲述整个表演故事。

所以为了澄清我的问题,我真正感兴趣的是是否值得优化 sin()cos()呼吁常见的情况。

例如,在我的应用程序中,很常见的参数是 0。 .那么这样的事情是否有意义:
float sina, cosa;

if ( rotation == 0 )
{
sina = 0;
cosa = 1;
}
else
{
sina = sin( rotation );
cosa = cos( rotation );
}

或者 GLSL编译器或 sin()cos()实现会为我处理这样的优化?

最佳答案

For example, in my application it'll be very common for the argument to be 0. So does something like this make sense:



不。

你的编译器会做两件事之一。
  • 它将发出一个实际的条件分支。在最好的情况下,如果 0 是一个局部一致的值(这样着色器组通常会一起达到 0 或非零值),那么您可能会获得改进的性能。
  • 它将评估条件的双方,并且只存储其中正确一方的结果。在这种情况下,你一无所获。

  • 一般来说,使用条件逻辑来围绕这样的小型表演跳舞并不是一个好主意。它需要非常大才有值(value),例如 discard或者其他的东西。

    另外,请注意浮点等价不太可能起作用。除非您实际上将包含 0.0 的统一或顶点属性传递给着色器,否则不会。即使在 0 和非零之间进行插值也可能永远不会为任何片段产生精确的 0。

    关于optimization - GLSL 着色器中 cos() 和 sin() 函数的速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10154984/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com