2016-08-04 1 views
0

Использует ли textureOffset(...) производительность по сравнению с вычислением смещений вручную и с помощью обычной функции texture(...)?Текстура (...) через textureoffset (...) производительность в glsl

Как есть свойство GL_MAX_PROGRAM_TEXEL_OFFSET, я бы предположил, что он может извлекать смещенные тексели в одном или, по крайней мере, как можно меньше, извлечения, что делает его превосходным, например, размытым эффектом, но я не могу понять, как это сделать работает внутри где угодно?

Update: Переформулирование вопрос: это распространено среди ГЛ-водителей, чтобы сделать какие-либо оптимизаций относительно текстурных выборок при использовании в textureOffset (...) функцию?

ответ

1

Вы задаете неправильный вопрос. Вопрос не должен состоять в том, будет ли более конкретная функция всегда иметь лучшую производительность. Вопрос в том, будет ли более конкретная функция когда-либо быть медленнее.

И нет причин ожидать, что это будет медленнее. Если аппаратное обеспечение не имеет специализированных функций для смещения текстурных доступов, то компилятор будет просто компенсировать координату текстуры вручную, точно так же, как вы могли. Если есть аппаратное обеспечение, то оно будет использовать его.

Так что если вам нужно textureOffset s и можете жить в пределах своих ограничений, нет причин не, чтобы использовать его.

Я бы предположил, что это может принести offseted текселей в один или, по крайней мере, как можно, выполняет загрузку, что делает его превосходным, например, размытость эффекты

Нет, это textureGather. textureOffset предназначен для выполнения того, что говорит его имя: доступ к текстуре, основанной на координате текстуры, с текксельным смещением от местоположения этой координаты.

textueGather образцы из нескольких соседних текселей все сразу. Если вам нужно прочитать фрагмент текстуры для размытия, то textureGathertextureGatherOffset) будут более полезными, чем textureOffset.

+0

Благодарим вас, я обновил вопрос, я знаю, что textureGather, что я хотел знать, это если есть какие-либо драйверы или даже обычные, которые могут использовать textureOffset для извлечения нескольких текселей позади. –