Подтвердить что ты не робот

Что такое зависимая текстура?

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

4b9b3361

Ответ 1

"Зависимое считывание текстуры" - это когда возвращаемые значения из одного поиска текстуры (или другие вычисления в шейдере) используются для определения WHERE для поиска второй текстуры. Важным следствием является то, что координаты текстуры (где вы смотрите вверх) не определяются до середины выполнения шейдера... нет никакого статического анализа, который вы можете сделать на шейдере (даже зная значения всех параметров) что скажет вам, какие координаты будут раньше времени. Он также строго заказывает два чтения текстуры и ограничивает, насколько порядок выполнения может быть изменен с помощью оптимизации в драйвере и т.д.

На старых видеокартах было довольно много ограничений для такого рода вещей. Например, в какой-то момент (IIRC) вы можете искать из нескольких текстур, но только с небольшим количеством различных текстурных координат. Аппаратное обеспечение фактически реализовано таким образом, что определенные типы зависимых текстовых показаний были либо невозможными, либо очень неэффективными.

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

Ответ 2

Принятый ответ (и тот, который ниже него) неправильно ограничивает зависимые текстуры, считывает с использованием результата другого чтения текстуры. Это неверно.

Зависимое считывание текстуры представляет собой любую прочитанную текстуру с координатами , которые не являются точными координатами, передаваемыми в шейдерную программу. Даже swizzle вызывает зависящую текстуру.

Это взято непосредственно из руководства Apple OpenGL ES.

Ответ 3

Обычная текстура читает, просто использует координаты текстуры, переданные в шейдер. Зависимая текстура считывается с координатами текстуры, которые были частично вычислены с использованием значений, полученных из другой текстуры, ранее доступной в шейдере. Таким образом, второй доступ к текстуре "зависит" от значения, полученного от первого.