Что такое mgpu directx 12
Обновлено: 21.11.2024
Rise of the Tomb Raider – это первая игра, в которой реализована явная поддержка нескольких графических процессоров (mGPU) в системах CrossFire/SLI с использованием API DX12. Он работает как на Win32, так и на UWP. Используя низкоуровневый API-интерфейс DX12, Rise of the Tomb Raider удалось добиться исключительно высокой эффективности ЦП и, таким образом, получить больше мощности графического процессора в системе mGPU, чем это было возможно раньше.
Это приложение, разработанное Crystal Dynamics и Nixxes, даже показывает, как явный mGPU DX12 может превзойти неявный mGPU DX11. В некоторых конфигурациях масштабирование mGPU даже на 40 % лучше, чем при использовании DX11.
Читайте ниже, чтобы узнать, что такое масштабирование mGPU, откуда берутся эти преимущества и что все это означает для будущего высокопроизводительных игр.
Обновление: версия UWP запущена! Вот ссылка.
Подведение итогов: что такое Explicit MultiGPU и как это улучшает ситуацию?
Явный mGPU относится к явному управлению графическим оборудованием (возможно только в DX12) самой игрой, в отличие от неявной (DX11) реализации, которая по своей природе в основном невидима для приложения.
Явный mGPU бывает двух видов: гомогенный и гетерогенный.
Гомогенный mGPU — это аппаратная конфигурация, в которой у вас есть несколько идентичных (и связанных) GPU. В настоящее время это то, о чем думает большинство людей, когда упоминается «MultiGPU». Прямо сейчас это фактически прямой контроль DX12 над системами Crossfire/SLI. Этот тип mGPU также находится в центре внимания этой статьи.
Гетерогенный mGPU отличается тем, что GPU в системе каким-то образом различаются; будь то поставщик, возможности и т. д. Это более новая, но захватывающая концепция, которую разработчики игр все еще изучают. Это открывает двери для многих других возможностей использования всего кремния в вашей системе. Дополнительную информацию о гетерогенных mGPU можно найти в наших сообщениях в блогах здесь и здесь.
В обоих случаях MultiGPU в DX12 предоставляет разработчику игр возможность использовать 100 % кремния GPU в системе, в отличие от более закрытой и подверженной ошибкам неявной реализации.
Явный контроль над отправкой заданий, управлением памятью и синхронизацией дает разработчикам игр возможность предоставлять вам максимально быстрый и качественный игровой процесс; что достижимо только при хорошо продуманной реализации игры, эффективном API и большой мощности графического процессора.
В Rise of the Tomb Raider Nixxes лидирует, показывая, как эффективно преобразовать экономию ресурсов ЦП в максимальную производительность графического процессора с помощью DX12 на системах с mGPU.
Теперь подробности!
Максимальная производительность, максимальная эффективность
Разработчики Rise of the Tomb Raider для ПК внедрили однородный mGPU DX12. У них также есть неявная реализация mGPU DX11. Это делает его отличной платформой для демонстрации того, как они использовали mGPU DX12 для максимальной эффективности процессора и, следовательно, производительности mGPU.
Прежде чем мы перейдем к фактическим данным, важно определить, что такое «процент масштабирования» (или «коэффициент масштабирования»). Если в системе есть два графических процессора, наш максимальный теоретический «процент масштабирования» составляет 100%. Проще говоря, это означает, что мы должны получить теоретическое увеличение производительности на 100 % на каждый дополнительный GPU. Добавление 3 дополнительных графических процессоров к общему количеству из 4 означает, что теоретический процент масштабирования составит 3 * 100 % = увеличение производительности на 300 %.
Конечно, идеальных вещей никогда не бывает, и требуются дополнительные накладные расходы. На практике все, что выше 50%, является довольно хорошим масштабированием. Чтобы рассчитать процент масштабирования для системы с 2 GPU на основе FPS, мы можем использовать это уравнение:
ScalingPercentage = (MultiGpuFps / SingleGpuFps) – 1
Подставив гипотетические значения 30 кадров в секунду для одного GPU и 50 кадров в секунду для установки с двумя GPU, мы получим:
ScalingPercentage = (50 / 30) – 1 = ~0,66 = 66 %
Учитывая, что наше фактическое увеличение FPS составило 20 кадров в секунду по сравнению с 30 кадрами в секунду с частотой кадров одного графического процессора, мы можем подтвердить, что коэффициент масштабирования 66 % верен.
Вот фактические данные для трех разрешений на одной высокопроизводительной плате от AMD и NVIDIA. На этих диаграммах показано как минимальное, так и максимальное преимущество масштабирования, которое пользователь AMD или NVIDIA с DX12 может ожидать по сравнению с DX11 при каждом разрешении.
Минимальные преимущества масштабирования mGPU DX12 над mGPU DX11:
Максимальное масштабирование mGPU DX12 по сравнению с mGPU DX11:
Данные показывают, что масштабирование DX11 существует, но как при разрешении 1080, так и при 1440 DX12 обеспечивает лучшее масштабирование, чем DX11. Мало того, что DX12 имеет очень хороший максимальный коэффициент масштабирования по сравнению с DX11, он также показывает, что минимальный коэффициент масштабирования также выше минимального коэффициента масштабирования DX11. Explicit DX12 mGPU в этой игре бескомпромиссно лучше в этих разрешениях.
При разрешении 4k вы можете видеть, что мы практически близки к паритету с допустимой ошибкой. Что не сразу ясно, так это то, что DX12 сохраняет здесь потенциальные преимущества над DX11. Есть даже больше скрытых выигрышей, не отраженных в данных, и это связано с большим количеством нереализованного потенциала ЦП, которым могут воспользоваться разработчики игр. В следующем разделе этого поста будет рассказано, как разработчики игр могут извлечь еще большую производительность из этого нереализованного выигрыша, а также почему 4k не обеспечивает таких же преимуществ масштабирования, как более низкие разрешения в этой игре.
Вывод из данных заключается в том, что эффективность ЦП явного mGPU DX12 позволяет значительно лучше масштабировать GPU с использованием нескольких карт, чем DX11. Тот факт, что Rise of the Tomb Raider достигает таких впечатляющих результатов, несмотря на то, что это первая игра, в которой реализована эта функция, свидетельствует о больших перспективах использования явного mGPU в DX12.
При использовании этой технологии выигрывают все: клиенты AMD, клиенты NVIDIA и, что наиболее важно, геймеры, которые играют в игры с явно выраженным DX12 с поддержкой mGPU, пытаясь получить наилучшие игровые возможности.
Откуда на самом деле берется прирост производительности? Подумайте о поведении, связанном с ЦП и ГП.
Все системы состоят из ограниченных ресурсов; Процессор, графический процессор, память и т. д. Системы mGPU не являются исключением. Просто эти системы, как правило, имеют большую мощность графического процессора (несмотря на то, что он разделен на несколько графических процессоров). API предназначен для того, чтобы максимально упростить разработчику максимально эффективное использование этих ограниченных ресурсов. При рассмотрении производительности важно сузить узкое место до одного из (обычно) трех факторов: ЦП, ГП и памяти. Мы оставим узкие места памяти для другого обсуждения.
Давайте поговорим об узких местах ЦП и ГП. Списки команд графического процессора создаются и отправляются процессором. Если я являюсь процессором и пытаюсь создать и передать команды графическому процессору, но графический процессор обрабатывает их слишком быстро и бездействует в остальное время, мы считаем, что это состояние связано с процессором. Увеличение скорости графического процессора не приведет к увеличению частоты кадров, потому что процессор просто не может достаточно быстро обслуживать графический процессор.
То же самое происходит и наоборот. Если GPU не может обрабатывать команды достаточно быстро, CPU должен ждать, пока GPU не будет готов принять больше команд. Это сценарий с привязкой к графическому процессору, при котором ЦП бездействует.
Разработчики всегда должны знать, с чем они связаны, и нацеливаться на это, чтобы повысить общую производительность. Также важно помнить, что устранение одного узкого места, будь то ЦП или ГП, позволит вам выполнять рендеринг быстрее, но в конечном итоге вы начнете ограничиваться другим ресурсом.
С практической точки зрения, если разработчик привязан к ЦП, ему следует попытаться сократить использование ЦП до тех пор, пока он не станет привязан к ГП. В этот момент они должны попытаться уменьшить использование графического процессора, пока они снова не станут привязанными к процессору, и повторить; и все это без снижения качества или количества того, что визуализируется. Таков итеративный цикл оптимизации производительности.
Как это применимо к mGPU?
В системах с mGPU, учитывая, что вы значительно увеличили потенциал GPU, чрезвычайно важно, чтобы игра, API и драйвер были чрезвычайно эффективными с точки зрения использования ресурсов ЦП, иначе игра станет привязанной к ЦП, что приведет к бездействию всех ваших графических процессоров; явно нежелательное состояние и огромная трата кремния. Как правило, разработчики игр стремятся максимизировать использование графического процессора и тратят много времени, пытаясь предотвратить переход приложения в состояние, связанное с процессором. По мере того, как графические процессоры становятся все более мощными, эффективность ЦП становится все более важной.
Последствия этого можно увидеть на данных 1080 и 1440. Мы привязываем процессор к 11 намного быстрее, чем DX12, поэтому DX12 обеспечивает лучшие коэффициенты масштабирования.
Что касается 4k, похоже, что DX11 и DX12 имеют одинаковые коэффициенты масштабирования. Разрешения 1080 и 1440 ясно указывают на то, что есть победы ЦП, которые можно преобразовать в победы ГП, так куда же они делись при 4К? Учтите, что более высокие разрешения потребляют больше ресурсов графического процессора; это имеет смысл, учитывая, что 4k требует рендеринга в 4 раза больше пикселей по сравнению с 1080. Учитывая, что при 4k требуется больше мощности графического процессора, само собой разумеется, что в этой конфигурации мы стали привязаны к графическому процессору, а не к центральному процессору.
Мы привязаны к графическому процессору, поэтому любые дополнительные выигрыши ЦП от DX12 «невидимы» в этом наборе данных. Здесь находятся эти скрытые выгоды.Все это означает, что у разработчиков игр больше процессорной мощности, которая может быть использована реализацией mGPU DX12 при разрешении 4k!
Это нереализованный потенциал DX12, который разработчики игр все еще могут использовать для создания лучшего искусственного интеллекта и т. д., не влияя на частоту кадров, в отличие от DX11. Даже если разработчик игр больше не будет оптимизировать свою игру с поддержкой mGPU, привязанную к графическому процессору, поскольку технология графического процессора становится еще быстрее, эта же игра будет иметь тенденцию снова становиться привязанной к процессору, и в этот момент DX12 снова начнет выигрывать еще больше над DX11.
DirectX 12 помогает разработчикам учитывать все вышеперечисленное, чтобы всегда получать максимальную отдачу от вашего оборудования, и мы будем продолжать помогать им использовать API с максимальной эффективностью.
А UWP?
Это работает так же, как и в Win32. Мы рады сообщить вам, что на самом деле больше нечего сказать, кроме этого. Компании Nixx сообщили нам, что их явная реализация mGPU для DX12 в Win32 такая же, как и в UWP. В коде mGPU DX12 между двумя моделями программирования нет различий.
Обновление: компания Nixxes опубликовала исправление для UWP. Вот ссылка.
Инновации еще больше!
ГП DX12 — это не просто способ ускорить работу ваших игр. Это то, что геймеры знают и могут использовать как способ получить лучший игровой опыт с использованием современных технологий; но на самом деле это только начало. Возьмем, к примеру, виртуальную реальность; разработчик может эффективно удвоить визуальную точность сценариев виртуальной реальности, добавив второй графический процессор и заставив одну карту явно отображать контент для одного глаза, а вторая карта отображать контент для второго глаза без дополнительной задержки. Позволяя разработчику выполнять любую рабочую нагрузку на любом оборудовании графического процессора, DX12 открывает целый мир новых сценариев помимо улучшения существующих.
Постоянная поддержка и инновации с использованием DirectX 12 даже после поставки
DX12 все еще очень нов, и, несмотря на то, что он стал самым быстрым внедрением API со времен DX9, остается еще много неизведанных возможностей; нереализованный потенциал, ожидающий реализации даже на существующем оборудовании.
Такие студии, как Crystal Dynamics и Nixxes, лидируют в поиске способов извлечения большего потенциала из этих систем в своих играх даже после их выпуска. Мы видим, что другие студии делают то же самое, и студии, которые инвестируют в эти новые низкоуровневые технологии DX12 API, будут иметь преимущество в производительности, даже если экосистема продолжит развиваться.
Конечно, мы рекомендуем всем студиям делать то же самое, поскольку существует огромное количество областей, которые стоит изучить, включая все другие формы mGPU. Перед всеми участниками отрасли открывается долгий путь больших возможностей, и мы рады продолжать помогать им воплотить все это в жизнь.
Есть ли у кого-нибудь список тестов для систем с несколькими GPU?
Мне кажется, что многие обычные люди, выполняющие тесты, пресытились SLI/Crossfire и перестали даже пытаться даже сейчас, поскольку поддержка mGPU существует во многих играх и теоретически дает лучшее масштабирование и задержки, чем старые методы.
В основном я хочу видеть это с новыми картами, такими как 2+ 5700xt или Dual 2080tis и т. д. Кроме того, многие игры теперь поддерживают явную поддержку нескольких графических процессоров, люди просто не знают об этом.
Кратко, но ничего исчерпывающего:
У меня две видеокарты Radeon VII, поэтому я могу провести несколько тестов, если возникнет потребность.
Мне, например, было бы очень интересно.
Раньше запускал rx 580 в режиме перекрестного огня, мне нравилась эта концепция, мне было наплевать на исполнение, но это была по крайней мере половина моих ошибок, а не аппаратное обеспечение, поэтому я хотел бы пересмотреть настройку с двумя графическими процессорами, если она окажется жизнеспособной.
Сделай это. Очень интересно.
Как это сделать?? Я пытался заставить мои две карты Radeon VII работать, но в любой игре, которую я пытаюсь запустить, используется только одна карта. Я включил MGPU в RSC (центр программного обеспечения Radeon) в последней версии (20.3.1), а также попытался включить перекрестный огонь в RSC (19.9.2). Я пытался использовать тесты dx12, но я не знаю, поддерживают ли тесты его. Использовал 3dmark и суперпозицию. Оба распознают, что у меня две карты, но загружают только одну. Я также пробовал Borderlands 2, когда у меня была версия 19.9.2, и я мог включить перекрестный огонь в RSC. Я устанавливаю 19.9.3, пока пишу это, и собираюсь попробовать Civ VI и Ashes.
Dial 2080ti с NVlink дает до 90 % прироста в играх и других 3D-приложениях по сравнению с моими личными тестами.
Я заметил одну проблему: для некоторых игр mGPU с поддержкой DX12 требуется, чтобы Crossfire был включен в драйвере, даже если оба графических процессора выполняют рендеринг независимо друг от друга.
Civilization 6 DX12 с разделенным экраном mGPU — одна из таких игр, а Ashes of the Singularity — нет.Пепел фактически указывает, что Crossfire отключен, так как это полностью явный mGPU.
Deus Ex: Mankind Divided также хочет включить Crossfire в mGPU DX12 (неявно), но, похоже, работает только с картами Polaris. Мне не удалось заставить его работать с двумя Vega64 (только DX11 с использованием Crossfire).
Это создает проблему с картами, которые больше не поддерживают Crossfire в драйвере, например Radeon VII и 5700XT.
Я могу подтвердить, что Civ6 работает с mGPU с двумя 5700 XT
Насколько я понимаю, у них нет перекрестного огня «официально», вы все равно можете включить для него запись в реестре, и он будет работать с двумя картами.
Проблема в том, что существует очень мало игр, поддерживающих низкоуровневый режим mGPU DX12 (не SLI, не Crossfire), поэтому мало что можно сравнить, а сверхнизкая популярность любой конфигурации mGPU для игр не дает стимула для ее тестирования. . Возможно, с решениями Intel Xe dGPU+iGPU и некоторой работой AMD над APU+dGPU мы увидим больше в этой области.
Немногие сообщают о поддержке, но скорее поддерживают ее, чем делают вид. вот почему я прошу кого-нибудь, у кого есть оборудование.
Пока AMD или Nvidia не сделают несколько GPU полностью бесшовными, это никуда не денется.
Под бесшовным я подразумеваю;
Работает со всеми программами.
Разработчикам не нужно писать код специально для этого.
Прирост производительности как минимум на 75 % больше, чем при использовании 1 карты.
Если этого не произойдет, он останется нишевым продуктом для программных приложений Design/CAD/Scientific, написанных специально для его использования.
Разработчики не заинтересованы в том, чтобы тратить все дополнительное время и ресурсы на обслуживание (как я предполагаю) менее 1% рынка, у которых есть двойная установка.
Неделю назад я отказался от установки с двумя 290X в пользу 5700 XT, но оно того не стоило. Я перестал пытаться использовать Crossfire, поскольку современные игры его просто не используют, а я больше не играю в старые игры, которые его поддерживали.
Невозможно, это похоже на попытку угодить всем, что нецелесообразно и даже нежелательно.
Опять непрактично. Тупик. Вы не можете решить эту проблему с помощью драйвера, который представляет собой CrossFire и достигает конца, если это веревка.
Это возможно только в том случае, если вы выбросите 1 и 2.
Я понимаю, почему вы считаете, что 1 и 2 важны, но они не так важны. и, в конце концов, разработчики обычно предпочитают решение, которое дает им контроль над тем, где оно не работает по умолчанию и не имеет возможности его исправить.
для этого требуется специально разработанный аппаратный декодер, разработанный на чипе AI на mobo только для этой задачи на наборе микросхем mobo, а затем для его правильной работы на чипе plx, чтобы он работал, принудительно разделяя экран на уровне аппаратного драйвера/BIOS или отрисовывая шахматную доску. для более чем 2 графических процессоров скажем, 4 графических процессора для четырехъядерного рендеринга вверх, вниз, влево, вправо, например, 4 3050s или 6600xts, поскольку ЦП также должен поддерживать в наборе инструкций кода ЦП, а также аля avx 512x2 или avx 512x4, чтобы он работал правильно здесь, как ЦП является узким местом при работе от 2 до 4 графических процессоров на скоростях x8 или x16, если у них достаточно мощности для центрального процессора мобильного устройства и графических процессоров от блока питания, поскольку производители блоков питания сейчас производят специализированные кабели для мобильных устройств PCI-e 5.0.
БургерандЧипс66
Почетный
Есть ли лучший список в Интернете?
Я имею в виду не поддержку Crossfire или SLI, а поддержку m-GPU DX12/Vulkan.
Насколько я знаю, в настоящее время есть: -
<р>7. Gears of War 4<р>8. Снайперская элита 4
Производительность выше, чем в режиме Crossfire DX11.
Призрак Джона Бонэма
Рассудительный
вам нужно будет найти список текущих игр DX12. затем проверьте их по одному, чтобы узнать, поддерживают ли они опцию с несколькими графическими процессорами.
Google творит чудеса
БургерандЧипс66
Почетный
После некоторых исследований я обновил список.
Если кто-то знает что-то, что я пропустил, пожалуйста, прокомментируйте.
РобКрезз
Титан
БургерандЧипс66
Почетный
Да, некоторые из перечисленных игр все еще ожидают исправления для включения этой функции.
Я разместил ссылки под каждым из мест, где я читал о внедрении или предстоящем внедрении.
Ashes Of The Singularity, Deus Ex: Mankind Divided, Rise of the Tomb Raider — уже работают с m-GPU. Я лично тестировал AOTS и Deus Ex, обе работают очень хорошо. Сам еще не тестировал Rise of the Tomb Raider, хотя на YouTube есть пара видео об этом.
Total War: Warhammer — DX12 m-GPU уже доступен в бета-версии, см. ссылку выше.
Civilization VI — похоже, патч только что вышел, однако мне еще предстоит протестировать его с явным m-GPU.
EDIT: Gears of War «Ultimate Edition» теперь удален из списка, так как m-GPU все еще не был исправлен, когда я последний раз тестировал его.
Полный бак
Почетный
похоже, что вы совсем запутались в этих статьях, они все, на самом деле про SLI и Crossfire в DX12, а не про разные gpu, сложенные вместе, тем более, что уже прошло 2 года и вы уже скорее всего разобрались, что единственное игра с другой поддержкой gpu это Ashes of the Singularity, однако эта информация все равно будет полезна другим людям, которые будут читать мой комментарий, повторюсь - единственная игра на данный момент это Ashes of the Singularity.
Звездный лорд
Я понимаю, что на данный момент нам уже давно все равно, но поскольку кто-то в последний раз отвечал в 2019 году. Я просто укажу, что, хотя Microsoft и игровые сайты рекламировали возможности сопоставления графических процессоров DX12 любого производителя, включая Intel, это вполне реальная возможность DX12, и я предполагаю, что Vulkan. это то, что все считают Explicit Multi-GPU правильным, но помните, что SLI/Crossfire (AKA AFR (асинхронный рендеринг кадров)) также классифицируется как форма явного Multi-GPU. Например. Разработчики сами решают, как они хотят использовать несколько графических процессоров, и вы можете быть уверены, что производители не хотят, чтобы у вас было 2 или 4 графических процессора, работающих с мощностью, в 2 или 4 раза превышающей мощность графического процессора. не тогда, когда они могут заработать больше денег, продавая вам дополнительную карту по полной цене, за 25% (в лучшем случае). Если вы купите две карты RTX сейчас, вам не нужно будет покупать еще одну карту до конца поколения API DX12. они этого не хотят. именно поэтому Nvidia быстро убила SFR SLI. Они сказали, что это было сложно, но они видели, что люди не так часто покупают карты.
Начало темы | Похожие темы | Форум | Ответы | Дата | tr>
---|---|---|---|---|
Question 1080TI запускает игры с плохой частотой кадров | Графические карты | 1 | Понедельник в 20:15 | < /tr>|
Question Сбой игр на Unreal Engine | Графические карты | 1 | Воскресенье в 16:00 | tr>|
Вопрос Случайный сбой игры при нагрузке | Видеокарты | 7 | Воскресенье в 15:48 | < /tr>|
B | Вопрос GTX 970 ПРОПУСКАЕТ ВИДЕО ВО ВРЕМЯ ИГР | Графические карты | 2 | Суббота в 00:40 |
Вопрос: Компьютер перезагружается во время игры | Видеокарты | 4 | Пятница в 19:37 | |
M | Вопрос о высоких температурах на RTX 2070 Super, несмотря на пониженное разрешение | Графические карты | 4 | 17 марта 2022 г. |
U | Вопрос Черный экран DisplayPort af обновление графического процессора ? | Графические карты | 0 | 16 марта 2022 г. |
L | Вопрос о низком использовании графического процессора в игре RTX 3060 Ti ТОЛЬКО после обновления графического процессора | Графические карты | 42 | 16 марта 2022 г. | < /tr>
S | Контрольная точка вопроса vulkan/dx11 | Графические карты | 1 | 7 ноября 2021 г. |
A | Вопрос о размытости Vulkan и DX12 в RTX 3060 | Графические карты | 4 | 8 мая 2021 г. |
ПОПУЛЯРНЫЕ ТРЕКИ
- Инициировано Super_Tramp
- Сегодня в 1:02
- Ответов: 3
- Инициатор TinyPaula
- Вчера в 22:47
- Ответов: 6
- Инициатор Надха
- Сегодня в 1:41
- Ответов: 1
- Инициатор MountKiji
- Сегодня в 3:01
- Ответов: 0
- Инициировано Josee29
- Сегодня в 2:32
- Ответов: 1
- Инициировано Гаеном
- Сегодня в 00:23
- Ответов: 3
- Инициировано adrncx
- Вчера в 22:08
- Ответов: 9
Последние сообщения
- Последнее: историческая достоверность
- 9 минут назад
Модераторы онлайн
Поделиться этой страницей
Tom's Hardware является частью Future plc, международной медиа-группы и ведущего цифрового издателя. Посетите наш корпоративный сайт.
© Future Publishing Limited Quay House, Амбери, Бат BA1 1UA.
Все права защищены. Регистрационный номер компании в Англии и Уэльсе 2008885.
Tom's Hardware является частью Future plc, международной медиа-группы и ведущего цифрового издателя. Посетите наш корпоративный сайт.
© Future Publishing Limited Quay House, Амбери, Бат BA1 1UA. Все права защищены. Регистрационный номер компании в Англии и Уэльсе 2008885.
Хотя Конференция разработчиков игр 2020 года была отложена, это, к счастью, не означает, что все, что связано с играми этой весной, также было отложено. Как говорится, шоу должно продолжаться, и на этой неделе мы видели, как Microsoft, Sony и другие компании сделали несколько громких объявлений о своих игровых консолях и других проектах. Чтобы не остаться в стороне, мы также сообщаем о новостях, связанных с ПК.
Лидером пакета для ПК на этой неделе стала Microsoft (снова) с анонсом DirectX 12 Ultimate. DirectX 12 Ultimate, разработанный как новый стандартизированный набор функций DirectX 12, который включает в себя новейшие технологии графических процессоров, предназначен для использования в качестве общей основы как для разработки игр для ПК, так и для Xbox Series X. Это включает в себя не только объединение таких функций, как трассировка лучей и затенение с переменной скоростью, в единый пакет, но и брендирование этого пакета, чтобы разработчикам и широкой публике было легче сделать вывод о том, используют ли игры эти передовые функции и используют ли их аппаратное обеспечение. поддерживает это. И, конечно же, это позволяет Microsoft максимизировать синергию между компьютерными играми и готовящейся к выпуску консолью, предоставляя разработчикам единый набор функций для создания своих проектов, одновременно продвигая тот факт, что последняя версия Xbox будет поддерживать самые последние функции графического процессора.
Безусловно, то, что анонсируется сегодня, не является новым API — даже обсуждаемые сегодня функции технически не новы — это, скорее, недавно определенный набор функций, который включает в себя несколько функций, которые Microsoft и ее партнеры уже разработали. работающие в течение последних нескольких лет. Это включает в себя DirectX Raytracing, Variable Rate Shading, Mesh Shaders и Sampler Feedback. Большинство из этих функций какое-то время были доступны в той или иной форме как отдельные функции в составе DirectX 12, но создание DirectX 12 Ultimate знаменует собой их официальное продвижение от статуса находящегося в разработке или раннего адаптера до готовности для широких масс.< /p>
Для Microsoft важность DirectX 12 Ultimate двояка. Во-первых, DirectX накопил много новых функций с тех пор, как его последний набор функций, уровень функций 12_1, был определен более пятидесяти лет назад. Таким образом, DirectX уже давно пора упаковать функции, представленные такими вещами, как архитектура графического процессора NVIDIA Turing, а также будущая архитектура AMD RDNA2. Конечным результатом этого процесса является новый уровень функций 12_2, или, как его называют, DirectX 12 Ultimate.
Во-вторых, это первый запуск консоли Microsoft, в котором DirectX 12 уже готов и доступен при запуске. Хотя Microsoft всегда пыталась воспользоваться синергией между ПК и консолью, тот факт, что DirectX 12 был окончательно доработан после запуска семейства Xbox One, означал, что предыдущее поколение было несколько смещено. Подобно тому, как консоли текущего поколения являются истинной отправной точкой для DirectX 11, становящегося основой для разработки видеоигр, Microsoft стремится сделать то же самое для консолей следующего поколения и DirectX 12; и они пытаются сделать это более организованно, чем когда-либо прежде.
Конечно, это не мешает Microsoft говорить о том, что Xbox Series X находится на том же уровне, что и (нынешние) графические процессоры для ПК. Долгий жизненный цикл консолей означает, что к среднему поколению они уступают графическим процессорам ПК по набору функций, и хотя эти два продукта не являются идеальной заменой друг друга в экономическом смысле, становится на одну вещь меньше, чем у игровых консолей. для себя, и еще одно преимущество для ПК. Таким образом, предоставив новый уровень функций публичному бренду, Microsoft может четко заявить, что они находятся на переднем крае периода технологии графических процессоров; нет графического процессора для ПК, который мог бы превзойти их по возможностям.
Ясность — это важная цель не только для маркетинга, но и для отношений с клиентами в целом. Функции, объединенные под баннером DirectX 12 Ultimate, имеют большое значение, и, в частности, сетчатые шейдеры позволяют разработчикам полностью изменить традиционный конвейер рендеринга. Поэтому, когда разработчики начнут использовать эти функции в качестве базовой линии в будущих играх — а это, скорее всего, произойдет через какое-то время — тогда требования должны быть четко доведены до сведения геймеров на ПК. Видеокарте будет недостаточно просто поддерживать DirectX 12, она должна будет поддерживать (как минимум) этот новый набор функций, чтобы соответствовать этому базовому уровню. Но даже в настоящее время, когда игры будут продолжать работать на нескольких поколениях графических процессоров в течение некоторого времени, брендинг DirectX 12 Ultimate полезен для четкого объяснения того, какое оборудование потребуется для доступа к новым функциям, которые будут доступны в будущих играх. используя.
Возможности DirectX 12 Ultimate (уровень функций DX12 12_2)
Что касается самого нового уровня функций, как я уже упоминал ранее, новый набор функций предназначен для инкапсуляции новых функций графического процессора, представленных за последние несколько лет. Это означает объединение существующих функций, таких как трассировка лучей и шейдеры сетки, в новый уровень функций, чтобы разработчики могли с большей готовностью использовать их.
В общем и целом, к большому удовольствию NVIDIA, набор функций DirectX 12 Ultimate в конечном итоге чертовски похож на набор графических функций их архитектуры Turing. Трассировка лучей, затенение сетки и затенение с переменной скоростью были впервые представлены в Turing, и это представляет собой текущий передний край графических функций графического процессора. Следовательно, нет никакой ошибки в том, что этот новый уровень функций, который Microsoft внутри компании называет 12_2, так близко следует плану Тьюринга. Уровни функций — результат сотрудничества между корпорацией Майкрософт и всеми поставщиками графических процессоров. Уровни функций представляют собой общий набор функций, которые каждый может согласиться поддерживать.
В конечном счете, это сотрудничество и сроки означают, что уже существует аппаратное обеспечение текущего поколения, отвечающее требованиям 12_2 с продуктами NVIDIA серии GeForce 16 и 20 (Turing). И хотя AMD и Intel немного отстают от кривой, они тоже доберутся туда. На самом деле во многих отношениях грядущая архитектура AMD RDNA2, которая была в центре анонсов консолей на этой неделе, будет служить противовесом Turing в том, что касается 12_2. Это набор функций, который подходит для ПК и консолей, и хотя NVIDIA может доминировать на рынке ПК, то, что AMD делает с RDNA2, определяет целое поколение консолей на долгие годы.
В целом Microsoft и партнеры уделяют основное внимание четырем важным функциям 12_2, по крайней мере публично. Это трассировка лучей, затенение с переменной скоростью, сеточные шейдеры и обратная связь сэмплера. Некоторые из этих функций, в частности трассировка лучей, уже некоторое время доступны в DirectX 12, и все они были ранее анонсированы Microsoft, поскольку они работали с разработчиками над их усовершенствованием. Тем не менее, даже трассировка лучей получает некоторые важные обновления функций, совпадающие с 12_2, поэтому в целом новый уровень функций приносит много новых игрушек для разработчиков игр.
Что касается геймеров, Windows представит 12_2 в ближайшие пару месяцев, когда Microsoft выпустит свое следующее большое обновление функций Windows 10, Windows 10 версии 2004 (также известную как 20H1). И хотя игры, использующие новый уровень функций, будут появляться медленно (как и любой запуск нового уровня функций), это означает, что геймерам нужно будет использовать последнюю версию Windows, чтобы использовать ее. Задержка версии или двух (как некоторые из нас хотят сделать) означает, что вам не нужен DX12U.
Трассировка лучей с помощью DXR 1.1
Начиная с уровня функций 12_2 — поддержка трассировки лучей. Компонент трассировки лучей DX12 был впервые представлен Microsoft еще в 2018 году и уже некоторое время доступен для использования разработчиками. Я не буду подробно рассказывать здесь о трассировке лучей — мы уже писали об этом несколько раз, — но на высоком уровне она сыграет важную роль в будущих играх. По сути, имитируя то, как реальный свет проецируется и взаимодействует с миром, трассировка лучей предназначена для использования в областях, где текущая парадигма рендеринга растеризации была растянута до предела. Разработчики смогли сделать массу удивительных вещей для освещения с помощью невероятно умных приемов растеризации, но есть некоторые области, где качество или производительность фактического отбрасывания света (лучей) просто непревзойденны. И здесь на помощь приходит аппаратная трассировка лучей.
Схема трассировки лучей (Хенрик / CC BY-SA 4.0)
Несмотря на то, что официально это был полный стандарт, первоначальный стандарт 1.0 носил экспериментальный характер. По самой своей природе он был разработан для аппаратного обеспечения того времени (Тьюринг), и никто не был полностью уверен, что разработчики будут делать с трассировкой лучей. Таким образом, для включения трассировки лучей в полный уровень функций DirectX сам API трассировки лучей кажется несколько улучшенным.
Новый стандарт DXR 1.1 расширяет версию 1.0 несколькими способами, включая новые функции, о которых разработчики просили за последние пару лет. И поскольку он состоит только из новых программных функций, это означает, что он работает и на существующем оборудовании Turing. Так что на практике DXR 1.1 заменит DXR 1.0 в будущем, и никто, кроме разработчиков, не должен быть мудрее.
Большие дополнения к DXR 1.1 в первую очередь направлены на то, чтобы разработчики могли упростить или повысить эффективность использования трассировки лучей в своих играх. Возглавляет этот список возможность запускать задачи трассировки лучей на самом графическом процессоре, не требуя для этого центрального процессора.Это то, что GPU уже может делать в других ситуациях — в частности, когда вычислительные ядра порождают другие вычислительные ядра посредством динамического параллелизма — и теперь та же концепция распространяется на трассировку лучей. Microsoft считает эту функцию полезной для сценариев, в которых графический процессор хотел бы подготовить работу по трассировке лучей, а они в любом случае сразу же порождают ее, например, шейдеры, использующие трассировку лучей в качестве средства отбраковки. Что, разумеется, выполнимо даже в DXR 1.0; но тот факт, что ЦП должен будет вызывать его, делает его менее эффективным.
Другое важное дополнение — это то, что Microsoft называет встроенной трассировкой лучей. Возможно, лучше всего концептуализированная как урезанная версия трассировки лучей для простых задач, встроенная трассировка лучей предоставляет трассировку лучей большему количеству этапов процесса рендеринга графического процессора, тем самым позволяя разработчикам получить более прямой контроль над трассировкой лучей и потенциально использовать ее в большем количестве мест. Здесь следует особо отметить, что встроенная трассировка лучей может вызываться на этапах шейдера, которые не могут вызывать обычную трассировку лучей, таких как вычислительные шейдеры, что дает разработчикам больше гибкости. В целом встроенная трассировка лучей обеспечивает меньшие накладные расходы для простых задач, что делает их более подходящими для этого сценария, в то время как традиционная трассировка лучей (и ее улучшенные механизмы планирования) лучше подходят для сложных задач.
Затенение с переменной скоростью
Вторая функция, включенная в 12_2, — затенение с переменной скоростью. Еще одна функция запуска архитектуры Turing. В прошлом году Microsoft начала включать VRS в DirectX.
На высоком уровне затенение с переменной скоростью позволяет изменять скорость операций затенения в пределах кадра. Вместо того, чтобы запускать пиксельные и другие шейдеры со скоростью 1:1 с отдельными пикселями, скорость затенения можно увеличивать или уменьшать, чтобы сосредоточиться на улучшении качества или снижении рабочей нагрузки рендеринга в определенных областях. Использование разработчиками в первую очередь будет сосредоточено на последнем из двух, а разработчики будут использовать его, чтобы сократить количество затенения, выполняемого в областях экрана, где такой уровень детализации не нужен — или, по крайней мере, вряд ли будет замечен. /p>
Затенение с переменной скоростью уже имеет два уровня, и уровень функции 12_2 будет включать второй, более мощный уровень этой функции. Уровень 2 позволяет изменять скорость затенения в вызове отрисовки, что позволяет использовать относительно детальный подход к настройке скорости затенения. Это можно сделать для каждого примитива или путем определения общих областей в кадре, где скорость должна быть скорректирована (экранное пространство).
На сегодняшний день затенение с переменной скоростью уже опционально использовалось в нескольких играх, особенно в Wolfenstein II, но в настоящее время оно не так широко распространено, как трассировка лучей.
И хотя основное использование затенения с переменной скоростью будет заключаться в повышении производительности за счет выборочного уменьшения разрешения затенения — особенно для игр с разрешением 4K, которые Microsoft хочет использовать на Xbox Series X, — эта функция также настроена на часть в VR-гарнитурах. Затенение с переменной скоростью — это основная технология рендеринга, обеспечивающая возможность рендеринга с фовеациями, что само по себе обещает значительный прирост эффективности для гарнитур виртуальной реальности. Благодаря рендерингу только центра поля зрения пользователя с полным разрешением (если не выше, для улучшения четкости) объем работы, необходимой для рендеринга VR-кадра, значительно сокращается. Это может помочь снизить затраты на виртуальную реальность за счет менее мощного оборудования или высвободить производительность для еще более привлекательных игр.
Шейдеры сетки: конвейер геометрии следующего поколения
Третья функция в списке 12_2 — шейдеры сетки. И, по правде говоря, ничто из того, что я собираюсь написать здесь, не воздаст им должное.
На очень высоком уровне затенение сетки является основой конвейеров геометрии следующего поколения. Текущая парадигма конвейера геометрии, по сути, имела новые этапы, прикрепленные к ней в нескольких точках за последние двадцать лет, с такими функциями, как геометрические шейдеры и тесселяция, добавленными для расширения конвейера. Но основная концепция этого конвейера по-прежнему основана на традиционных методах растеризации до пиксельных шейдеров, что приводит к ненужной сложности и неэффективности.
Поэтому разработчики как аппаратного, так и программного обеспечения хотят отказаться от текущего конвейера геометрии в пользу чего-то нового, и этой новой вещью являются сетчатые шейдеры.
Сетчатые шейдеры, пожалуй, лучше всего рассматривать как вычислительные шейдеры для геометрии. Значение этого заключается в том, что современные вычислительные шейдеры невероятно эффективны благодаря не только их параллелизму, но и гибкости с точки зрения того, как данные обрабатываются и маршрутизируются.По сути, вместо того, чтобы заставлять разработчиков следовать жесткому конвейеру для настройки своей геометрии, шейдеры сетки позволяют разработчикам получить почти полный контроль, чтобы делать это по своему усмотрению.
Шейдеры сетки также можно дополнительно использовать с шейдерами усиления. Я не буду вдаваться в подробности, но основной принцип заключается в том, чтобы помочь настроить данные для шейдеров сетки. Microsoft отмечает, что они особенно полезны для отбраковки, хотя это не единственное их применение.
В конечном счете цель шейдеров сетки – значительно повысить эффективность конвейера геометрии и тем самым дать разработчикам запас производительности для использования еще более детализированной геометрии. Это достигается за счет удаления накладных расходов на нескольких уровнях, а также делает практичным отсечение геометрии, останавливая геометрию до того, как она попадет в вершинный шейдер. Сетчатые шейдеры также позволяют сжимать индексный буфер с целью снижения затрат на пропускную способность памяти при использовании очень сложной геометрии.
Загвоздка во всем этом, как это часто бывает, заключается в том, как быстро разработчики могут это принять. Сетчатые шейдеры заменяют проверенный и надежный геометрический конвейер чем-то совершенно новым, а это означает, что разработчикам придется к нему привыкнуть. Это большое изменение с точки зрения разработки игр, и, следовательно, это во многом «базовая» функция. Таким образом, затенение сетки — это то, что разработчики действительно могут делать, только когда они перестраивают свои движки для консолей следующего поколения, где им больше не нужно поддерживать оборудование до 12_2.
Отзыв о пробнике
Последняя важная функция Direct X 12 Ultimate/уровня функций 12_2 — обратная связь сэмплера. Это очень новая функция, которая была раскрыта совсем недавно и до сих пор не получила широкой огласки; хотя, как и все остальное здесь, аппаратные возможности впервые появились в Тьюринге.
Ранее продемонстрированная NVIDIA как затенение в пространстве текстуры, обратная связь сэмплера — это более широкая функция, имеющая несколько различных применений. На очень высоком уровне идея обратной связи с сэмплером состоит в том, чтобы позволить игровым движкам отслеживать, как используются (или будут) сэмплеры текстур — таким образом, сэмплеры дают обратную связь движку — позволяя движку принимать более разумные решения о как используются сэмплеры и какие ресурсы хранятся в видеопамяти.
Основным вариантом использования этого, по мнению Microsoft, будет улучшение потоковой передачи текстур. Используя обратную связь сэмплера, игровые движки могут определить, какие фрагменты текстур действительно понадобятся, и, таким образом, загрузить только необходимые фрагменты. Это снижает общую нагрузку на видеопамять, что в конечном итоге позволяет разработчикам использовать текстуры более высокого качества в целом, теряя меньше видеопамяти из-за ненужных тайлов. Как и в случае с Xbox Series X, это особенно удобно, когда ваши игры хранятся на высокоскоростном твердотельном накопителе, поскольку это означает, что необходимые плитки могут быть извлечены из хранилища невероятно быстро (почти вовремя), а не необходимости размещать их в ОЗУ или принимать меры для уменьшения длительного времени доступа к жесткому диску.
Между тем, затенение текстурного пространства является другим важным применением этой функции. Другой эффективный метод, затенение в пространстве текстуры, позволяет затенять объект без его фактической растеризации. Пример Microsoft здесь включает освещение — когда освещение объекта рассчитывается один раз, а не многократно, как требуется для растеризованного объекта. В конечном счете, основная идея этой функции заключается в том, чтобы иметь возможность кэшировать и повторно использовать результаты затенения, освобождая ресурсы графического процессора для других, более важных задач.
Читайте также: