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