Как и было обещано, Microsoft объяснила, что они планировали для DirectX 12 в этом году GDC, но что все это значит для среднего программиста DirectX?
Первое, что нужно сказать, это то, что, хотя DirectX-это набор различных мультимедийных API, Microsoft хотела говорить только о Direct3D. Это не является необоснованным, поскольку наиболее часто используется Direct3D, но если вас беспокоит одна из других технологий DirectX, вам просто придется подождать, пока появятся какие-то новости.
Что касается Direct3D, то трудно получить четкое представление о том, что происходит, из-за метели маркетинговых разговоров и гипербол. Вы можете быть уверены, что новый Direct3D:
«…быстрее и эффективнее, чем когда-либо прежде. »
и это позволит:
«…более богатые сцены, больше объектов,»
и с
«…полное использование современного оборудования GPU. »
Ну, они бы так сказали, не так ли?
Однако в этом случае у них есть некоторые ориентиры, подтверждающие в противном случае банальные заявления.
На следующей диаграмме показан DirectX 11 v DirectX 12 на 3DMark:
Вы можете видеть, что DirectX12 лучше балансирует рабочую нагрузку между потоками и возвращается домой первым. Что делает это возможным, трудно сказать на чем-то большем, чем вид сверху:
«… он обеспечивает более низкий уровень аппаратной абстракции, чем когда-либо прежде, позволяя играм значительно улучшить многопоточное масштабирование и загрузку процессора. »
Итак, сколько работы требуется для ускорения?
Как трудно вам приходится вручную балансировать ресурсы и использование потоков, чтобы получить максимальную отдачу от новой системы.
Другие улучшения также выражаются в расплывчатых терминах:
«Direct3D 12 также представляет набор новых функций конвейера рендеринга, которые значительно повысят эффективность алгоритмов, таких как прозрачность, не зависящая от порядка, обнаружение столкновений и отбор геометрии.»
Опять же, да, вы ожидали бы такого улучшения, но у вас нет особого ощущения изменений, которые были бы важны для среднего программиста DirectX.
Описанные изменения являются очень низкоуровневыми и связаны с работой с конвейером GPU и кодом низкого уровня, который его питает. Некоторые сравнивали новые функции с теми, что есть в AMDS Mantle graphics, но конвергентная эволюция естественна и намного проще, когда у вас есть представление о том, что уже работает.
Например, введение неизменяемых объектов состояния конвейера позволяет аппаратному обеспечению преобразовывать их в код GPU намного раньше, чем в DirectX 11, где объекты могут быть изменены вплоть до времени отрисовки. В результате вы можете получить больше вызовов рисования на кадр — но сколько это потребует перекодирования?
Также новыми являются списки команд и пакеты, которые упаковывают наборы команд так, чтобы не было унаследованного состояния. Это позволяет системе предварительно вычислить все, прежде чем отправлять его на графический процессор. Чтобы разрешить повторное использование, пакеты команд могут быть определены и «воспроизведены» для создания пользовательских списков инструкций.
Очевидно, что эти изменения будут использоваться только программистами DirectX, которые хотят наладить личные отношения с графическим процессором и распределением ресурсов. Другими словами, это захватывающий материал для программиста топовых игр, но многие программисты DirectX будут в некотором роде от этого уровня работы.
Существует также небольшой вопрос о том, что у них на самом деле есть эталон.
Насколько полна DirectX 12?
Мы узнали об этом только неделю назад или около того, но, похоже, он достаточно развит, чтобы иметь демо-программы в виде Forza Motorsport 5. DirectX 12 по-прежнему называют альфой, и он не должен оказывать влияние до конца 2015 года, но, похоже, это довольно функциональная альфа.
Также утверждается, что около 80% новых машин, продаваемых сегодня, нацеленных на игры, будут подходить для DirectX 12. В частности, поддерживаются графические процессоры HD7000 и выше, NVIDIA Fermi, Kepler и Maxwell. Microsoft также утверждает, что DirectX 12 будет поддерживаться на всех платформах — XBox, Windows, Windows RT и телефоне. Неясно, будут ли все функции поддерживаться на всех платформах.
Более интересный вопрос заключается в том, будет ли DirectX 12 доступен для Windows 7? Он будет нацелен на Windows 8, но, учитывая временные рамки, он также выглядит так, как будто он может быть основным компонентом в Windows 9. У Microsoft есть привычка ограничивать новые технологии новейшей ОС, чтобы убедиться, что у вас есть причина для обновления.
На данный момент в DirectX 12, похоже, не так много предлагается для среднего программиста, использующего DirectX. Никакого упоминания об отсрочке XNA и ни слова о какой официальной управляемой оболочке — и то, и другое значительно упростило бы использование DirectX и принесло бы пользу многим другим программистам.