DirectX 12: что это и зачем?

Я стал замечать, что многие симмеры с нетерпением ждут обновления Microsoft Flight Simulator с которым в игру придёт API DirectX 12 и заметил, что для большинства этот переход будет означать набор новых эффектов и я склонен полагать, что такая версия стала популярной после заявлений нескольких блогеров, а версия ошибочная и в этой статье я попробую рассказать немного о том почему же DirectX 12 нужен и что он привнесет в авиасимулятор на самом деле.

DirectX 12 не новинка, он был презентован еще в 2015 году, но переход игровой индустрии на него (равно, как и на Vulkan) идёт очень медленно, до сих пор многие AAA проекты используют версию вышедшую более 10 лет назад, вместе с Windows 7. Причин у девелоперов хватает, но об этом как ни будь в другой раз.

С — суть

Преимущества нового API огромны, как и необходимость вложения в них со стороны разработчиков. Асинхронные вычисления, снижение нагрузки на процессор за счёт функции «Draw Calls», уменьшение времени простоя видеокарты и работа с «настоящей» многопоточностью, это лишь перечень возможностей DirectX 12 которые могут сделать наши авиасимуляторы лучшее и быстрее. Например, если симулятору надо показать много объектов при полётах над Нью-Йорком, то за счёт «Direct Calls» объём необходимых ресурсов вашего ПК будет ниже, чем при аналогичной задаче, но решаемой через DirectX 11. Дело в том, что сама прослойка между «железом» и «приложением» в DirectX 12 стала тоньше и львиная доля вычислений теперь делается на стороне движка игры, что выглядит очень здорово на уровне теории, но выглядит кошмаром для программистов. Вы же помните провальный релиз Prepar3Dv5? Вот как раз проблема и была в том, что разработчики из Lockheed Martin подошли к вопросу менеджмента ресурсов «спустя рукава», а еще же есть разработчики дополнений, кто тоже решил этими вопросами не задаваться и в итоге мы получили жутко нестабильный симулятор.

Конечно, за «графоний» DirectX 12 тоже будет отвечать в части новых технологий (например, переменной частоты затенения), новые шейдеры и прочее. Но надо понимать, что «поддержка» и «реализация» это две разные вещи, то есть выпуск Microsoft Flight Simulator с поддержкой DirectX 12 не привнесет в него новые эффекты автоматически, их надо будет создавать и в случае этого симулятора придется создавать с нуля. Предварительные картинки уже были, их можно было увидеть в трейлере игры для E3 и признаться честно, на сегодняшний день они выглядят наивно. Но это еще не релиз, может в Asobo Studio пока просто экспериментируют?

Самым «вкусным» в DirectX 12 представляется технология асинхронных вычислений и если снова всё сводить к нашим авиасимуляторам, то эта технология позволит генерировать очень сложные эффекты света, тени, освещения и преломления световой волны и столь любимая многими трассировка лучей тоже осуществляется на этом уровне. Если сравнивать с DirectX 11, то самое главное преимущество новой версии API в том, что он позволяет запускать несколько таких задач параллельно, а не в очередь, как было раньше.

И снова, мы приходим к тому, о чем я говорил раньше: все это теперь ложится на разработчиков движка самого симулятора, если они это решат сделать и сделают корректно, то оно будет работать и радовать взгляд. Например, в Prepar3Dv5.2 именно на стороне самого симулятора добавили возможность подсветки частиц глобальным освещением, то есть если вы летите в грозу, то молния может отражаться и преломляться в каждой капельке дождя в вашем поле зрения. Технологично? Здорово? Конечно, но вот в этом симуляторе все еще слишком много работы в графической части за которую обычно отвечали сторонние авторы, а я что-то не вижу очереди из желающих выкачать все возможности DirectX 12 и явить симмерам новую картинку виртуального мира, к которому мы привыкли.

О — оптимизация

Если с графикой всё теперь стало понятно (я надеюсь), то с производительностью ситуация сложнее. Во-первых, этот самый прирост производительности заметят только владельцы старших моделей видеокарт, они смогут получить прирост по разным оценкам от 15 до 30% за счёт запаса мощности, а вот владельцы видеокарт начального уровня будут скорее разочарованы, так как раньше большой объем «оптимизации» делался на стороне DirectX и это позволяло выжать чуть больше возможностей из уставшей видеокарточки, а теперь же если игра сообщит системе, что вашего видеоадаптера ей мало, то вы уже ничего не сможете с этим сделать, теперь всё решает игра и если её разработчик решит отнестись к оптимизации кода легкомысленно, то вероятность того, что еще вчера отлично работавший Microsoft Flight Simulator сегодня выдаст «слайд-шоу».

Кстати, теперь и драйвера будут более активно принимать участие в использовании ресурсов оборудования, а игры будут к этому «прислушиваться» и если смотреть обзоры, то у NVIDIA получается неплохо, а у AMD так и вовсе праздник с новым API эти видеокарты могут выдавать очень хорошие результаты за счет более грамотной загрузки графических блоков видеокарты.

А еще DirectX 12 (в теории) должен будет обязать разработчиков Microsoft Flight Simulator писать системные требования честно, потому что сослаться теперь на «это ты такой» не получится, то есть если вы написали, что рекомендуемое оборудование такое-то, то это значит вы всё протестировали и гарантируете работу игры на этом оборудовании.

В — краткие (и предварительные) выводы

Во-первых, если уж Microsoft Flight Simulator планируют выпустить с поддержкой DirectX 12, то это потребует масштабной переработки движка и плотной работы со сторонними разработчиками, чтобы и они понимали, как это работает и взаимодействует с «железом».

Во-вторых, переход не должен быть резким, а то велик риск повторить путь Prepar3Dv5 или болезненную миграцию X-Plane 11 на API Vulkan.

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

В-четвертых, прирост производительности за счёт перехода на DirectX 12 заметят только владельцы старших видеокарт, а обладатели карт начального и среднего уровня могут, наоборот, увидеть снижение ФПС-ов.

И последнее, грамотный переход на API DirectX 12 за счёт того, что видеоадаптеры AMD могут с ним работать эффективнее, чем решения от NVIDIA может изменить расстановку сил в части «лучшего железа для виртуальных полётов».

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

+1
0
+1
0
+1
0
+1
3
+1
0
+1
0

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Send this to a friend