Представляя публике свои проекты, большинство разработчиков привыкло хвастаться самопальными графическими движками, знающими все современные технологии и потому способными на невероятные спецэффекты. Причем вперемешку со сладкими обещаниями обязательно идут малопонятные, но приятные уху термины, замысловатые определения и характерные обороты. Воспитанные на продукции отечественного игропрома геймеры уже давно поняли, что выбор развлечения на вечер по своей сути похож на школьные метания между неприметной умницей-красавицей, и выкрашенной, словно забор Тома Сойера, девушкой-пустышкой. Данная статья не претендует на глубинное погружение в мир хай-тека, однако призвана в доступной форме рассказать обо всех часто встречаемых игровых терминах, о том, с чем их едят, а также прикинуть, какие понятия смогут обогатить наш лексикон в ближайшем будущем.
Отфильтруй и разгладь!
Начнем с довольно неожиданного заключения. На самом деле все, что нужно для счастья, уже давным-давно придумано. Создатель одарил человека глазами, способными различать до десяти миллионов оттенков, а 24-битная глубина цвета (плюс 8-битный альфа-канал для эффекта прозрачности) в большинстве графических приложений стала стандартом де-факто. Посему получается, что, несмотря на определенные технические сложности, теоретических 16 миллионов оттенков, как правило, вполне достаточно для появления на экране монитора фотореалистичной картинки. Главные вопросы для специалистов состоят в том, каким образом, во-первых, эту пресловутую фотореалистичность построить, и как, во-вторых, не растерять всю ее прелесть в динамике. Элементарным показателем качества изображения можно считать его разрешение (resolution) . Наверняка всем известен обывательский принцип выбора цифровой фотокамеры "где больше мегапикселей, та и лучше". Похожую зависимость можно провести и по отношению к компьютерной картинке – чем больше пикселей (а их число, как известно, определяется соотношениями вроде 800*600, 1024*768 для обычных мониторов или 1024*600, 1280*768 для широкоформатных), тем лучше изображение. Разумеется, с увеличением количества точек тяжесть работы, ложащаяся на трио процессора, оперативной памяти и видеокарты, всенепременно возрастает. К сожалению, даже высокодетализированная картинка далеко не всегда может порадовать глаз: границы объектов неестественно резкие, а цвета пикселей, что называется, "прыгают". Для устранения этих недостатков используются различные методики обработки изображений. Одним из самых простых способов улучшения картинки является билинейная фильтрация (bilinear filtering) . После прохода через фильтр с зернистостью будет покончено, и оттенки пикселей станут плавно переходить друг в друга. Трилинейная фильтрация (trilinear filtering) работает чуть сложнее, однако эффект тот же самый – цветовые переходы станут малозаметны, следовательно, картинка будет выглядеть натуральнее. Правда, помимо небольшой расплывчатости изображения, у двух этих методов есть и более серьезный минус – некорректная фильтрация трехмерных моделей. Самый прогрессивный на сегодняшний день вид цветовой стабилизации – анизотропная фильтрация (anisotropic filtering). Если кратко, то ее алгоритм позволяет наиболее точно подбирать цвета пикселей на текстурах 3D-объектов. Уровень фильтрации (x2, x4, x8, x16) обозначает количество выполняемых итераций или, проще говоря, число задействованных в расчетах элементов. Само собой, чем множитель выше, тем сильнее приходится попотеть видеокарте. Еще одной серьезной преградой на пути реалистичной картинки оказывается "ребристость" границ изображаемого объекта. В самой игре это не очень заметно, но на скриншотах характерная "лесенка" моментально бросается в глаза. Для ее устранения используют алгоритмы сглаживания (Antialiasing). В первых применяющих антиалиазинг акселераторах единственным видом сглаживания был суперсэмплинг (Supersampling). Однако вследствие его огромной ресурсоемкости современные видеокарты используют мультисэмпинг (Multisampling), интеллектуальный метод, посредством которого обрабатываются только самые важные для конечного результата части границ. Стоит заметить, что и AMD (ранее ATI), и nVidia постоянно ведут работу над улучшением как аппаратных (то есть непосредственно на уровне железа), так и программных (на уровне драйверов) средств обработки изображений. Причем стремления инженеров и программистов сводятся скорее не к разработке новых математических методов, а к оптимизации старых. К примеру, во всех современных видеокартах применяется так называемая адаптивная анизотропная фильтрация (adaptive anisotropic filtering), благодаря чему при неизменном результате производительность заметно возрастает. Иногда, правда, доходит до смешного – стараясь в таких бенчмарках, как 3DMark, заработать максимальное количество попугаев, производители применяют ухудшающие изображение алгоритмы (и не всегда, кстати, в этом признаются). Такой подход можно сравнить с музыкальным форматом MP3 – формально качество намного хуже, чем у файлов WAV, однако этого почти никто не замечает.
Нет предела совершенству
В материалах о компьютерных играх можно часто встретить словечки вроде "бампмэппинг", "шейдеры" или "блум". Остановимся на них поподробнее. Бампмэппинг (bump mapping) – это технология, призванная создавать микрорельеф на поверхности плоских текстур. Ее практическое применение, наверное, лучше всего демонстрирует незабвенный DOOM 3. Стоит только отключить бампмэппинг, и выпуклые модельки монстров разом превращаются в грубо отесанных буратин. Что приятно, использование этой технологии не требует особых компьютерных мощностей (чего, правда, не скажешь о затрачиваемом на дизайн моделей времени). Одним из самых популярных способов приукрашивания картинки стало в последнее время применение шейдеров (shaders). Шейдерами называют написанные на специальном языке программы, выполняющие определенные графические задачи. По типу "специализации" их принято разделять на вершинные (vertex) и пиксельные (pixel). Сегодня талантливый программист может написать довольно сложный алгоритм шейдерной обработки, однако его возможности могут быть ограничены расчетным потенциалом видеокарт. Для разделения видеоускорителей по их, так сказать, продвинутости, существуют обозначения вроде 1.0, 2.0 или 3.0. Таким образом, использующая шейдеры 3.0 игра не запустится на GeForce FX5900 (эта видеокарта доросла лишь до спецификации 2.0), однако счастливый обладатель более современного железа будет иметь возможность насладиться великолепными спецэффектами (ибо аппаратных ограничений у разработчиков в этом случае практически нет). К счастью обладателей ретро, девелоперы нередко предусматривают возможность упрощения или полного отключения шейдерных вычислений. Идеи не стоят на месте. Не так давно выяснилось, что некогда избыточного 24-битного стандарта RGB, оказывается, уже недостаточно. Для реалистичного воссоздания таких моментов, как, например, выход из темноты на яркий свет или, наоборот, постепенное привыкание к мраку, 256 оттенков трех цветов – это слишком мало. Методика работы с цветами глубиной более восьми бит называется High Dynamic Range (по-русски это выражение звучит довольно коряво). Наглядный пример использования HDR – это недавняя The Elder Scrolls 4: Oblivion. Выходя из темных пещер на яркое солнце, мы видим, как весь экран заливается светом, после чего глаза как бы привыкают, и картинка вновь становится нормальной. Воссоздать такой плавный и, главное, правдоподобный процесс адаптации в режиме RGB было бы попросту невозможно. Здесь, правда, стоит сделать одно существенное замечание: абсолютное большинство мониторов по-прежнему умеют работать только в 32-битном режиме, потому расширенный диапазон цвета участвует только в промежуточных операциях. На экран же картинка подается в привычном RGB-формате. Кроме того, до недавнего времени совмещать HDR-расчеты и антиальясинг умели только видеокарты от AMD (паритет был восстановлен с появлением GeForce восьмой серии). Впрочем, радости от такого смешения все равно немного: изобилующий сложными расчетами тандем, как правило, роняет FPS в играх на счет раз. Для того чтобы наделить уже готовую (отрендеренную) картинку каким-то особым восприятием, используются эффекты постобработки. Самыми популярными из них можно назвать Bloom и Motion Blur. Первый делает самые яркие участки картинки еще более яркими, тем самым придавая многим объектам эффектный ореол. Blur же применяют в основном тогда, когда некоторым предметам нужно придать видимость быстрого перемещения. Возьмем, к примеру, скриншот из какой-нибудь Need For Speed. Как можно определить, находится ли машина в движении или стоит на месте? В обычных условиях, наверное, только опираясь на интуицию и здравый смысл. А вот когда окружающие гоночных красавцев строения и конструкции получаются сильно размыты, сразу становится ясно, что болиды мчатся на околозвуковой. К сожалению (а может, и к счастью), разработчики нередко злоупотребляют блюром, дабы, размазав картинку по экрану, прикрыть недостатки своего графического движка.
Сегодня, завтра, послезавтра…
Главные надежды сегодняшних игроманов во многом обращены к DirectX под номером 10. Для справки, DirectX - это комплекс программных средств, используемый для взаимодействия между непосредственно графическим приложением и драйверами видеокарты. С каждой новой версией "Дайрект Икса" алгоритмы дополняются и перерабатываются, потому видеоускорители должны быть готовы все вновь прибывшие команды адекватно исполнять. Видя неумолимую тенденцию к шейдерным вычислениям, программисты Microsoft уделили данному компоненту особое внимание. DirectX 10 поддерживает Shader Model 4.0 (что в теории дает доступ к более зрелищным спецэффектам), а также добавляет унифицированный шейдерный интерфейс (unified shader interface) и так называемые геометрические шейдеры (geometry shader). Два последних пункта должны заметно повысить производительность видеоадаптеров: УШИ не позволит железной подруге ни секунды отдыха (ранее вершинными и пиксельными операциями занимались независимые процессоры, один из которых часто простаивал), а применение геометрических шейдеров сократит число выполняемых операций. Вообще, нельзя не отметить, что Microsoft удалось залатать практически все узкие места, которые присутствовали в DirectX 9.0. Недаром контора дядюшки Гейтса заявляет о четырехкратном (!) приросте в быстродействии некоторых DX10-приложений по сравнению с теми, что используют девятую версию редмондовских системных библиотек. Остается заметить, что на момент написания этих строк полной поддержкой десятого “Дайрект Икса” может похвастаться только лишь линейка GeForce 8800 от nVidia. Как известно, над радикальными способами увеличения производительности видеокарт уже не один год трудятся умы ведущих hi-tech корпораций. Оптимизация алгоритмов, наращивание объема встроенной памяти и увеличение тактовой частоты – все это, конечно, хорошо. Однако истинным энтузиастам и игроманьякам от Бога хочется настоящего максимума. Для подобных представителей человеческой расы были разработаны объединяющие сразу две графические платформы технологии SLI и CrossFire. Именно таких "гомо фанатикус" и старается завлечь в клуб любителей физики компания Ageia со своим PhysX. В одной из статей мы уже говорили, что в скором времени на рынке может появиться ответственный за искусственный интеллект AI-акселератор. Перспективы такого новшества просчитать довольно сложно, но очевидно, что в условиях жесточайшей конкуренции каждый тянет одеяло на себя. Инженеры nVidia, к примеру, настаивают на целесообразности переноса расчетов физики на процессор видеокарты (в данный момент это является прерогативой CPU). Видимо, сердца калифорнийцев наполняет уверенность, что их будущие разработки (да что там говорить - уже сегодняшние) смогут без проблем справляться как с графическими, так и с физическими нагрузками. Кстати говоря, в угоду все тем же энтузиастам AMD и nVidia обещают разработать вариант использования старых видеокарт (скажем, 6-й или 7-й серии) исключительно в качестве ускорителей физики. Следует также помнить о том, что даже в самых современных видеокартах реализованы далеко не все известные графические технологии (в конце концов, это не так уж и просто). Одним из главных претендентов на скорую аппаратную реализацию является технология под названием рэйтрейсинг (RayTracing). С ее помощью модель освещения высчитывается по строгим физическим законам, что, как нетрудно догадаться, позволяет получить по-настоящему фотореалистичную картинку (немногочисленные синтетические скриншоты наглядно доказывают это). Правда, как уже говорилось, ни одна массовая видеокарта пока еще не имеет поддержку рэйтрейсинга. Но будем надеяться, что, скорее всего, это лишь вопрос времени.
Дело за малым
Сейчас, когда основные графические термины стали понятны, незнакомые английские словечки вряд ли смогут смутить начинающих геймеров. Смеем надеяться, что и для закаленных игроков данная статья также оказалась в чем-то полезной. Дело теперь за малым: обзавестись новым железом и с улыбкой мартовского кота начать выкручивать ползунки в видеонастройках на максимум.
Автор: Vladimir 08-03-2007
1249 Прочтений • [Антиальясинг, шейдеры и все-все-все] [30.05.2012] [Комментариев: 0]