Directx 11 когда вышел

Обновлено: 03.07.2024

Microsoft DirectX 11 – это графическая технология, которая поддерживает все современные популярные игры. В предпоследней версии используется поверхностное подразделение для обеспечения более реалистичного отображения геометрических деталей.

Для чего нужен DirectX 11

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

Невзирая на то, что на данный момент уже используется DX12, предыдущая версия данной технологии всё ещё остается актуальной. Директ Икс 11 поддерживает операционные системы: от Windows Vista SP2 до Windows 10. DX 12 будет активирован лишь в том случае, если на компьютере используется Windows 10.

Как пользоваться программой DirectX 11

Для того чтобы Директ Икс 11 полноценно работал, пользователю не нужно производить каких-либо действий. Для использования этого API потребуется:

  • 1. Наличие операционной системы не ниже Windows Vista Service Pack 2.
  • 2. Видеокарта не ниже GeForce GTX 400-й серии, или видеокарта от AMD Radeon HD 5000-й серии и выше.
  • 3. Установленная программа Директ Икс 11.
  • 4. Самые свежие драйвера для видео ускорителя. Драйвера лучше скачивать с официального сайта производителя видеокарт.

Преимущества DirectX 11

В DirectX 11 тесселяция и замена текстур, наконец, идеально интегрированы, и разработчики современных игр начали приспосабливаться к этой тенденции. В самых первых играх, в которых появилась поддержка DX 11, создавались плавные модели с помощью тесселяции, и разработчики, такие как Valve и id Software, предусмотрели применение этих технологий к своим существующим игровым персонажам. Графика с использованием технологии бывает настолько реалистичной, что её порой очень сложно отличить от реального видео.

В DirectX 11 тесселяция и замена текстур, наконец, идеально интегрированы, и разработчики современных игр начали приспосабливаться к этой тенденции. В самых первых играх, в которых появилась поддержка Директ Икс 11, создавались плавные модели с помощью тесселяции, и разработчики, такие как Valve и id Software, предусмотрели применение этих технологий к своим существующим игровым персонажам. Графика с использованием технологии DX 11 бывает настолько реалистичной, что её порой очень сложно отличить от реального видео.

Что такое тесселяция? Видео

directx 11 в Rage 2

Тесселяция видео Вывод: Сильно улучшает картинку, добавляет моделям объема в играх и при этом слабо нагружает видеокарту по этому можно смело включать ее в настройках видео. Падения фпс практически отсутствуют, конечно все зависит от конкретной игры. Пример Директ Икс 11 в Rage 2

Процесс установки Директ Икс 11

directx 11 Веб установщик

directx 11 установка

Чтобы установить Директ Икс 11 на компьютер, можно использовать два варианта установки:

Microsoft DirectX - это набор интерфейсов прикладного программирования (API) для обработки задач, связанных с мультимедиа , особенно с программированием игр и видео, на платформах Microsoft . Первоначально все названия этих API-интерфейсов начинались с «Direct», например Direct3D , DirectDraw , DirectMusic , DirectPlay , DirectSound и т. Д. Название DirectX было придумано как сокращенное обозначение для всех этих API ( X заменяет конкретные имена API) и вскоре стало названием коллекции. Когда Microsoft позже решила разработать игровую консоль, X использовался в качестве основы для названия Xbox, чтобы указать, что консоль основана на технологии DirectX. Первоначальный X был перенесен в именование API-интерфейсов, разработанных для Xbox, таких как XInput и Cross- Platform Audio Creation Tool (XACT), в то время как шаблон DirectX был продолжен для API-интерфейсов Windows, таких как Direct2D и DirectWrite .

Direct3D (API трехмерной графики в DirectX) широко используется при разработке видеоигр для Microsoft Windows и линейки консолей Xbox . Direct3D также используется другими программными приложениями для задач визуализации и графики, таких как проектирование CAD / CAM. Поскольку Direct3D является наиболее широко разрекламированным компонентом DirectX, часто встречаются взаимозаменяемые названия «DirectX» и «Direct3D».

Комплект разработки программного обеспечения DirectX (SDK) состоит из библиотек времени выполнения в распространяемой двоичной форме, а также сопроводительной документации и заголовков для использования при кодировании. Первоначально среды выполнения устанавливались только играми или явно пользователем. Windows 95 не запускалась с DirectX, но DirectX был включен в Windows 95 OEM Service Release 2. Windows 98 и Windows NT 4.0 поставлялись с DirectX, как и все версии Windows, выпущенные с тех пор. SDK доступен для бесплатной загрузки. Хотя среды выполнения являются проприетарным программным обеспечением с закрытым исходным кодом, исходный код предоставляется для большинства образцов SDK. Начиная с выпуска Windows 8 Developer Preview, DirectX SDK был интегрирован в Windows SDK.

