2017-01-06 11 views
1

При попытке оптимизировать производительность рендеринга металла в шейдере фрагментов я заметил, что есть несколько способов чтения текстуры в зависимости от сценария. Мне было интересно, имеет ли подходы текстуры считывание производительности.Металлическая текстура read() vs sample() performance

Вот три различные альтернативы, которые я пробовал:

  1. Использование tex2D.read() без пробника (использует uint2 координаты).
  2. Используя tex2D.sample() с координатами пикселя (использует float2 координаты)
  3. Использование tex2D.sample() с нормализованных координат (использует float2 координаты).

Должен ли я ожидать разницы в производительности в iOS между этими параметрами?

ответ

2

Они, как правило, похожи. Для преобразования между uint2/float2 для координаты может потребоваться больше работы, чем другой, но этот эффект должен быть незначительным.

Чтение имеет неопределенное поведение для чтения вне изображения, так что это то, что нужно учитывать.