Что такое чтение зависимой текстуры? - PullRequest
22 голосов
/ 28 июня 2009

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

Ответы [ 3 ]

27 голосов
/ 29 июня 2009

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

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

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

23 голосов
/ 20 ноября 2014

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

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

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

10 голосов
/ 28 июня 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...