СОДЕРЖАНИЕ

История развития

В конце 1994 года Microsoft была готова выпустить Windows 95 , свою следующую операционную систему . Важным фактором, определяющим ценность, которую будут придавать потребители, были программы, которые на нем можно было бы запускать. Сотрудник Microsoft Алекс Сент-Джон обсуждал с различными разработчиками игр, какова вероятность того, что они перенесут свои игры MS-DOS в Windows 95, и нашел ответы в основном отрицательными; программисты сочли, что среда Windows более трудна для разработки по сравнению с MS-DOS или другими игровыми платформами. Также были сильные опасения по поводу совместимости; Примечательным примером этого является «Анимированная книга рассказов Диснея: Король Лев», основанная на программном интерфейсе WinG . Из-за множества несовместимых графических драйверов от новых компьютеров Compaq , которые не тестировались с интерфейсом WinG, поставляемым вместе с игрой, он так часто вылетал на многих настольных компьютерах, что родители переполняли службы поддержки Disney .

Сент-Джон осознал, что сопротивление разработке игр под Windows будет ограничением, и нанял еще двух инженеров, Крейга Эйслера и Эрика Энгстрома , чтобы разработать лучшее решение, которое позволит большему количеству программистов разрабатывать игры для Windows. Проект получил кодовое название «Манхэттенский проект», поскольку в отношении одноименного проекта времен Второй мировой войны идея заключалась в замене разработанных в Японии игровых консолей персональными компьютерами под управлением операционной системы Microsoft. Первоначально он использовал символ радиации в качестве своего логотипа, но Microsoft попросила команду изменить логотип. Руководство не согласилось с проектом, поскольку они уже списали Windows как игровую платформу, но все трое взяли на себя обязательства по развитию этого проекта. Их бунтарский характер привел к тому, что Брэд Сильверберг , старший вице-президент по офисным продуктам Microsoft, назвал трио «Beastie Boys».

Большая часть работы этих троих была проделана среди других назначенных проектов, начиная с конца 1994 года. В течение четырех месяцев и при участии нескольких производителей оборудования команда разработала первый набор интерфейсов прикладного программирования (API), который они представили на конференции. 1995 Конференция разработчиков игр . В SDK входили такие библиотеки, как DirectDraw для графических программ, DirectSound для аудио и DirectPlay для сетевых коммуникаций. «Прямая» часть библиотеки была названа, поскольку эти процедуры обычно обходили основные процедуры Windows 95 и напрямую обращались к аппаратному обеспечению компьютера. Хотя команда назвала его «Game SDK» ( комплект для разработки программного обеспечения ), имя «DirectX» пришло от одного журналиста, который высмеивал схему именования различных библиотек. Команда решила продолжить использовать эту схему именования и назвать проект DirectX.

Первая версия DirectX была выпущена в сентябре 1995 года как Windows Games SDK. Это была замена Win32 для API DCI и WinG для Windows 3.1 . DirectX позволял всем версиям Microsoft Windows, начиная с Windows 95, включать высокопроизводительные мультимедиа. Эйслер написал в своем блоге об безумном стремлении создать DirectX 1–5.

Чтобы получить больше разработчиков на борту DirectX, Microsoft подошел ID Software «s Джон Кармак и предложил порт Гибели и Doom 2 из MS-DOS в DirectX, бесплатно, с идентификатором сохраняя все издательские права на игру. Кармак согласился, и Гейб Ньюэлл из Microsoft возглавил проект по переносу. Первая игра была выпущена как Doom 95 в августе 1996 года, первая опубликованная игра DirectX. Microsoft активно продвигала игру, и Билл Гейтс появлялся в рекламе этой игры.

DirectX 2.0 стал компонентом самой Windows с выпуском Windows 95 OSR2 и Windows NT 4.0 в середине 1996 года. Поскольку сама Windows 95 была еще новой и для нее было выпущено мало игр, Microsoft активно продвигала DirectX среди разработчиков, которые в целом не доверяли способности Microsoft создать игровую платформу на Windows. Алекс Сент-Джон, проповедник DirectX, устроил тщательно продуманное мероприятие на конференции разработчиков компьютерных игр 1996 года, которую разработчик игр Джей Барсон описал как римскую тему, включая настоящих львов , тоги и что-то похожее на карнавал в помещении. Именно на этом мероприятии Microsoft впервые представила Direct3D и DirectPlay и продемонстрировала многопользовательский режим MechWarrior 2, в который можно играть через Интернет.

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

До DirectX Microsoft включала OpenGL в свою платформу Windows NT . В то время OpenGL требовал "высококлассного" оборудования и был ориентирован на разработку и использование САПР . Direct3D задумывался как контролируемая Microsoft альтернатива OpenGL, изначально ориентированная на использование в играх. По мере роста 3D-игр OpenGL был разработан, чтобы включить лучшую поддержку методов программирования для интерактивных мультимедийных приложений, таких как игры, предоставляя разработчикам выбор между использованием OpenGL или Direct3D в качестве API 3D-графики для своих приложений. С этого момента началась «битва» между сторонниками кроссплатформенного OpenGL и Direct3D только для Windows. Между прочим, OpenGL поддерживался в Microsoft командой DirectX. Если разработчик решил использовать API трехмерной графики OpenGL, другие API-интерфейсы DirectX часто объединяются с OpenGL в компьютерных играх, поскольку OpenGL не включает в себя все функции DirectX (например, поддержку звука или джойстика).

В версии для консоли DirectX использовался в качестве основы для консольных API Microsoft Xbox , Xbox 360 и Xbox One . API был разработан совместно Microsoft и Nvidia , которые разработали специальное графическое оборудование, используемое в оригинальной Xbox. Xbox API был похож на DirectX версии 8.1, но не подлежал обновлению, как и другие консольные технологии. Кодовое название Xbox было DirectXbox, но было сокращено до Xbox из-за его коммерческого названия.

В 2002 году Microsoft выпустила DirectX 9 с поддержкой использования гораздо более длинных шейдерных программ, чем раньше, с пиксельными и вершинными шейдерами версии 2.0. С тех пор Microsoft продолжала обновлять пакет DirectX, представив Shader Model 3.0 в DirectX 9.0c, выпущенном в августе 2004 года.

В апреле 2005 года DirectShow был удален из DirectX и вместо этого перемещен в Microsoft Platform SDK .

Было подтверждено присутствие DirectX в Microsoft Windows Phone 8 .

Трассировка лучей в реальном времени была объявлена ​​как DXR в 2018 году.

Логотипы

Оригинальный логотип напоминал деформированный предупреждающий знак радиации . Как ни странно, первоначальное название проекта DirectX было «Манхэттенский проект», отсылка к инициативе США по созданию ядерного оружия . Алекс Сент-Джон , глава евангелизации Microsoft DirectX в то время, утверждает, что коннотация окончательного результата Манхэттенского проекта ( ядерная бомбардировка Японии ) является преднамеренной, и что DirectX и его родственный проект Xbox (который разделяет подобный логотип), были призваны вытеснить японских производителей видеоигр с их доминирующего положения в индустрии видеоигр . Однако Microsoft публично отрицает эту учетную запись, вместо этого заявляя, что логотип является просто художественным дизайном.

До выхода новой — одиннадцатой — версии DirectX осталось не так много времени. Предположительно он появится уже этой осенью в составе Windows 7 и Service Pack 2 для Windows Vista. Сможет ли новый API стать новой общепризнанной платформой для разработчиков игр? Не ждет ли его та же судьба, что и DirectX 10? Именно в этом мы и попытаемся разобраться.

Начнем с небольшой предыстории. Если верить слухам (а они опираются на вполне конкретные факты), самая первая версия DirectX носила кодовое название Manhattan Project. Это прямой намек на ядерную программу США (помимо Америки в исследованиях принимали участие ученые из Канады, Великобритании и Германии), результатом которой стало появление атомной бомбы. Также есть предположение, что первый логотип DirectX был разработан по образу и подобию значка, предупреждающего о радиационной опасности (что и говорить, сходство действительно есть).

Что же касается названия технологии, то, по словам главы проекта DirectX Алекса Джона, DX разрабатывался в паре с приставкой Xbox, которая изначально называлась DirectXbox. Проекты должны были развалить японский рынок видеоигр так же, как некогда сброшенные атомные бомбы стерли с лица земли города Хиросима и Нагасаки. Разумеется, компания Microsoft все отрицает и говорит о том, что дизайн первого логотипа не имеет никакого отношения к роковому желто-черному значку.

Вот такие сложные эффекты освещения в DirectX 11 можно будет делать без всяких программных фокусов.

Первая версия DirectX появилась в 1995 году. Она вошла в комплект второго пакета обновлений для Windows 95. Под общим названием было собрано сразу несколько компонентов: Direct3D, DirectDraw, DirectMusic, DirectPlay, DirectSound (за что отвечает каждый из них, понятно из названия) и т.д. По сути, программистам предложили набор средств для разработки (так называемый SDK) трехмерной и растровой графики, музыки, коммуникации и других игровых и программных модулей. В состав DirectX входили все необходимые библиотеки, документация и заголовочные файлы.

Курс с самого начала был взят на удобство и массовость. Каждое обновление API добавляло важные функции, оперативно исправлялись ошибки. DirectX зашагали вперед семимильными шагами. Девелоперы продвигались к фотореализму, качество графики улучшалось и продолжает улучшаться с каждым новым поколением API.

Мы ждем перемен

Нас больше всего интересует графическая составляющая DX. Давайте разберемся, как она работает. Основная задача API — перенос описания трехмерного объекта на двухмерный экран. Интерфейс передает объект драйверу видеокарты и «объясняет» ей, что с ним нужно делать. Финальное изображение формируется в несколько стадий, которые вместе называются графический конвейер.

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

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

С момента выхода Crysis прошло уже полтора года, а он по-прежнему остается самой красивой игрой под DX10.

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

По методике Юлия Цезаря

Эффекты HDR Lighting позволяют получить очень реалистичное освещение в играх, а при помощи DX11 станет намного легче обрабатывать алгоритмы HDR.

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

Постепенно эволюционируя, DirectX превращается из программного интерфейса с ограниченными возможностями в полноценную среду для создания трехмерных миров. Сейчас DirectX представляет собой строгий набор инструкций, которые будут работать на любой платформе. Разработчики игр смогут писать для DX11 код, который можно запускать на оборудовании, совместимом и с DX10, — придется пожертвовать лишь некоторыми функциями.

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

Начиная с восьмого DirectX, в каждой последующей итерации API начали появляться новые версии пиксельных шейдеров. DX11 не стал исключением. Только раньше все изменения касались в основном функционала. То есть шейдеры выдавали более реалистичные эффекты. В DX11 изменена сама модель программирования. Microsoft доработала шейдерный язык HLSL, в частности, добавила в него несколько способов объектно-ориентированного программирования. Код станет легче читать, исчезнут бесконечные нагромождения функций и обращений.

Открытый стандарт OpenGL не смог конкурировать с DirectX на рынке компьютерных игр. Хотя поначалу детище Microsoft не было столь популярно, как сейчас. Первые версии API подвергались критике со стороны разработчиков игр: в плане графики DirectX не предлагал существенных улучшений, но для реализации простейших функций требовался целый ряд ненужных команд. В OpenGL, напротив, все было просто.

Microsoft пыталась задавить SGI (разработчиков OpenGL) при помощи рекламных уловок. Они обещали, что DirectX будет работать быстрее конкурента. Уже тогда было понятно, что низкая скорость работы OpenGL связана не с самим API, а с неудачной его реализацией в среде Windows. С другой стороны, многие игры тогда не использовали DirectX для рендеринга. Вместо этого они обращались напрямую к ресурсам видеокарт через DirectDraw. OpenGL опирался на поддержку со стороны производителей железа, но с появлением новых видеокарт программные недостатки этого API стали видны невооруженным глазом.

Как бы там ни было, но войну выиграла Microsoft. Она выпускала все новые версии API с новыми функциями. Появление DirectX 8 с поддержкой пиксельных шейдеров и шейдерного языка высокого уровня отбросило SGI далеко назад.

Игра Rage — последний на сегодня оплот OpenGL в мире трехмерных игр.

На замену процессору

Научная программа Folding@Home позволяет рассчитывать структуру белков на дому. Видеокарты с их быстрой шейдерной архитектурой справляются с вычислениями куда лучше центральных процессоров.

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

Сразу же провели эксперимент. Ученые создали программу Folding@ Home, моделирующую трехмерную структуру протеинов, и оптимизировали ее для работы с графическим чипом. Очень быстро выяснилось, что даже древняя видеокарта AMD Radeon X1900 делает расчеты почти в двадцать раз быстрее самого мощного четырехъядерного процессора. Вдохновленные успехом, производители графических плат начали развивать новое направление, получившее название GPGPU (General-Purpose Graphics Processing Units, GPU общего назначения).

