Anonim

Посмотрим правде в глаза: DirectX 11 и OpenGL стареют. DirectX 11 был представлен с Windows 7 еще в 2009 году, а OpenGL 4.0 последовал год спустя. В годы разработки программного обеспечения эти технологии уже давно устарели, и когда они выпустили эти графические API-интерфейсы, на их чертежной доске не было даже текущего оборудования, которое они используют. Учитывая это очевидное несоответствие, что индустрия делает, чтобы идти в ногу со временем? Что ж, мы посмотрим на ближайшее будущее и посмотрим, но для начала давайте сначала объясним, что такое API и какую функцию он выполняет для игр.

Что такое API?

API или интерфейс прикладного программирования - это набор протоколов и инструментов, используемых для создания программного обеспечения. Графические API - это на самом деле специализированный API, созданный для упрощения создания трехмерной графики. Графические API-интерфейсы действительно облегчают построение 3D-изображений, но они также позволяют указывать API-то что-то делать (например, рисовать прямоугольник) и, в свою очередь, позволяют API-интерфейсу взаимодействовать с аппаратным обеспечением о том, как выполнить эту задачу. Это главная причина, почему так много разных графических процессоров со специализированным оборудованием могут запускать одни и те же игры. Без существования API одна и та же игра должна была бы быть написана по-разному для взаимодействия с каждым конкретным набором аппаратного обеспечения. Это серьезно ограничило бы производство оборудования и значительно увеличило бы стоимость создания игр, стоимость, которая в конечном итоге перешла бы к конечному потребителю.

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

Рисунок 1: Графическое представление того, как работает API

Используемые в настоящее время графические API

Теперь, когда мы понимаем работу графического API, давайте подробнее рассмотрим текущую линейку. Основным игроком на рынке сегодня является Microsoft DirectX, который был представлен полностью в 1995 году. Он несколько раз обновлялся с момента своего выпуска и входит в операционную систему Microsoft Windows. DirectX - это единый графический API, который будет поддерживаться практически всеми играми, выпущенными для ПК. На самом деле, это настолько распространено, что сегодня это действительно стандарт для игр на ПК. DirectX эксклюзивен для продуктов Windows и Microsoft, что, к сожалению, делает его очень закрытой системой. Следующим в очереди является OpenGL, единственный крупный графический API с открытым исходным кодом. OpenGL был выпущен в 1992 году и является мультиплатформенным, что означает, что он работает с несколькими операционными системами, включая Windows, Linux и Mac OS. Наконец, у нас есть новейший графический API, Mantle. Mantle был разработан в 2013 году благодаря партнерству между AMD и Dice. Mantle доступен в Windows и только для графических процессоров AMD.

Рисунок 2: Сравнение DirectX 12 и DirectX 11
Источник изображения; Фото: Intel

DirectX 12

DirectX 12 должен быть выпущен с Windows 10 этой осенью, и многие новые улучшения рекламируются. Одним из больших улучшений является гораздо лучшая поддержка многопоточности. Большая часть работы распределяется по нескольким ядрам на ЦП, что позволяет гораздо лучше и эффективнее использовать ЦП. Во многих случаях в DirectX 11 будет полностью задействовано только одно ядро ​​ЦП, в то время как другие ядра почти бездействуют. DirectX 12 обещает более равномерно распределить эту рабочую нагрузку по ядрам процессора, предоставляя играм гораздо больше ресурсов процессора для работы. Следующее большое улучшение, обещанное DirectX 12, - это возможность обрабатывать гораздо больше вызовов отрисовки. Вызов на ничью происходит каждый раз, когда движок игры хочет нарисовать что-то на экране. Требование большого количества вызовов отрисовки обычно очень сильно нагружает процессор. Предполагается, что DirectX 12 сможет обрабатывать до 600 000 вызовов. Чтобы представить это в перспективе, DirectX 9 мог обрабатывать только 6000 вызовов отрисовки или 1/100 от того, что DirectX 12 сможет.

Уже много лет возможно использование нескольких графических процессоров в режиме SLI / Crossfire. Однако одно из больших ограничений заключалось в том, что встроенная в карты VRAM не складывалась вместе, чтобы создать один большой непрерывный пул. Например, если у вас есть два графических процессора, каждый с 2 ​​ГБ видеопамяти, у вас по-прежнему фактически было только 2 ГБ видеопамяти, потому что на каждой карте должна была храниться одинаковая информация. DirectX 12 надеется решить эту проблему с помощью AFR или альтернативного рендеринга кадров. Вместо того, чтобы каждый GPU отображал часть каждого кадра, GPU теперь будет отображать по одному целому кадру каждый. Это позволит независимо использовать VRAM на каждой карте и, надеюсь, позволит картам с меньшим количеством VRAM быть пригодными для игр еще долго. Предполагается, что в DirectX 12 появилось много других новых функций, которые позволят продвинуть игровую графику дальше, чем когда-либо прежде. Тем не менее, Microsoft до сих пор не говорит о том, что представляют собой эти новые функции. Надеемся, что мы узнаем о них больше, как только релиз API станет ближе.

