Скачать DirectX 12 — Официальная версия
DirectX 12 включен в состав операционной системы Windows 10 – эта особенность новой ОС Microsoft заставила многих пользователей отказаться от привычной «Семерки». Обновленный пакет Директ Икс улучшил производительность CPU и качество графики в видеоиграх. Кроме того, разработчики позаботились об оптимизации воспроизведения 3D в высоком разрешении.
DirectX 12 на компьютер
В DirectX 12 предусмотрены компоненты, позволяющие равномерно распределить нагрузку на ядра процессора. Впервые геймерам была предоставлена возможность запускать игры в разрешении 4K – при наличии высокопроизводительной видеокарты и современного процессора можно насладиться небывалой красотой графики! При использовании DirectX 12 возможно одновременное использование двух видеокарт разных брендов, объем видеопамяти суммируется. Кроме того, повышение производительности произошло за счет предоставления разработчикам полноценного низкоуровневого доступа к аппаратным ресурсам.
Новые режимы обработки теней сделали метод сглаживания MSAA еще менее требовательным к возможностям видеокарты. Технология DirectX Raytracing позволила сделать свойства источников света максимально похожими на реальные. Система управления лучами позволяет разработчикам сосредоточить освещение на ключевых сценах и снизить нагрузку на видеокарту за счет понижения качества обработки вторых планов. Повышение производительности коснулось и встроенных видеочипов, начиная с Intel 4400 и более поздних – в приложениях и бенчмарках отмечается прирост до 50%, по сравнению с DirectX 11.
Что такое Direct3D 12?
В DirectX 12 появилась следующая версия Direct3D — — API трехмерной графики в сердце DirectX. Direct3D 12 работает быстрее и эффективнее, чем любая предыдущая версия. Direct3D 12 обеспечивает более широкие сцены, другие объекты, более сложные эффекты и полное использование современного оборудования GPU.
Как может работать Direct3D 12 настолько быстро и эффективнее?
Direct3D 12 является уникальным в том, что он обеспечивает более низкий уровень абстракции оборудования по сравнению с предыдущими версиями, что позволяет значительно улучшить масштабирование многоядерного ЦП в названии (или другом приложении). В одном случае с Direct3D 12 ваш заголовок отвечает за собственное Управление памятью. Кроме того, с помощью Direct3D 12 ваши заголовки и приложения получают преимущества от снижения издержек GPU с помощью таких функций, как очереди команд и списки, таблицы дескрипторови сжатые объекты состояния конвейера.
Direct3D 12 и Direct3D 11,3 предоставляют набор новых функций для конвейера отрисовки.
Насколько глубоко следует вкладывать в Direct3D 12?
Direct3D 12 предоставляет четыре основных преимущества для разработчиков графики (по сравнению с Direct3D 11).
Direct3D 12 предназначен для использования опытными программистами графики. Он вызывает значительный опыт работы с графикой и высокий уровень тонкой настройки. Direct3D 12 предназначен для полного использования многопоточности, тщательной синхронизации ЦП и GPU, а также перехода и повторного использования ресурсов из одной цели в другую. Это методы, требующие значительного объема навыков программирования на уровне памяти.
Еще одно преимущество, которое Direct3D 12 — это небольшой объем API. Существует около 200 функций. и примерно одна третья из них выполняет всю тяжелую работу. Это означает, что вы, как разработчик графики, должны иметь возможность обучать называете о — — полном НАБОРе API, не завлекая слишком много имен API.
Direct3D 11 остается приемлемым вариантом вместе с Direct3D 12. Многие новые функции рендеринга Direct3D 12 доступны в direct3d 11,3. Direct3D 11,3 — это интерфейс API нижнего уровня графики; и Direct3D 12 становится еще более глубоким.
Существует по крайней мере два способа, которым ваша команда разработчиков может подходить под названием Direct3D 12.
Использовать только Direct3D 12
Для проекта, который использует преимущества Direct3D 12 в максимальной степени, следует разработать высокоспециализированный механизм Direct3D 12 с нуля.
Если вы, как разработчик графики, поймете использование и повторное использование ресурсов в ваших заголовках, и вы можете воспользоваться этим средством, уменьшив нагрузку и копирование, после чего вы сможете разработать и настроить высокоэффективный механизм для этих заголовков. Повышение производительности может быть очень значительным, освобождая время ЦП, чтобы увеличить число вызовов Draw, и таким образом добавим дополнительные кластере к графике.
Инвестиции в программирование существенны, поэтому следует рассмотреть возможность отладки и инструментирования проекта с самого начала. Потоки, синхронизация и другие временные ошибки могут быть непростыми.
Использование Direct3D 12 в сочетании с Direct3D 11
Видеоролики по Microsoft DirectX 12 (и рисунки для образовательных учреждений)
Улучшенное образование для разработчиков графики. В этих видеороликах рассматриваются такие темы, как режимы презентации, перенос на DirectX 12, консервативная растрирование, графические инструменты, угол, Win2D и события, такие как GDC, сборка и многое другое. В техническом содержимом DirectX 12 мы предварялись DirectX 12. Ознакомьтесь с советами и рекомендациями непосредственно от специализированной группы Direct3D 12. Мы хотим помочь вам использовать наши новейшие выпуски и средства, чтобы сделать игру лучше.
Заключение
Direct3D 12 — это все о производительности подсистемы графики. Простота разработки, высокоуровневые конструкции и поддержка компилятора были уменьшены, чтобы включить эту функцию. Поддержка драйверов и простота отладки остаются в соответствии с Direct3D 11.
Direct3D 12 — это новая территория. Территория, ожидающая появления и изучения эксперта любознательных.
DirectX 12 — от Леонардо да Винчи к современному искусству
Компьютерная графика — обширная и быстроразвивающаяся дисциплина. С каждым годом интерфейсы прикладного программирования становятся более гибкими, что позволяет на их основе реализовывать более сложные алгоритмы формирования и обработки изображений. Однако возможности интерактивной графики не достигли уровня пакетов 3d-моделирования и визуализации. Все это подталкивает к активным исследованиям в данной области.
DirectX 12 — компонент интерфейса программирования высокопроизводительной графики. Основные цели нового интерфейса — снижение CPU-оверхеда драйвера, понижение уровня абстрагирования оборудования, возможность объединения графических карт на уровне API (до этого существовали только vender-specific решения CrossFireX, NVIDIA SLI). Официально выпущен Microsoft в июле 2015.
Статья рассчитана на тех, кто уже работал с графическими библиотеками (OpenGL, DirectX 11). Однако для людей, которые планирует начать изучение графики именно с 12 версии возможно тоже будет полезной.
В ней мы рассмотрим следующие темы:
Окружение
DirectX 12 является частью Windows SDK в Windows 10. В качестве IDE используем Visual Studio, язык программирования C++. Для работы с DirectX, необходимо подключить хедеры d3d12.h dxgi1_6.h и библиотеки d3d12.lib, dxguid.lib, dxgi.lib, d3dcompiler.lib. Все это лежит в стандартных каталогах Windows SDK. Так же распространяется «D3D12 Helper Library» в виде одного заголовочного файла d3dx12.h, она позволяет сократить количество boilerplate кода. Его можно просто скачать по адресу d3dx12.h и вложить в проект.
Краткое описание графического пайплайна
В основе графической библиотеки лежат функции рисования, которые запускают графический конвейер — программно-аппаратное средство визуализации трехмерной графики. Аппаратная составляющая представлена видеоадаптером, программная — драйвером. Графический конвейер можно представить в виде черного ящика, разделенного на этапы и выполняющего необходимые преобразования. Содержимое этого черного ящика может быть различным. Выполняемые преобразования зависят от назначения графической системы, стоимости, требуемого уровня универсальности и многих других факторов. Также, конкретный видеоадаптер — сложный механизм, правила работы которого зачастую известны лишь непосредственно производителю.
Итак, на сегодняшний день процесс визуализации трехмерной сцены выглядит в общих чертах следующим образом.
Преобразование вершин
Каждая вершина имеет определенный набор атрибутов таких, как позиция, цвет, текстурные координаты, вектор нормали или все векторы из касательного пространства и, возможно, некоторые другие. Трансформация вершин — это первая стадия графического конвейера. На этом этапе входными данными являются атрибуты конкретной вершины, над которыми производятся математические преобразования. Эти операции включают трансформацию позиции вершины, генерацию и преобразование текстурных координат, расчет освещения для каждой отдельной вершины, а также любые другие операции, которые необходимо выполнить на уровне вершин. Каждая вершина обрабатывается параллельно с другими вершинами на доступных ядрах графического ускорителя. Основной результат вершинной программы — преобразовать координаты из модельного пространства в специальное пространство отсечения (clip space).
Построение примитивов и растеризация
Входные данные этого этапа — трансформированные вершины, а также информация о их соединении. Из этих данных осуществляется сборка геометрических примитивов. В результате получается последовательность треугольников, линий или точек. Над этими примитивами может производиться отсечение плоскостям, определенными в программе. Также на этом этапе могут быть отброшены задние треугольники объектов. Определяются эти треугольники по направлению обхода вершин (по часовой стрелке или против). Какое направление обхода соответствует заднему треугольнику задается через графическое API. Полигоны, прошедшие отсечение, могут растеризироваться.
Текстурирование и окрашивание
Над атрибутами примитивов, растеризированных в набор фрагментов, на этой стадии проводится необходимая интерполяция, а также последовательность математических преобразований и операций текстурирования, что определяет конечный цвет каждого фрагмента. Также на этом этапе может определяться новая глубина или даже исключение фрагмента из буфера кадра.
Пофрагментные операции
На этом этапе проводится ряд пофрагментных тестов, таких как тест отсечения (scissor test), тест трафарета (stencil test) и тест глубины (depth test). Эти тесты определяют конечный вид, цвет и глубину фрагмента перед обновлением экранного буфера. Если какой-либо тест проходит с ошибкой, то фрагмент не обновляется. После тестов выполняется операция смешивания, которая комбинирует финальный цвет фрагмента с текущим цветом пиксела, а итоговый результат записывается в экранный буфер. Операция смешивания выполняется на этом этапе, поскольку стадия текстурирования и окрашивания не имеют доступа к экранному буферу.
Более детальное устройство конвейера можно посмотреть в спецификации DirectX 11 (документ по DiretcX 12 затрагивает лишь изменения с предыдущей версией)
Новые возможности DirectX 12
Мы переходим от теоретической части непосредственно к описанию конкретных возможностей DirectX 12.
Состояния
В 11 версии программистам известны различные функции изменения состояний графического ускорителя: RSSetState(), OMSetDepthStencilState(), OMSetBlendState(). Оказалось, что такой подход плохо ложится на оборудование. В конечном итоге драйвер устанавливает адаптеру одно монолитное состояние, а отдельные вызовы или некоторые комбинации состояний могли приводить к непредсказуемым задержкам со стороны драйвера. В новой версии инженеры переосмыслили этот подход и исключили атомарное изменений состояний, теперь они объединены в одно — PSO (Pipeline State Object). Такое нововведение кажется более удобным со стороны пользователя: теперь не нужно беспокоиться о «висячих состояниях», которые остались с прошлых проходов. Более того, для лучшей эффективности установки, теперь дополнительно требуется передавать информацию о всех прикрепленных ресурсах в шейдер через Root Signature (об этом ниже).
Команды
В ранних версиях пользователи отправляли команды через так называемый immideate context. Под капотом создавались отложенные командные очереди и по мере заполнения отправлялись оборудованию. Необходимо отметить, что в DirectX 11 существует возможность создания deferred context. В DirectX 12 immideate context был исключен и deferred концепция стала основной. Теперь программист должен заполнить deferred command list, и в необходимый момент отправить его на исполнение.
Таким образом, реализация двойной и тройной буферизаций теперь выглядит более явно: создаются соответствующее количество command list, как только они заполнены, CPU переходит в режим ожидания свободного листа.
Здесь же стоит упомянуть о ресурсах, которые прикреплены к конкретному командному листу. Теперь удаление ресурса, использующегося на GPU, ведет к непредсказуемым последствиям. Например, раньше легально было выполнить Release() для текстуры которая еще используются — драйвер автоматически отследит, когда ресурс перестанет использоваться и только после этого удалит его.
Синхронизация
Для возможности отслеживания работы GPU, DirectX 12 предоставляет концепцию fence, которая инкапсулирована объектом ID3D12Fence интерфейсом. Fence — это целое число, которое представляет выполненную работу GPU на текущий момент. Сначала происходит эмитинг следующего «свободного» значения, вызывая ID3D12CommandQueue::Signal() в командной очереди. Затем с помощью ID3D12Fence::SetEventOnCompletion(UINT64 Value, HANDLE hEvent) происходит ассоциирование значения с примитивом winapi event. Теперь поток с помощью WaitForSingleObject() над подготовленным event-ом может приостановить выполнение до момента выполнения всей работы, предшествующий контрольному значению. Как только вся работа на GPU выполнится, значение в fence обновится, вызов WaitForSingleObject() разблокируется и поток продолжит выполнение.
Прикрепление ресурсов
Биндинг ресурсов в шейдер — одна из самых запутанных тем современного DirectX.
Обзор
В DirectX 11 использовалась следующая модель биндинга: каждый ресурс устанавливался в шейдер соответствующим вызовом API. Например, для установки двух текстур (если не задумываться о семплерах) в 5 и 6 слоты пиксельного шейдера применялся следующий код:
Где GetShaderResourceView() возвращает указатель на объект типа ID3D11ShaderResourceView.
В шейдере затем текстуры использовались так:
Такая система достаточно удобная со стороны программиста, но с точки зрения графического ускорителя нет. Допустим, нам необходимо прикрепить текстуру на чтение в шейдере. Как должна быть передана информация о текстуре? Если мы заглянем в документацию GCN ISA, найдем следующий параграф:
All vector memory operations use an image resource constant (T#) that is a 128- or 256-bit value in SGPRs. This constant is sent to the texture cache when the instruction is executed. This constant defines the address, data format, and characteristics of the surface in memory.
Это означает, что для того чтобы описать текстуру, нам нужен этот небольшой дескриптор (128 или 256-битный), который нужно поместить в любое место памяти. Если мы прочтем остальную часть документации, мы заметим, что этот же шаблон также используется для всех других типов ресурсов. Фактически, когда дело доходит до доступа к ресурсу, понятие «слот» бессмысленно. Графический адаптер оперирует дескрипторами: текстуры (T#), сэмплера (S#) или константы (V#). С Direct3D 12 эти дескрипторы, наконец, отображаются непосредственно на дескрипторы оборудования — некоторая память GPU.
Дескрипторы
Сейчас ресурсы не прикрепляются в графический пайплайн прямо через вызовы методов, прикрепление происходит опосредовано через дескрипторы. Дескриптор — небольшой кусочек памяти, который содержит информацию о ресурсе (GPU виртуальный адрес, и, например, количество мипов, формат). Множество дескрипторов хранятся в дескрипторной куче — это просто массив дескрипторов фиксированного размера. Дескрипторные кучи могут содержать информацию о разных типах ресурсов:
CBVs, UAVs, SRVs могут содержаться в одной дескрипторной куче, а описания семплеров — в отдельной. Это разделение выражает тот факт, что семплеры в ускорителе обрабатываются отдельно.
Выше мы упомянули так называемые shader visible ресурсы. Соответственно, существуют non shader visible ресурсы:
Такие views ресурсов предназначаются только для прикрепления ресурса в пайплан (но не для использования в шейдере), и поэтому их нужно создавать в отдельной non shader visible дескрипторной куче (это задается флагом D3D12_DESCRIPTOR_HEAP_FLAGS::D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE при создании кучи).
Есть еще одна группа view’s, для которых дескрипторы (и, соответственно, дескрипторная куча) не требуются:
Представлены типами D3D12_INDEX_BUFFER_VIEW и D3D12_VERTEX_BUFFER_VIEW соответственно. То есть описания индексных и вершинных буферов содержатся в указанных выше структурах и затем передаются напрямую в Pipeline State Object. Вся память в PSO автоматически версионируется драйвером.
Таким образом, теперь вместо создания множества объектов типа ID3D11. View, мы создаем дескрипторы в дескрипторной куче.
Root signature
Root signature — объект DirectX 12 API который задает соответствие лэйаута дескрипторов и данных в слоты шейдера. Это, в некотором смысле, действительно сигнатура шейдера только с точки зрения использования ресурсов. Root signature не содержит конкретных дескрипторов и данных, она лишь задает лэйаут (устройство) дескрипторов, которые биндятся уже позднее на этапе рендеринга.
Root signature состоит из массив записей, которые называются root parameter. Действительные данные root parameter устанавливаются в рантайме и называются root arguments. Меняя root argument, меняются данные которые читает шейдер. Root parameter бывают трех типов:
Максимальный размер root signature — 64 DWORDs. Типы отсортированы по возрастанию уровня косвенности доступа ресурса в шейдере, но по убыванию возможностей.
Root constant это встроенное в root signature 32-битное значение, которое используется в шейдере как constant buffer. Предназначается для наиболее активно изменяющихся констант (например, MVP матрицы), но имеет жесткие ограничения на максимальный размер (всего поместится 4 матрицы). Так же такие данные доступны в шейдере с нулевым уровнем косвенности, и имеют более быстрый доступ чем все остальные способы. Полностью версионируются драйвером: их можно «установить и забыть».
Приложение может поместить дескрипторы напрямую в root signature во избежании хранения дескрипторов в куче дескрипторов — это второй способ inline descriptors. Пример таких данных — константа per object. Таким образом, не нужно беспокоиться о свободном месте в куче дескрипторов. Имеет первый уровень косвенности. Версионируется сам дескриптор (то есть описание ресурса), но ресурс который описывает этот дескриптор должен быть доступен до завершения его использования на GPU. Установка конкретных данных производится, например, методом ID3D12GraphicsCommandList::SetGraphicsRootConstantBufferView, в него передается индекс root parameter нашего inline descriptor и виртуальный адрес буфера.
Мы подошли к третьему, основному и универсальному способу прикрепления ресурсов. Таблица дескрипторов содержит массив descriptor range. Descriptor range — описание непрерывной цепочки дескрипторов определенного типа. Описание одной записи в таблицы дескрипторов проще показать кодом:
Видим, что RangeType — указывает тип дескриптора, NumDescriptors — количество, BaseShaderRegister — номер регистра внутри шейдера. Остальные параметры служат для расширенной настройки и пока не будем их рассматривать. В рантайме дескрипторы устанавливаются методом ID3D12GraphicsCommandList::SetGraphicsRootDescriptorTable, в него передается индекс root parameter нашей таблицы дескрипторов и первый дескриптор. Все дескрипторы, указанные в описании таблицы дескрипторов, подхватываются автоматически. Из этого следует, что они должны располагаться непрерывно друг за другом в descriptor heap.
Заключение
Мы рассмотрели некоторые возможности DirectX 12. Если вам интересная данная тема или любая другая из области компьютерной графики, отписывайтесь в комментариях.
DirectX 12: Чего ждать?
Уже 29 числа, с выходом Windows 10, станет доступна новая версия DirectX, которая обещает увеличить производительность в играх и не только. В отличие от DirectX 11, вам не потребуется покупать новую видеокарту, и это не может не радовать. DirectX 12 обещает работу на многих устройствах: на смартфонах, планшетах, ноутбуках, персональных компьютерах и Xbox One. Для последнего сама Microsoft предрекает увеличение производительности, даже по сравнению с PS4.
«DirectX (от англ. direct — прямой, непосредственный) — это набор API, разработанных для решения задач, связанных с программированием под Windows. Наиболее широко используется при написании компьютерных игр. Пакет средств разработки DirectX под Windows бесплатно доступен на сайте Microsoft. Зачастую обновленные версии DirectX поставляются вместе с игровыми приложениями.» (с) Wikipedia
Нововведения в DirectX 12
Низкоуровневый доступ
Поскольку ранее DirectX завоевывал рынок, Microsoft была нацелена на универсальность программного обеспечения и не давала разработчикам прямого доступа к низкоуровневым функциям видеокарты. Но теперь, благодаря новым процедурам вызова, доступ к ним открыт. Но если разработчики не используют новшества, то драйверы смогут автоматически оптимизировать их использование для решения стандартных задач.
Многопоточная оптимизация и разгрузка CPU
В марте 2014 года свет увидела большая (на то время) порция информации о новой версии API. Главной темой была оптимизация использования CPU, и в качестве примера были показаны результаты теста скорости вывода кадра в бенчмарке 3DMark. На скриншоте ниже можно увидеть сокращение скорости отображеня кадра в два (!) раза из-за оптимизации использования лишь CPU и более «умного» распределения ресурсов по ядрам.
Также оптимизирована работа процессоров, имеющих более четырех ядер. Если раньше не имело смысла переплачивать за лишние ядра, если процессор покупался для игр, то теперь все поменялось.
Использование нескольких GPU
Настал праздник для геймеров, имеющих встроенное видео ядро в своих процессорах, но не слишком мощную дискретную видеокарту. DirectX 12 позволит работать одновременно не только видеокартам с технологиями SLI или CrossFire, но и связкам «дискретная + интегрированная».
Но и для владельцев известных связок есть приятная новость. Видеокарты работают одновременно, а не поочередности, а видеопамять ваших видеокарт суммируется. Теперь multi GPU системы имеют раздельный буфер, где доступна вся память видеоадаптера, а не общий, как раньше.
DirectX 12 и встраиваемые low-end GPU
Улучшение производительности, как и сам DirectX 12, будет доступно не только на суперсовременных игровых станциях, но и для относительно слабых встраиваемых решений. По тестам, проведенным на Surface Pro 3 с процессором Core i5, имеющим встроенное видео ядро Intel HD Graphics 4400, производительность увеличилась на 50%. Все благодаря более рациональному использованию GPU.
Использование всего потенциала eSRAM (только Xbox One)
eSRAM – особая высокоскоростная память, используемая в GPU Xbox One. Ранее использовалось специальное API для управления, но сейчас, с выходом DirectX 12, всем управляет одно API – DirectX. Данное улучшение обещает увеличение быстродействия памяти и более рациональное ее использование. Вероятно это поможет сократить, а может и вовсе избавиться, от отставания от PS4.
Обратная совместимость с DirectX 11 видеокартами
Большинство современных видеокарт, которые поддерживают DirectX 11, полностью совместимы с DirectX 12. Но, к сожалению, далеко не все смогут использовать все нововведения в новом API.
Моя видеокарта поддерживает DirectX 12?
Список видеокарт с поддержкой DirectX 12 API:
*В этом списке предоставлены видеокарты, поддерживающие DirectX 12 API, но далеко не все из них поддерживают DirectX 12_0 и DirectX 12_1.
DirectX 12_0
Только GPU или архитектуры, специально разработанные для поддержки DirectX 12, будут поддерживать уровень функций DirectX 12_0, который содержит ряд новых технологий. Среди них – тайловые ресурсы Tiled Resources. В принципе, тайловые ресурсы известны ещё по DirectX 11, они отличаются высокой эффективностью по используемой памяти, а также могут значительно улучшить уровень детализации. С помощью мелких текстур в многократных ориентациях можно симулировать крупные текстуры. Кроме того, существенно экономится память. А качество картинки приносить в жертву не придётся.
В примере приводится классическая текстура Texture 3D под DirectX 11 с разрешением 1.200 x 600 x 600 пикселей с 32-битным цветом – она занимает 1,6 Гбайт. С тем же качеством можно использовать тайловую текстуру Tiled Texture 3D через многократные повторения – она будет иметь разрешение 32 x 32 x 16 пикселей с 32-битным цветом. Размер при этом будет составлять 156 Мбайт. В одном из примеров приведена сцена рендеринга, в которой тайловая 3D-текстура используется 2.500 раз. Для создания и симуляции некоторых материалов в 3D добавляется ещё одно информационное поле. Им может быть, например, значение прозрачности или вязкости. Такой подход позволяет лучше симулировать жидкости и газы.
Ещё один тип тайловых ресрусов – объёмные тайловые ресурсы (Volume Tiles Resources), однако они относятся к уровню функций уже не DirectX 12_0, а 12_1.
К уровню DirectX 12_0 относится Typed UAV и новая модель Bind, которые ориентируют API на большее число ядер CPU, что обеспечивает более широкую параллелизацию и производительность.
DirectX 12_1
Ещё на шаг дальше Microsoft и разработчики GPU пошли с DirectX 12_1. Но данный урвоень функций поддерживают только самые новейшие GPU. К ним относятся все GPU на основе 2-го поколения «Mawell». Одна из новых технологий – консервативная растеризация (Conservative Rasterization). Она используется для фильтра динамического суперразрешения (Dynamic Super Resolution) и сглаживания Multiframe Sampled Anti-Aliasing.
При растеризации небольшого объекта/пикселя в некоторых случаях лучше учитывать все покрытые точки семплирования, пусть даже частично. Также консервативная растеризация важна при вокселизации VXGI. Улучшенная методика наиболее заметна и при расчете теней.
Видео демонстрации DirectX 12:
Заключение
Все выглядит очень многообещающе. Для AMD в частности. AMD славится своими шести и восьми-ядерными процессорами – улучшена поддержка многоядерных процессоров. AMD имеет процессоры с хорошими графическими ядрами (APU) – мощности встроенной и дискеретной графики суммируются. Улучшена поддержка высоких разрешений, в которых даже не самые новые видеокарты от AMD и так хорошо себя чувствуют. Графика от Nvidia или Intel тоже не останется в дураках, все получат прирост производительности. Но на самом деле, больше от этого выиграем мы – игроки.
Остается надеяться, что игры с ужасной оптимизацией будут выходить реже, чем сейчас, а железо не придется апгрейдить так часто. Мечты-мечты 🙂
//Статья не является копипастой. Вся собранная тут информация была получена из общедоступных источников, обработана и описана в этой статье. Весь заимствованный контент имеет под собой ссылку на первоисточник.




