Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Потребность в шейдерах




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

 

1. Вода в Quake 2 на программном и на OpenGL-рендеринге. При всём качестве аппаратно ускоренной картинки, вода там — просто синий светофильтр, в то время как в программном есть эффект плеска воды.

2. В Counter-Strike 1.6 эффект ослепления от светошумовой гранаты на аппаратном рендеринге — белая вспышка, на программном — белая вспышка и пикселизированный экран.

 

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

 

Предшественниками шейдеров были процедурная генерация текстур (широко применявшаяся в Unreal для создания анимированных текстур воды и огня) и мультитекстурирование (на нём был основан язык шейдеров, применявшийся в Quake 3). Но и эти механизмы не обеспечивают такой гибкости, как шейдеры.

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

 

В настоящее время шейдеры делятся на три типа: вершинные, геометрические и фрагментные (пиксельные).

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

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

Пиксельные процессоры — это одни из главных блоков видеочипа, которые выполняют специальные программы - пиксельные шейдеры.

 

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

Если одна модель видеокарты основана на GPU с 8 блоками пиксельных шейдеров, а другая из той же линейки — 16 блоками, то при прочих равных вторая будет вдвое быстрее обрабатывать пиксельные программы, и в целом будет производительнее. Но на основании одного лишь количества блоков делать однозначные выводы нельзя, обязательно нужно учесть и тактовую частоту и разную архитектуру блоков разных поколений и производителей чипов. Чисто и по этим цифрам прямо можно сравнивать чипы только в пределах одной линейки одного производителя: AMD(ATI) или NVIDIA. В других же случаях нужно обращать внимание на тесты производительности в интересующих играх.

2.3.3. Вершинный шейдер оперирует данными, сопоставленными с вершинами многогранников.

К таким данным, в частности, относятся координаты вершины в пространстве, текстурные координаты, тангенс-вектор, вектор бинормали, вектор нормали.

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

Т.о. количество блоков вершинных шейдеров – одна их характеристик видеокарт.

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

И, так как производители балансируют количество разных блоков, не позволяя возникнуть большому перекосу в распределении сил, количеством вершинных процессоров при выборе видеокарты вполне можно пренебречь, учитывая их только при прочих равных характеристиках.

2.3.4. Геометрический шейдер, в отличие от вершинного, способен обработать не только одну вершину, но и целый примитив.

Количество геометрических блоков, используемых для обработки геометрических шейдеров ещё одна характеристика видеокарт.

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

2.3.5. Количество унифицированных шейдерных блоков (или универсальных процессоров).

 

Унифицированные шейдерные блоки объединяют три типа перечисленных выше блоков - они могут исполнять как вершинные, пиксельные программы, а также геометрические, которые появились в DirectX 10.

 

Впервые унифицированная архитектура была применена в видеочипе игровой консоли Microsoft Xbox 360, этот графический процессор был разработан компанией ATI.

 

А в видеочипах для персональных компьютеров унифицированные шейдерные блоки появились не так давно, с появлением плат NVIDIA GeForce 8800. Ожидается что все DirectX 10 совместимые видеочипы будут основаны на подобной унифицированной архитектуре. Унификация блоков шейдеров значит, что код разных шейдерных программ (вершинных, пиксельных и геометрических) универсален, и соответствующие унифицированные процессоры могут выполнить любые программы из вышеперечисленных. Соответственно, в новых архитектурах число пиксельных, вершинных и геометрических шейдерных блоков как бы сливается в одно число — количество универсальных процессоров.




Поделиться с друзьями:


Дата добавления: 2014-01-15; Просмотров: 395; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.