Управление выбором DirectX

Обновлено: 03.07.2024

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

Control, научно-фантастический шутер Remedy 2019 года, бросающий вызов физике, по-прежнему остается одной из самых красивых игр поколения. Исходя из родословной разработчиков, в которую входят Max Payne, Alan Wake и, гм, Quantum Break, Control — это освежающе странный взгляд на старую беги и стреляй. Если вы воспользуетесь возможностью сыграть или переиграть игру, получившую награду «Лучший сеттинг» в 2019 году, вот как получить от нее максимальную отдачу.

В качестве нашего партнера для детального анализа производительности компания MSI предоставила нам оборудование, необходимое для тестирования Control на множестве различных графических процессоров AMD и Nvidia, нескольких процессорах и нескольких ноутбуках. Полную информацию см. ниже вместе с нашим анализом производительности. 101 статья. Спасибо, MSI!

Примечательно, что в Control по-прежнему наиболее полно реализована технология трассировки лучей Nvidia. Рассеянное освещение, теневые эффекты, а также сплошные и прозрачные отражения — все это подвергается обработке DXR с обычной загвоздкой в ​​том, что их включение сильно повлияет на общую производительность. DLSS может помочь вернуть скорость, но бенчмаркинг показывает, что Control действительно очень требовательная игра — даже на высокопроизводительных графических процессорах, которые в первую очередь совместимы с DLSS.

Но сначала давайте посмотрим, что предлагает версия Control для ПК.

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

Отсутствие поддержки модов было досадным, но неудивительным, а регулируемый угол обзора стал единственным настоящим разочарованием. Тем не менее, 21:9 хорошо работает без настроек — предварительно обработанные кат-сцены воспроизводятся в формате 16:9 с черными полосами по бокам, но все в игре будет работать нормально, включая более частые кат-сцены в реальном времени. Двойное разрешение (32:9 и 32:10), а также настройки с тремя мониторами не поддерживаются (наше разрешение 3840 x 1080 не отображалось в игре).

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

Также доступна поддержка DLSS от Nvidia, и она в основном требуется, если вам нужна хорошая частота кадров с трассировкой лучей на многих картах RTX. С DLSS вы можете установить разрешение рендеринга либо на 0,66 целевого разрешения, либо на половину целевого разрешения (последнее приводит к более высокой производительности, но немного большему размытию). DLSS также отключает MSAA, что имеет смысл.

Требования к системе управления

Изначально возникла путаница с системными требованиями Control, поскольку в списке Epic Store были довольно высокие минимальные требования (например, процессор Intel Core i5-7500 и видеокарта GTX 1060). Совсем недавно Remedy урегулировала ситуацию с официальными обновленными требованиями, которые заключаются в следующем:

Минимум:

  • ЦП: Intel Core i5-4690/AMD FX-4350
  • Графический процессор: Nvidia GeForce GTX 780 / AMD Radeon R9 280X
  • Оперативная память: 8 ГБ
  • ОС: Windows 7, 64-разрядная версия.
  • DirectX: DX11

Рекомендуется:

  • ЦП: Intel Core i5-7600K / AMD Ryzen 5 1600X
  • Графический процессор: Nvidia GeForce GTX 1660/1060 / AMD Radeon RX 580
  • Графический процессор с трассировкой лучей: Nvidia GeForce RTX 2060
  • ОЗУ: 16 ГБ
  • ОС: Windows 10, 64-разрядная версия.
  • DirectX: DX12

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

Основные жесткие ограничения, которые следует учитывать, относятся к таким вещам, как трассировка лучей и DLSS: для включения последнего требуется графический процессор Nvidia RTX, а также, по сути, он необходим для эффектов DXR. Получение даже 30 кадров в секунду с трассировкой лучей на средних настройках оказалось выше, чем у старых карт серии GTX 10, если только вы не упадете до 720p. Кроме того, режим DXR вызывал частые сбои на наших GTX 1070, 1080 и 1080 Ti, до такой степени, что мы не могли завершить нашу последовательность тестов. Просто оставьте, если выключено, по сути.

В противном случае приятно видеть поддержку Windows 7 (очевидно, только DX11), и если вы используете Windows 10, вы можете выбрать запуск в DX11 или DX12, если только ваша видеокарта не имеет менее 4 ГБ памяти, в которой если вы застряли с DX11. DX11, кажется, работает немного лучше на графических процессорах Nvidia, очевидно, за счет некоторых графических функций, но будьте осторожны, если у вас есть карта AMD: по какой-то причине Control (по крайней мере, в Epic Store) запускается в DX11 по умолчанию. Чтобы использовать DX12, вы должны запустить исполняемый файл DX12 в файлах игры.

