Введение
Компонент графического процессора, изменяющий растровые изображения для использования в качестве текстур.
В компьютерной графике модуль текстурирования (TMU) является компонентом современных графических процессоров (GPU). Он способен вращать, изменять размер и искажать растровое изображение для наложения на произвольную плоскость трехмерной модели в качестве текстуры, в процессе, называемом текстурированием. В современных видеокартах он реализован как отдельный этап графического конвейера, в то время как при первом появлении он был реализован как отдельный процессор, например, на видеокарте Voodoo2.
История и происхождение
TMU появились из-за высоких вычислительных требований, связанных с отбором проб и преобразованием плоского изображения (в качестве текстурной карты) в нужный угол и перспективу для отображения в 3D-пространстве. Эта вычислительная операция представляет собой масштабное матричное умножение, которое процессоры того времени (ранние Pentium) не могли выполнять с достаточной производительностью. К 2013 году TMU стали частью шейдерного конвейера и отсоединены от конвейеров вывода рендеринга (ROPs). Например, в GPU Cypress от AMD каждый шейдерный конвейер (всего их 20) оснащен четырьмя TMU, что обеспечивает GPU в общей сложности 80 TMU. Это сделано разработчиками чипов для тесной интеграции шейдеров и текстурных движков, с которыми они работают.
Геометрия
3D-сцены обычно состоят из двух элементов: 3D-геометрии и текстур, покрывающих эту геометрию. Текстурные блоки видеокарты берут текстуру и "накладывают" её на фрагмент геометрии. То есть, они оборачивают текстуру вокруг геометрии и создают текстурированные пиксели, которые затем выводятся на экран. Текстуры могут представлять собой изображение, карту освещения или даже карты нормалей для создания продвинутых эффектов освещения поверхности.
Скорость наполнения текстуры
Для рендеринга 3D-сцены текстуры накладываются на полигональные сетки. Этот процесс называется текстурированием и выполняется блоками текстурирования (TMU) на видеокарте. Скорость заполнения текстурами – это показатель того, насколько быстро конкретная видеокарта способна выполнять текстурирование. Несмотря на растущую важность обработки пиксельных шейдеров, этот параметр все еще имеет значение. Яркий пример – X1600 XT. У этой карты соотношение процессоров пиксельных шейдеров к блокам текстурирования составляет 3:1. В результате X1600 XT демонстрирует более низкую производительность по сравнению с другими графическими процессорами того же поколения и класса (например, nVidia 7600GT). В среднем ценовом сегменте текстурирование все еще может быть узким местом. Однако в высоком ценовом сегменте X1900 XTX имеет такое же соотношение 3:1, но справляется с задачами, поскольку разрешение экрана ограничено, и ей более чем достаточно мощности для текстурирования, чтобы обеспечить работу с любым дисплеем.
Устройства для отображения текстуры (TMU)
Текстуры необходимо обработать и отфильтровать. Эту задачу выполняют ТМУ, работающие совместно с пиксельными и вершинными шейдерными блоками. Задача ТМУ заключается в применении операций с текстурами к пикселям. Количество текстурных блоков в графическом процессоре используется при сравнении производительности текстурирования двух разных видеокарт. Логично предположить, что видеокарта с большим количеством ТМУ будет быстрее обрабатывать информацию о текстурах. В современных графических процессорах ТМУ содержат блоки адресации текстур (TA) и блоки фильтрации текстур (TF). Блоки адресации текстур сопоставляют тексели с пикселями и могут выполнять различные режимы адресации текстур. Блоки фильтрации текстур могут выполнять аппаратную фильтрацию текстур.
Трубопроводы
Трубопровод – это архитектура видеокарты, которая даёт общее представление о вычислительной мощности графического процессора. Термин "трубопровод" не является общепринятым техническим. В графическом процессоре существует несколько трубопроводов, поскольку одновременно выполняются различные функции. Исторически это называлось пиксельным процессором, подключённым к выделенному ТМУ. Geforce 3 имела четыре пиксельных трубопровода, каждый из которых включал два TMU. Остальная часть трубопровода обрабатывала операции определения глубины и смешивания. ATI Radeon 9700 впервые отошла от этой схемы, разместив несколько вершинных шейдерных блоков, независимых от пиксельных шейдеров. Графический процессор R300, использованный в Radeon 9700, имел четыре глобальных вершинных шейдера, но разделил остальную часть конвейера рендеринга на две части (фактически, это было двухъядерное решение), каждая из которых, называемая "квад", включала четыре пиксельных шейдера, четыре TMU и четыре ROP. Некоторые блоки используются интенсивнее других, и для повышения общей производительности процессора разработчики стремились найти оптимальное количество блоков для достижения максимальной эффективности без избыточного использования кремния. В этой архитектуре термин "пиксельный трубопровод" потерял свой смысл, поскольку пиксельные процессоры больше не были жёстко привязаны к отдельным TMU. Вершинные шейдеры были отделены давно, начиная с R300, но отделить пиксельные шейдеры было сложнее, так как для работы им требовались цветовые данные (например, выборки текстур), и поэтому их необходимо было тесно связать с TMU. Эта связь сохраняется и сегодня: шейдерный блок, состоящий из вычислительных блоков, способных обрабатывать как вершинные, так и пиксельные данные, тесно связан с TMU, но имеет кроссбар-диспетчер между своим выходом и банком ROP.
Выходные трубопроводы рендеринга (ROP)
Render Output Pipeline — это устаревший термин, который чаще называют Render Output Unit (блок вывода изображения). Его задача — управлять дискретизацией пикселей (каждый пиксель — это точка без размеров), а значит, он управляет сглаживанием, когда несколько сэмплов объединяются в один пиксель. Все отрисованные данные должны проходить через ROP для записи в буфер кадра, откуда они могут быть переданы на дисплей. Таким образом, ROP — это место, где выходные данные GPU собираются в растровое изображение, готовое к отображению.
Использование в GPGPU
В GPGPU текстурные карты в одном, двух или трех измерениях могут использоваться для хранения произвольных данных. Благодаря интерполяции, модуль отображения текстур предоставляет удобный способ аппроксимации произвольных функций с помощью таблиц данных.