NVIDIA и AMD практически одновременно представили собственные концепции, но в лидеры сразу выбилась технология NVIDIA CUDA. И людей не останавливает даже тот факт, что программы, написанные с ее помощью, могут работать только на видеокартах GeForce (начиная с восьмого поколения и выше).

Photoshop CS4 стал первой программой с поддержкой расчетов при помощи графического чипа. Правда, на данный момент все сводится к плавному зуммированию, вращению и еще паре не особо нужных функций.

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

Только представьте себе, сколько в ближайшем будущем выйдет программных блоков и игр, которые будут использовать возможности видеокарт. Появятся продвинутые технологии затенения, сверхкачественное полноэкранное сглаживание — как обычных, так и прозрачных текстур. Вычислительные шейдеры возьмут на себя расчет игровой физики, искусственного интеллекта и многое другое, что обычно перекладывается на плечи центрального процессора. Один из наиболее ярких примеров — продвинутые эффекты освещения HDR Lighting. Сейчас для их расчета приходится прогонять алгоритм через ЦП несколько раз. Вычислительным шейдерам достаточно одного захода на цель.

Производить общие расчеты сможет любая видеокарта с поддержкой DX11. Технология найдет свое применение не только в играх, но и в других приложениях под Windows. Photoshop CS 4 уже использует возможности видеокарты, но пока на самом примитивном уровне.

Видеокарта NVIDIA GeForce GTX 295 напоминает старую VHS-кассету. Но скорость работы — феноменальная.

Графический конвейер DX11 обзавелся несколькими новыми стадиями.

Тесселяция — разбиение модели на полигоны.

Анизотропная фильтрация (AF) — метод снижения искажений картинки. Устраняет эффект размытости, повышает резкость текстур. На данный момент существуют режимы 2x, 4x, 8x и 16x.

Полноэкранное сглаживание (FSAA, AA) — устранение эффекта «лесенки», нечетких краев объектов. На данный момент существуют следующие виды антиалиазинга: суперсэмплинг (SuperSampling), мультисэмплинг (MultiSampling) и CSAA (Coverage Sampling AntiAliasing). По качеству изображения на первом месте стоит суперсэмплинг, но он сильно снижает производительность. Мультисэмплинг обеспечивает хорошее качество сглаживания при меньших затратах. CSAA — относительно новая технология, которая обеспечивает высокий класс сглаживания при разумном расходе ресурсов видеокарты.

Широкий динамический диапазон (HDR) — технология, которая позволяет добиться оптически правильного освещения, а также дает возможность имитировать эффект адаптации человеческого зрения (к примеру, выход из темного помещения на яркий солнечный свет).

Шейдеры — программы, которые определяют вид поверхности объекта. За последние несколько лет шейдерные программы сильно эволюционировали, а кроме пиксельных и вершинных шейдеров появился новый вид — геометрические.

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

Вершинные шейдеры — производят различные операции над вершинами 3D-объектов. Благодаря им в современных играх появились красиво анимированные деревья и трава, волны, развивающаяся одежда.

Геометрические шейдеры — позволяют графическому процессору динамически создавать и изменять геометрию объектов. Геометрические шейдеры добавляют еще больше реалистичности волосам, воде, огню. При этом они разгружают центральный процессор и повышают скорость обработки графики.

Вершинные и пиксельные процессоры — блоки графического чипа, которые отвечают за обработку соответственно вершинных и пиксельных шейдеров. Чем больше таких блоков несет в себе чип и чем выше их частота, тем быстрее будет идти выполнение шейдерных программ.

Судя по всему, новый DirectX обеспечит качественный скачок не только в графике, но и в игровой архитектуре в целом. Даже относительно старое железо благодаря распределению нагрузки между ЦП и графическим процессором сможет выдавать очень качественную картинку, да еще рассчитывать физику и, допустим, AI. Но до всего этого нам с вами еще предстоит дожить. Даже если DirectX 11 появится без опозданий, до массового перехода на него разработчикам потребуется еще минимум полтора-два года.


DirectX 11.2 вошедший в выпуск Windows 8.1 насчитывает ряд интересных и нужных нововведений. В этом посте будет проведен краткий обзор основных новинок, а так же рассмотрены некоторые сценарии применения. Несмотря на то что нововведений не так много, некоторые из них будут весьма кстати при разработке приложений для мобильных устройств, и приложений для Windows Store.