Обзор настроек управления

Контроль достаточно хорошо охватывает основы настройки графических настроек, даже если акцент делается на «основной» части. Например, из 11 отдельных настроек одна — это опция сглаживания — хорошо, — но она предназначена только для выбора одного из двух уровней MSAA или полного ее отключения. Здесь нет TSAA или FXAA, так что это ваш единственный инструмент для сглаживания краев, если только у вас нет карты Nvidia с поддержкой DLSS.

Тем не менее, есть приличный объем, с которым можно поиграться, или вы можете просто выбрать один из трех предустановленных параметров: низкий, средний и высокий. Предустановки — довольно грубый инструмент, если вы просто хотите максимизировать количество кадров: использование GTX 1070, переключение с высокой на среднюю повысило среднюю производительность на 32 %, а переключение с высокой на низкую — на 106 %.

Однако лучше вносить небольшие корректировки, так как предустановки могут снизить качество отдельных настроек, которые не обязательно нужно обрезать. Детализация дальних объектов (LOD), разрешение текстур (которое, как ни странно, является единственным с настройкой «ультра»), разрешение теней, фильтрация теней и параметры зернистости пленки, как правило, оказывают незначительное влияние на производительность, даже при снижении от от самых высоких до самых низких настроек, так что вы можете оставить все это включенным.

Похожим образом, отказ от SSAO и фильтрации текстур не сильно улучшит производительность. Я определенно рекомендую оставить SSAO включенным в любом случае, так как его отключение делает освещение более плоским и менее атмосферным.

В других случаях приглушение объемного освещения может повысить производительность на 20 %, не нарушая атмосферы игры. Другие большие потери — это качество отражений на экране, глобальные отражения и MSAA. Те, кто не может использовать DLSS, должны, по крайней мере, оставить MSAA на среднем значении 2x для защиты от неровных краев, а глобальные отражения в идеале должны быть удалены до отражений в пространстве экрана. Помимо того, что отражения на экране оказывают меньшее влияние, они могут многое добавить к сцене: я заметил, что при выключении лужи, которые раньше отражали декорации и эффекты, становились практически невидимыми.


DirectX 12 дебютировал два года назад, обещая значительное повышение производительности и эффективности по всем направлениям. Это включает в себя более эффективное использование ЦП, более близкий доступ к металлу, а также множество новых функций, в первую очередь трассировку лучей или DXR (DirectX Ray-tracing). Но что такое DirectX 12 и чем он отличается от DirectX 11. Давайте посмотрим.

Что такое DirectX: это API

Подобно Vulkan и OpenGL, DirectX — это API, позволяющий запускать видеоигры на компьютере. Однако, в отличие от своих аналогов, DX является проприетарной платформой Microsoft и изначально работает только в Windows. С другой стороны, OpenGL и Vulkan работают как на Mac, так и на Linux.

Что делает графический API, такой как DirectX? Он действует как промежуточное звено между игровым движком и графическими драйверами, которые, в свою очередь, взаимодействуют с ядром ОС. Графический API — это платформа, на которой разрабатываются реальный дизайн и механика игры. Думайте об этом как о MS Paint, где игра — это рисование, а приложение для рисования — это API. Однако, в отличие от Paint, программа вывода графического API доступна для чтения только API, используемому для ее разработки. Как правило, API предназначен для конкретной ОС. Вот почему игры для PS4 не работают на Xbox One и наоборот.

DirectX 12 Ultimate — первый графический API, нарушающий это правило. Он будет использоваться как на Windows, так и на Xbox Series X следующего поколения. С помощью DX12 Ultimate MS фактически интегрирует две платформы.

DirectX 11 и DirectX 12: что это значит для геймеров на ПК

Есть три основных преимущества API DirectX 12 для геймеров на ПК:

Лучшее масштабирование с многоядерными процессорами


Одним из основных преимуществ низкоуровневых API, таких как DirectX 12 и Vulkan, является более эффективное использование ЦП. Традиционно с играми на основе DirectX 9 и 11 большинство игр использовали только 2-4 ядра для различных механик: физики, ИИ, вызовов отрисовки и т. д. Некоторые игры даже ограничивались одним.С DirectX 12 все изменилось. Нагрузка более равномерно распределяется между всеми ядрами, что делает многоядерные процессоры более актуальными для геймеров.

Максимальное использование оборудования


Многие из вас могли заметить, что вначале графические процессоры AMD отдавали предпочтение играм с DirectX 12 больше, чем конкурирующим компонентам NVIDIA. Почему это?

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

Ближе к металлической поддержке

