Crytek: Async Compute – технология интересная, но сложная в реализации

Опубликовано:

crytekAMD сегодня позиционирует себя как лидера по реализации поддержки DiretX12 в собственных GPUs. Что подчеркивается результатами тестов в первых играх DirectX 12, подобных Ashes of the Singularity. В Причина кроется в поддержке асинхронных шейдеров (Asynchronous Shaders) или Async Compute. AMD неоднократно демонстрировала результаты тестов Ashes of the Singularity. Но NVIDIA с видеокартой GeForce GTX 1080 смогла догнать "красного" оппонента, демонстрируя значительный прирост производительности асинхронных шейдеров или Async Compute.

На самом деле с реализацией Async Compute не все так гладко, что связано не столько с недостатком производительности, сколько со сложностью реализации. По крайней мере, на это сетует технический директор Crytek Рок Эржавец (Rok Erjavec) в интервью DSO Gaming:

"Сегодня мы используем Asynchronous Compute при разработке в окружении VR, поскольку технология под названием Async-Timewarp/Reprojection задействуется VR API для снижения задержек и уменьшения негативных последствий случайных выпадений кадров. Конечно, мы экспериментируем и с другими вариантами использования технологии. Возможности интересны, но, по крайней мере, на сегодняшний день реализовать поддержку в сегменте ПК не тривиально из-за отсутствия стандартизации и сравнительной сырости железа, которое поддерживает технологию. Многие GPU имеют проблемные ограничения, например, на pre-emption granularity и т.д."

Как можно понять, на данный момент Async Compute используется разработчиками только для технологии Asynchronous Timewarp, то есть для компенсации кадров на очках VR на основе предсказания. Разработчики экспериментируют и с другими сферами применения, но Crytek пока не считает технологию стоящей. Интеграция не тривиальная, и тратить ресурсы разработчиков на поддержку пока рано. Тем более что на ПК нет стандартизированной реализации, в каждой архитектуре GPU имеются разные степени реализации технологии, а также свои ограничения.

Разработчики Hitman высказались в данном отношении весьма критично: реализовать правильную поддержку Async Compute очень сложно - "super hard to tune." Рок Эржавец высказал еще одну интересную мысль по поводу DirectX 12:

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

Добавьте к этому тот факт, что ранние игры DX12, по сути, являются портами путей кода с оптимизацией под DX11, поэтому пока рано говорить об играх, которые полностью задействуют сильные стороны DX12. Командам разработчиков придется заново научиться выполнять некоторые процессы, которые ранее относились к сфере ответственности разработчиков драйверов DX11. Ситуация должна улучшиться на протяжении 2016, все больше игр будут ориентироваться на новый низкоуровневый API с самого начала разработки, отличия и преимущества должны стать более очевидными".

Как видим, со стороны разработчиков оптимизм по поводу DirectX 12 весьма сдержанный. Пройдут еще несколько месяцев, прежде чем станет видна картина с поддержкой DX12 в целом. Пока что все реализации относятся, в лучшем случае, к начальному этапу спирали познания.

С нашей стороны мы уже добавили игры с поддержкой DirectX 12 в тесты. Как показали тесты GeForce GTX 1080, NVIDIA идет в правильном направлении. Теперь осталось дождаться более широкой и глубокой поддержки DX12 со стороны игр. Будем надеяться, что ждать осталось недолго.