Top.Mail.Ru

Что такое шейдеры в игре?

Весьма нередкий вопрос любознательных геймеров и новичков гейм создателей.

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

Шейдеры - это маленькие, так сказать, "скрипты для видеокарты". Разрешают достаточно просто воплотить такие различные спецэффекты и эффекты.

Что такое шейдеры в игре?
Случаются пиксельными (работают с изображениями - т. е. или с экраном полностью, или с текстурами) и вершинные (работают с 3Д объектами). примеру при помощи пиксельных шейдеров реализуются такие эффекты, как 3Д-текстуры (бамп) , параллакс-текстуры, лучи солнца (sunshafts) а-ля Кризис, размытие по дальности, попросту размытие при движении, анимированные текстуры (вода, лава,...) , HDR, сглаживание, тени (по технологические процессы ShadowMaps) и дофига всего такового. Вершинными шейдерами проделывают анимацию травки, героев, деревьев, делают волны на воде (типа большие) ну и т. д. Чем труднее (качественее, современнее) эффект - тем больше на него необходимо команд в коде шейдера. Но шейдеры различных версий (1.1 - 5.0) поддерживают различное число команд: чем повыше версия - тем больше команд можно применять. По этой причине некие технологические процессы Нереально воплотить на наиболее младших шейдерах. К примеру конкретно по этой причине новейший Dead Space 2 просит 3ю версию шейдеров (и пиксельных и вершинных) - так как у него таковая модель освещения, которую можно воплотить лишь на 3их и повыше версия шейдеров.

Варианты шейдеров

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

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

Геометрический шейдер:
Геометрические шейдеры готовы строить новейшую геометрию, и могут употребляться для сотворения частиц, конфигурации детализации модели «на лету», формирование силуэтов и т.п. В различие от предшествующего вершинного, готовы обработать не только лишь одну вершину, да и целый примитив. Примитивом быть может отрезок (2-е вершины) и треугольник (3 вершины), а при присутствии информации о смежных верхушках (англ. adjacency) для треугольного примитива быть может обработано до 6 вершин.

Пиксельный шейдер:
Пиксельными шейдерами выполняют наложение текстур, свет, и различные текстурные эффекты, такие как отражение, преломление, туман, Bump Mapping и пр. Пиксельные шейдеры аналогично употребляются для пост-эффектов. Пиксельный шейдер работает с моментами растрового изображения и с текстурами - обрабатывает данные, связанные с пикселями (к примеру, цвет, глубина, текстурные координаты). Пиксельный шейдер употребляется на заключительной стадии графичного конвейера для формирования фрагмента изображения.

Итог: Шейдер - это различные эффекты на картинку, также как вы обрабатываете своё фото в телефоне в различных тонах или узорах.