Мне интересна информация о скорости sin()
и cos()
в Open GL Shader Language.
Документ спецификации GLSL указывает, что:
Встроенные функции в основном делятся на три категории:
- ...
- ...
- Они представляют собой графическое аппаратное обеспечение, которое может ускориться в какой-то момент. Функции тригонометрии попадают в это категория.
EDIT:
Как уже отмечалось, подсчет тактовых циклов отдельных операций, таких как 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()
позаботится об оптимизации для меня?