Еще одно важное преимущество DirectX 12 заключается в том, что разработчики имеют больший контроль над тем, как их игра использует аппаратное обеспечение. Раньше это было более абстрактно и в основном заботилось о драйверах и API (хотя некоторые движки, такие как Frostbyte и Unreal, также предоставляли низкоуровневые инструменты).


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

Это палка о двух концах, так как в дикой природе существует несколько архитектур графических процессоров, и независимые разработчики не могут оптимизировать свою игру для всех них. К счастью, сторонние движки, такие как Unreal, CryEngine и Unity, делают это за них, и им нужно сосредоточиться только на дизайне.

Как DirectX 12 повышает производительность за счет оптимизации использования оборудования

Опять же, есть несколько основных усовершенствований API, которые способствуют этому:

Контекст API для каждого вызова

Как и любое приложение, графические API, такие как DirectX, также имеют основной поток, который отслеживает внутреннее состояние API (ресурсы, их распределение и доступность). В DirectX 9 и 11 есть глобальное состояние (или контекст). Игры, которые вы запускаете на своем ПК, изменяют это состояние с помощью вызовов отрисовки в API, после чего оно передается графическому процессору для выполнения. Поскольку существует одно глобальное состояние/контекст (и один основной поток, в котором он выполняется), это затрудняет многопоточность, поскольку несколько одновременных вызовов отрисовки могут вызвать ошибки. Кроме того, изменение глобального состояния с помощью вызовов состояния является относительно более медленным процессом, что еще больше усложняет весь процесс.


В DirectX 12 вызовы отрисовки стали более гибкими. Вместо единого глобального состояния (контекста) каждый вызов отрисовки из приложения имеет собственное меньшее состояние (дополнительные сведения см. в PSO ниже). Эти вызовы отрисовки содержат необходимые данные и связанные с ними указатели внутри и не зависят от других вызовов и их состояний. Это позволяет использовать несколько потоков для разных вызовов отрисовки.

Объекты состояния конвейера

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

< бр />

Каждый из объектов в DirectX 11 должен быть определен отдельно (во время выполнения), а следующее состояние не может быть выполнено до тех пор, пока не будет завершено предыдущее, поскольку для них требуются разные аппаратные устройства (шейдеры и ROP, TMU и т. д.) . Это приводит к недостаточному использованию оборудования, что приводит к увеличению накладных расходов и сокращению числа вызовов отрисовки.

В приведенном выше сравнении аппаратное состояние 1 представляет код шейдера, а 2 — комбинацию растеризатора и потока управления, связывающего растеризатор с шейдерами. Состояние 3 — это связь между наложением и пиксельным шейдером. Вершинный шейдер влияет на состояния аппаратного обеспечения 1 и 2, состояние растеризатора 2, состояния пиксельного шейдера 1-3 и так далее. Как уже объяснялось в предыдущем разделе, это приводит к дополнительной нагрузке на ЦП, поскольку драйвер обычно предпочитает дождаться разрешения зависимостей.

DirectX 12 заменяет различные состояния объектами состояния конвейера (PSO), которые завершаются при самом создании.Простыми словами PSO — это объект, описывающий состояние вызова отрисовки, который он представляет. Приложение может создавать столько PSO, сколько требуется, и может переключаться между ними по мере необходимости. Эти PSO включают байт-код для всех шейдеров, включая вершинный, пиксельный, доменный, корпусный и геометрический шейдеры, и могут быть преобразованы в любое состояние в соответствии с требованиями, независимо от какого-либо другого объекта или состояния.


< бр />

В новейших графических процессорах NVIDIA и AMD с помощью DirectX 12 представлены шейдеры задач и шейдеры сетки. Эти два новых шейдера заменяют различные громоздкие этапы шейдеров, используемые в конвейере DX11, для более гибкого подхода.

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

В приведенной ниже сцене есть тысячи объекты, которые необходимо отобразить. В традиционной модели для каждого из них потребовался бы уникальный вызов отрисовки от ЦП. Однако с помощью шейдера задач список объектов отправляется с помощью одного вызова отрисовки. Затем шейдер задач обрабатывает этот список параллельно и назначает работу шейдеру сетки (который также работает синхронно), после чего сцена отправляется в растеризатор для преобразования 3D в 2D.

Этот подход помогает уменьшить количество вызовов отрисовки ЦП на сцену значительно, тем самым повышая уровень детализации.

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

NVIDIA Mesh Shaders и Hull Shaders также используют DX12


Усиление изображения шейдер

Очередь команд

В DirectX 11 к графическому процессору направляется только одна очередь. Это приводит к неравномерному распределению нагрузки между различными ядрами ЦП, что существенно снижает эффективность многопоточных ЦП.

Читайте также: