Direct X12. Предварительный обзор новой графической библиотеки
На прошедшей конференции Game Developer Conference было анонсировано множество важных продуктов в области игровой разработки. Ключевым анонсом стала презентация нового API DirectX 12, которая покажет новый уровень производительности 3D-графики, первые игры выйдут в начале 2015 года.
На прошедшей конференции Game Developer Conference было анонсировано множество важных продуктов в области игровой разработки. Ключевым анонсом стала презентация нового API DirectX 12, которая покажет новый уровень производительности 3D-графики, первые игры выйдут в начале 2015 года.
В отличие от DirectX 11, где основная часть нововведений была связана с графическими эффектами и поддержке новых аппаратных функций GPU, основной упор в DirectX 12 сделают на оптимизацию программного стека DirectX под существующее аппаратное обеспечение (hardware). Эта хорошая новость для всех пользователей, которые используют видеокарты серий 2013-2014 года. По словам разработчиков, около 80% карт будет поддерживать новый API, будет произведена интеграция с новой приставкой Xbox One и с современными планшетами и смартфонами.
С выпуском DirectX 12 компания Microsoft хочет сделать изображение визуально более богатым за счет значительного сокращения ресурсов CPU, которые используются внутри API. Традиционно, памятью, состоянием и синхронизацией управляли операционная система и драйверы. Однако недостаток информации о задачах, решаемых приложениями, приводил к неэффективному использованию CPU. DirectX 12 позволяет приложениям напрямую управлять ресурсами и состоянием и выполнять необходимую синхронизацию. В результате, разработчики смогут эффективно управлять GPU, используя знания о внутренней работе своей игры.
Microsoft показала, что в целом нагрузка на центральный процессор благодаря новому API будет снижена вдвое, причем задачи будут гораздо лучше распределяться между ядрами CPU. В итоге, масштабируемость производительности от прироста ядер процессора будет почти линейной. Производительность GPU тоже возрастет благодаря снижению зависимости от CPU по количеству запросов и прямому доступу к графике.
С точки зрения архитектуры, DirectX 12 представляет новую модель управления нагрузкой GPU с помощью списков команд (command lists). В модели DirectX 11 уже существовал этот термин. API предоставляет два типа контекста устройства (device context): immediate context и deferred context. В первом случае команды непосредственно отправляются на драйвер GPU, во втором — записываются списки команд, которые затем могут воспроизводиться в immediate context. Нововведение DirectX 12 состоит в том, что драйвер GPU в модели Direct3D 11 может заранее просчитывать низкоуровневые инструкции на основе различных списков команд.
В дополнение к спискам команд в Direct3D 12 появилась еще одна сущность — bundles. Bundle представляет собой набор команд, которые могут быть исполнены неоднократно в сочетании с различными ресурсами — к примеру, для рендеринга идентичных объектов с разной текстурой. В этом случае от драйвера требуется только один раз подготовить инструкции для GPU.
На данный момент о поддержке новой библиотеки Direct X12 заявили компании AMD, Intel, Nvidia, Qualcomm.