Меня интересует информация о скорости sin()
и cos()
в Open GL Shader Language.Скорость функции cos() и sin() в шейдерах GLSL?
GLSL Specification Document указывает, что:
Встроенные функции в основном делятся на три категории:
- ...
- ...
- Они представляют собой операции графического оборудования скорее всего, ускорится в какой-то момент. Функции тригонометрии относятся к категории .
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()
заботиться о оптимизациях, как это для меня?
Что значит «современные графические процессоры» обеспечивают аппаратное ускорение для 'sin()' и 'cos()'? " Если он работает на графическом процессоре, можно сказать, что аппаратное ускорение. В любом случае лучше всего попробовать и профилировать его, так как тактовые циклы на графическом процессоре несколько бессмысленны без дополнительного контекста относительно того, что вы делаете. Даже между разными картами одного и того же поставщика могут быть различия в количестве исполнительных блоков, поэтому циклы только сообщают вам часть истории. – user1118321
С этими графическими процессорами я думаю, что у вас будет самое быстрое время выполнения этих тригонометрических функций. Интересный вопрос ... –
Как указано в [this] (http://stackoverflow.com/questions/10111898/glsl-relative-to-each-other-how-expensive-are-operations-like-multiply-divide) и [this] (http://stackoverflow.com/questions/8415251/performance-of-different-cg-glsl-hlsl-functions), этот вопрос по существу неопровержимо. Особое использование 'sin' может стоить * ничего *, в зависимости от того, где вы его используете, и аппаратного обеспечения. –