Кратко о новинках.

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

  1. Поддержка аппаратных оверлеев: инструмент динамического масштабирования с интересными вариантами сценариев.
  2. Компиляция и линковка шейдеровHLSLв рантайме: возможность которая позволяет компоновать шейдеры во время выполнения, в том числе для приложений Windows Store.
  3. Отображаемые в памятьбуфферы: Возможность которая позволяет убрать необходимость дополнительных операций копирования данных при обмене данными с GPU
  4. APIснижения задержек ввода: Механизм который позволяет значительно снизить время задержки между пользовательским вводом и выводом результатов на экран.
  5. Тайловыересурсы: Улучшение качества рендера с применением карт текстур.

Поддержка аппаратных оверлеев.


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

Как уже понятно из картинки, аппаратный оверлей позволяет осуществлять рендер в буфер с низким разрешением, а затем увеличивать это изображение до необходимого размера и смешивать с дополнительными буферами через альфа-маску. Игра может отображать 3D сцену в первом оверлее с сниженным качеством, но при этом HUD или другие графические элементы приложения могут отображаться с высоким качеством.
При этом поддерживается два основных сценария применения аппаратных оверлеев — статический и динамический.

Статический оверлей.

Данный тип оверлея просто принимает уровень масштабирования при инициализации буфера и в дальнейшем не меняет своих значений. Для инициализации достаточно указать флаг DXGI_SCALING_STRETCH:

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

Динамический оверлей.

Более интересный вариант, в котором уровень масштабирования может меняться «на лету», без повторной инициализации буферов (Swapchain). Вам достаточно вызвать функцию SetSourceSize перед каждым рендером:

Динамический оверлей позволяет, в зависимости от текущей нагрузки на аппаратные ресурсы, моментально менять качество картинки без ущерба к FPS. Порой даже 10% снижение разрешения конечного изображения может в разы ускорить процедуры рендера, что положительно скажется на динамичных нагруженных сценах. У игроков пропадет ощущение «тормозов» в случаях когда на экран выводится слишком много объектов.

Компиляция и линковка шейдеров.

Динамическая компиляция шейдеров — это весьма удобный инструмент оптимизации во время работы приложения. К сожалению, в Windows 8.0, для приложений Windows Store эта возможность была недоступна, и разработчикам необходимо было создавать бинарные блобы шейдеров заранее. С выходом Windows 8.1 эта возможность вернулась и для приложений Windows Store.
В дополнение к этому появилась опция компиляции шейдеров ‘lib_5_0', которая позволяет компоновать вычислительные блоки шейдеров и затем, во время исполнения программы, не компилировать шейдеры, а только собирать из готовых библиотек. Эта возможность позволяет значительно повысить время подключения шейдера и исключить дорогую операцию компиляции во время исполнения приложения.

Отображаемые в память буферы.


В Windows 8.0 обмен данными с GPU для вычислительных шейдеров требует использования вспомогательных буфферов. Это налагает некоторые издержки, и как раз таки для вычислительных шейдеров может стоить дорого.


Если вы используете Windows 8.1 и DirectX 11.2 у вас есть возможность убрать две вспомогательные операции воспользовавшись флагом CPU_ACCESS. Тогда картинка будет выглядеть следующим образом:

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

API снижения задержек ввода

Время, между реакцией на ввод и реальным отображением результатов на экране, является критичным для многих приложений, а особенно игр. Если это время слишком велико, то у игрока появляется ощущение «тормозов» и дискомфорт. Оптимизация этого времени достаточно кропотливый процесс, но вместе с выходом DirectX 11.2 у программистов появился дополнительный механизм значительно облегчающий эту задачу. Появилось новое API IDXGISwapChain2::GetFrameLatencyWaitableObject которое позволяет получить WAIT HANDLE и в дальнейшем используя WaitForMultipleObjectEx дождаться самого удачного момента рендера:

Например, результатом использования этого API может быть снижение времени задержки более чем вдвое на таких устройствах как Surface, с 46 миллисекунд до 20 миллисекунд.

Тайловые ресурсы



Современные игры требуют все большего и большего количества видео памяти, в том числе для текстур. От качества текстур и их разрешения напрямую зависит качество конечной картинки. Одним из методов оптимизации используемой видео памяти является механизм тайловых ресурсов Direct X 11.2 (Tiled resources). Чтобы понять о чем речь лучше посмотреть трехминутный ролик из пленарного доклада Build.

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