Текстура (...) через текстурное смещение (...) в glsl

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

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

Обновление: переформулирующий вопрос: является ли распространенным явление среди gl-драйверов для оптимизации выборок текстур при использовании функции textureOffset(...)?

1 ответ

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

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

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

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

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

textueGather сэмплы из нескольких соседних текселей одновременно. Если вам нужно прочитать раздел текстуры, чтобы сделать размытие, textureGather (а также textureGatherOffset) будут более полезными, чем textureOffset,

Другие вопросы по тегам