logo
Лекция10 графика

Краткий справочник терминов, упоминающихся в статье

Шейдер (shader) — это программа для одной из ступеней графического конвейера, используемая в трёхмерной графике для определения окончательных параметров объекта или изображения. Она может включать в себя произвольной сложности описание поглощения и рассеяния света, наложения текстуры, отражение и преломление, затенение, смещение поверхности и эффекты пост-обработки.

Пиксельный шейдер (pixel shader) работает с фрагментами изображения, под которыми в данном случае подразумеваются пикселы, обладающие некоторым набором атрибутов, таких как цвет, глубина, текстурные координаты. Пиксельный шейдер используется на последней стадии графического конвейера для формирования фрагмента изображения.

Вершинный шейдер (vertex shader) оперирует данными, сопоставленными с вершинами многогранников. К таким данным, в частности, относятся координаты вершины в пространстве, текстурные координаты, тангенс-вектор, вектор бинормали, вектор нормали. Вершинный шейдер может быть использован для видового и перспективного преобразования вершин, генерации текстурных координат, расчета освещения и т. д.

Геометрический шейдер (geometry shader), в отличие от вершинного, способен обработать не только одну вершину, но и целый примитив. Это может быть отрезок (две вершины) и треугольник (три вершины), а при наличии информации о смежных вершинах (adjacency) может быть обработано до шести вершин для треугольного примитива. Кроме того, геометрический шейдер способен генерировать примитивы «на лету», не задействуя при этом центральный процессор.

Шейдерный конвейер (процессор) — это устройство для обработки одного элемента данных одной командой (типичными элементами данных могут быть целые или числа с плавающей запятой).

Блок растеризации (ROP, Raster Operator) — устройство, выполняющее Z-буферизацию, сглаживание и запись обработанного изображения в буфер кадра видеокарты.

Блок текстурирования (TMU, Texture Mapping Unit) — устройство, отвечающее за наложение изображений (текстур) на поверхности геометрических объектов.

"Блоки адресации, выборки и фильтрации текстур в составе современных графических чипов".http://radeon.ru/articles/technology/tmu/)Текстурные блоки R600

R600 имеет квартет текстурных блоков, и они теперь почти полностью отделены от вычислительных массивов АЛУ. Единственным ограничением является привязанность каждого текстурного блока к своим квадам шейдерных процессоров. Т.е., если представить R600 как 4 массива по 16 шейдерных блоков, то каждый массив представляет собой 4 квада, и каждый текстурный блок загружает данные только в свой квад в каждом из четырёх массивов.

Каждый текстурный блок состоит из 8 блоков адресации, 20 блоков выборки и 4 блоков фильтрации. Обратите внимание, что 4 из 20 блоков выборки предназначены исключительно для поточечной выборки (или для загрузки вершин). Выборка любой текстуры, включая даже FP32, происходит теперь всего за один такт. Т.е., например, каждый текстурный блок способен загрузить достаточно FP32 текселей для четырёх билинейных фильтраций и ещё 4 FP32 текселя для поточечной выборки, и всё за один такт. Блоки фильтрации теперь способны аппаратно фильтровать любые форматы текстур. Причём, большинство форматов билинейно фильтруются также за один такт. Исключение составляют только два самых "тяжёлых" формата - четырёхканальные INT16 и FP32 - на фильтрацию которых уходит два такта. Текстурный блок может наложить до 128 текстур за проход.

Была добавлена поддержка адресации 8192х8192 текстур, а также нового 32-бит RGBE (9:9:9:5) формата. По-прежнему поддерживается Fetch4, и появилась поддержка PCF (Percentage Closer Filtering), благодаря её включению в DirectX 10. PCF долгое время оставалась проблемой для ATI, т.к. она не была документирована в DirectX и вообще являлась интеллектуальной собственностью SGI, доступ к которой nVidia получила путём специального соглашения. Тем не менее, технология смогла получить широкую поддержку в играх, благодаря использованию NV2A в игровой приставке XBOX, где поведение PCF было хорошо известно разработчикам. Реализация технологии сходна с применением Fetch4 для сглаживания теней, за исключением того, что PCF усредняет значения текселей аппаратно блоком фильтрации текстур.

Текстурные блоки имеют L1 кеши по 32 КБ каждый, вершинный кеш может использоваться для ускорения поточечных выборок (у RV610 вершинный и L1 кеши сложены в один), размер L2 кеша равен 256 КБ у R600 и 128 КБ у RV630 (RV610 не имеет L2 текстурного кеша).

Текстурные блоки управляются выделенным арбитром. Одновременно может быть запущено множество потоков, чтобы блоки выборки и фильтрации (как следствие и шейдерные процессоры) простаивали как можно меньше времени. Этот арбитр работает совместно с арбитром шейдерных процессоров, который останавливает потоки (отдавая ресурсы другим потокам), ждущие данных от текстурных блоков.