Плиточный рендеринг — это процесс разделения компьютерного графического изображения регулярной сеткой в оптическом пространстве и рендеринга каждой секции сетки, или тайла , отдельно. Преимущество этой конструкции в том, что объем памяти и пропускная способность уменьшаются по сравнению с системами рендеринга в режиме немедленного режима , которые рисуют весь кадр сразу. Это сделало системы рендеринга тайла особенно распространенными для использования на маломощных портативных устройствах . Плиточный рендеринг иногда называют архитектурой «сортировки середины», потому что он выполняет сортировку геометрии в середине графического конвейера, а не ближе к концу. [1]
Создание 3D-изображения для отображения состоит из ряда шагов. Сначала объекты, которые должны быть отображены, загружаются в память из отдельных моделей . Затем система применяет математические функции для преобразования моделей в общую систему координат, вид мира . Из этого вида мира создается ряд полигонов (обычно треугольников), которые аппроксимируют исходные модели, видимые с определенной точки зрения, камеры . Затем система композитинга создает изображение, визуализируя треугольники и применяя текстуры к внешней стороне. Текстуры — это небольшие изображения, которые рисуются на треугольниках для создания реализма. Затем полученное изображение объединяется с различными спецэффектами и перемещается в буфер кадров , который затем сканируется видеооборудованием для создания отображаемого изображения. Эта базовая концептуальная схема известна как конвейер отображения .
Каждый из этих шагов увеличивает объем памяти, необходимый для хранения полученного изображения. К тому времени, как оно достигает конца конвейера, изображения становятся настолько большими, что типичные конструкции видеокарт часто используют специализированную высокоскоростную память и очень быструю компьютерную шину для обеспечения требуемой пропускной способности для перемещения изображения в различные подкомпоненты конвейера и из них. Такая поддержка возможна на выделенных видеокартах, но по мере того, как бюджеты мощности и размера становятся более ограниченными, обеспечение достаточной пропускной способности становится дорогим с точки зрения проектирования.
Плиточные рендереры решают эту проблему, разбивая изображение на разделы, известные как плитки, и визуализируя каждую из них отдельно. Это уменьшает объем памяти, необходимый на промежуточных этапах, и объем данных, перемещаемых в любой момент времени. Для этого система сортирует треугольники, составляющие геометрию, по местоположению, что позволяет быстро находить треугольники, перекрывающие границы плиток. Затем она загружает только эти треугольники в конвейер рендеринга, выполняет различные операции рендеринга в графическом процессоре и отправляет результат в буфер кадра . Можно использовать очень маленькие плитки, 16×16 и 32×32 пикселя являются популярными размерами плиток, что также делает объем памяти и пропускной способности, требуемый на внутренних этапах, небольшим. И поскольку каждая плитка независима, она естественным образом поддается простой распараллеливанию.
В типичном тайловом рендерере геометрия сначала должна быть преобразована в экранное пространство и назначена тайлам экранного пространства. Это требует некоторого хранилища для списков геометрии для каждого тайла. В ранних тайловых системах это выполнялось центральным процессором , но все современное оборудование содержит аппаратные средства для ускорения этого шага. Список геометрии также может быть отсортирован спереди назад, что позволяет графическому процессору использовать удаление скрытых поверхностей , чтобы избежать обработки пикселей, которые скрыты за другими, экономя пропускную способность памяти для ненужных поисков текстур. [2]
Существует два основных недостатка подхода с использованием плиток. Один из них заключается в том, что некоторые треугольники могут быть нарисованы несколько раз, если они перекрывают несколько плиток. Это означает, что общее время рендеринга будет выше, чем у системы рендеринга в режиме немедленного отображения. Также возможны проблемы, когда плитки должны быть сшиты вместе, чтобы создать полное изображение, но эта проблема была решена давно [ требуется ссылка ] . Более сложным для решения является то, что некоторые методы изображения применяются к кадру в целом, и их трудно реализовать в рендеринге с использованием плиток, где идея состоит в том, чтобы не работать со всем кадром. Эти компромиссы хорошо известны и не имеют значительных последствий для систем, где преимущества полезны; системы рендеринга с использованием плиток широко используются в карманных вычислительных устройствах.
Плиточный рендеринг не следует путать с мозаичными/нелинейными схемами адресации буфера кадра , которые делают смежные пиксели также смежными в памяти. [3] Эти схемы адресации используются широким спектром архитектур, а не только мозаичными рендерерами.
Большая часть ранних работ по мозаичному рендерингу была выполнена в рамках архитектуры Pixel Planes 5 (1989). [4] [5]
Проект Pixel Planes 5 подтвердил правильность плиточного подхода и изобрел множество методов, которые теперь считаются стандартными для плиточных рендереров. Это работа, наиболее часто цитируемая в других работах в этой области.
Плиточный подход также был известен в начале истории программного рендеринга. Реализации рендеринга Рейеса часто делят изображение на «плиточные сегменты».
На ранних этапах разработки настольных графических процессоров несколько компаний разработали мозаичные архитектуры. Со временем они были в значительной степени вытеснены графическими процессорами с непосредственным режимом и быстрыми пользовательскими внешними системами памяти.
Вот основные примеры:
Примерами неплиточных архитектур, использующих большие буферы на кристалле, являются:
Из-за относительно низкой пропускной способности внешней памяти и скромного объема требуемой памяти на чипе, тайловый рендеринг является популярной технологией для встроенных графических процессоров. Текущие примеры включают:
Немедленный рендеринг на основе плиток (TBIM):
Отложенный рендеринг на основе плиток (TBDR):
Vivante производит мобильные графические процессоры, которые имеют тесно связанную память буфера кадров (аналогично описанному выше графическому процессору Xbox 360). Хотя это может использоваться для рендеринга частей экрана, большой размер рендерируемых областей означает, что они обычно не описываются как использующие архитектуру на основе плиток.