Рисунок 3. API-издержки DirectX 12 снижаются при использовании многоядерных процессоров.
Источник изображения; Изображение предоставлено nVidia GeForce

Vulkan

О Vulkan известно не так много, как о DirectX 12, как было объявлено на GDC 2015. Мы знаем, что создатели OpenGL, Khronos Group, отказались от названия glNext в пользу Vulkan. Vulkan, кажется, происходит от Mantle, о котором я упоминал ранее в статье. Более того, похоже, что AMD предлагает лучшие компоненты Mantle для Vulkan в партнерстве с Khronos Group. Предполагается, что Vulkan обладает многими такими же преимуществами DirectX 12, но он не привязан к какой-либо одной платформе, такой как Windows. Вместо этого он будет доступен на многих различных платформах, включая Linux и даже мобильные устройства. Драйверы Vulkan для Windows и Linux будут полностью открытыми, в отличие от DirectX. Vulkan улучшит многопоточность и, следовательно, будет намного лучше использовать доступную сегодня мощность ЦП, распределяя рабочую нагрузку между несколькими ядрами ЦП. Как упоминалось ранее, снижение нагрузки на процессор позволит графическим процессорам не быть узким местом так же легко, как сейчас. Это должно обеспечить довольно существенное повышение частоты кадров во время игр. Source 2, который недавно был анонсирован Valve, станет первым новым игровым движком, полностью поддерживающим Vulkan, хотя я уверен, что в ближайшее время будет анонсировано еще много. Dota 2, игра, известная своей интенсивной загрузкой процессора, была показана в Source 2 с новым API Vulkan, использующим встроенную графику Intel в процессоре. Это то, что, безусловно, было бы нежелательно в DirectX 11, но с Vulkan игра, казалось, сохраняла разумную частоту кадров. Дэн Бейкер, который является разработчиком игр для Oxide, даже зашел так далеко, что сказал, что «пока производители графических процессоров не соберутся и не сделают графические процессоры в десять раз быстрее, чем сейчас, мы не сможем максимально использовать процессор». Это хорошая новость для людей, работающих на более медленных процессорах или обладающих большой мощностью графического процессора в настоящее время, потому что это будет означать, что гораздо лучшая производительность достигается на том же наборе оборудования.

Рисунок 4: Диаграмма, показывающая преимущества Vulkan (уменьшенное узкое место по сравнению с GPU).
Источник изображения; Имиджевый кредит: Хронос

Что это значит для будущего игр?

Что ж, в течение долгого времени мощность графического процессора росла гораздо быстрее, чем мощность процессора. Пять лет назад Intel даже заявляла, что некоторые графические процессоры работают в 14 раз быстрее, чем их собственные. Эти тесты проводились с использованием nVidia GTX 280 по сравнению с процессором Intel i7 960 - сейчас считается относительно устаревшим оборудованием. Разрыв между nVidia GTX Titan X (или даже nVidia GTX 980) и нынешним мощным центральным процессором - процессором Intel i7-4790k - должен быть намного больше. Суть, которую я пытаюсь подчеркнуть, заключается в том, что мы начинаем видеть, что все больше и больше игр стремительно снижают производительность из-за процессора. Спросите любого, у кого монитор с высокой частотой обновления, насколько сложно поддерживать 100+ кадров в секунду с текущими процессорами в некоторых играх. Честно говоря, без этих новых API и их способности более эффективно использовать мощность процессора стало бы еще сложнее. Внедрение этих новых API может означать огромный рост производительности для большинства людей. Кроме того, это также позволило бы разработчикам создавать игры с большей нагрузкой на процессор, чем сейчас. Например, представьте себе игру вроде Assasins Creed, в которой одновременно на экране появляются тысячи NPC, которые взаимодействуют друг с другом и вашим персонажем, пока вы путешествуете по городу. Или в таких играх, как Star Citizen, где вам нужен очень очень сильный процессор, чтобы получить стабильную и приемлемую частоту кадров, в ближайшем будущем может потребоваться средний процессор в лучшем случае и сильный GPU, чтобы поддерживать хорошие стабильные 60 кадров в секунду.

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

Новые графические интерфейсы и будущее компьютерных игр