NVIDIA раскрыла информацию о поддержке DirectX 12 на собственных видеокартах

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

directx12Близится выход Windows 10, поэтому сегодня внимание производителей видеокарт, разработчиков игр и геймеров приковано к новым API. Но большинство пользователей по-прежнему путаются в том, какие видеокарты будут поддерживать новый DX 12 и в каком виде. Нас вновь ожидают несколько уровней поддержки. Они соответствуют разным уровням аппаратной и программной поддержки, ниже мы как раз рассмотрим их более детально.

Большинство современных видеокарт, будь то от AMD или NVIDIA, поддерживают DirectX 12 в "родном" режиме. Однако речь здесь идёт о минимальном уровне поддержки, старые GPU не смогут полностью реализовать все технологии, поскольку они вышли два-три года назад. Но позвольте пролить свет на данный вопрос.

Новые технологии DirectX 12
Новые технологии DirectX 12

DirectX 12 API

Начнём с API DirectX 12. Важной частью API является снижение избыточной вычислительной нагрузки, что верно и для других низкоуровневых API, таких как Mantle. Здесь суть кроется не столько в представлении новых технологий, сколько в более эффективном использовании доступных ресурсов. Первые тесты под Windows 10 уже показали существование потенциала производительности. Но данные тесты были ограничены определёнными сценариями, и пока не совсем понятно, какой прирост производительности можно ожидать в играх из-за снижения избыточной вычислительной нагрузки.

На низком уровне API DirectX 12 обеспечивает для программистов более эффективные средства доступа к "железу". Сюда входит и улучшенное управление видеопамятью. Так что потенциально перед программистами открываются дополнительные возможности, но при этом и влияние ошибок может быть весьма печальным.

Технология Asynchronous Compute тоже является частью низкоуровневой поддержки, она позволяет лучше и эффективнее использовать ступени фиксированного конвейера рендеринга и уменьшить время рендеринга. Так что одновременно можно выполнять больше команд, а также задействовать больше ступеней конвейера. Уменьшение времени рендеринга приведёт к более высокой частоте кадров в секунду и к снижению задержек, что положительно сказывается на некоторых областях – например, на поддержке очков виртуальной реальности VR.

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Новые технологии DirectX 12

Новые технологии DirectX 12

К уровню DirectX 12_0 относится Typed UAV и новая модель Bind, которые ориентируют API на большее число ядер CPU, что обеспечивает более широкую параллелизацию и производительность. Обе функции мы уже рассматривали в обзоре GeForce GTX 980 и GTX 970.

DirectX 12_1

Ещё на шаг дальше Microsoft и разработчики GPU пошли с DirectX 12_1. Но данный урвоень функций поддерживают только самые новейшие GPU. К ним относятся все GPU на основе 2-го поколения "Mawell". Одна из новых технологий – консервативная растеризация (Conservative Rasterization). Она используется для фильтра динамического суперразрешения (Dynamic Super Resolution) и сглаживания Multiframe Sampled Anti-Aliasing.

Новые технологии DirectX 12Новые технологии DirectX 12

Новые технологии DirectX 12

При растеризации небольшого объекта/пикселя в некоторых случаях лучше учитывать все покрытые точки семплирования, пусть даже частично. Также консервативная растеризация важна при вокселизации VXGI. Улучшенная методика наиболее заметна и при расчете теней.

Аппаратная поддержка

Конечно, многих читателей интересует вопрос о том, какие GPU или видеокарты будут поддерживать DirectX 12 и на каком уровне. Хотя оба разработчика GPU AMD и NVIDIA несколько лет говорят о поддержке DirectX 12, она пока остаётся довольно ограниченной.

Поддержка DirectX 12 на современных видеокартах
Архитектура GPUDirectX 12 APIDirectX 12_0DirectX 12_1DirectX "12_2"
NVIDIA "Maxwell" 2-го поколения Да Да Да Да
NVIDIA "Maxwell" 1-го поколения Да Нет Нет Нет
NVIDIA Kepler  Да Нет Нет Нет
NVIDIA Fermi  Да Нет Нет Нет
AMD GCN 1.2 Да - - -
AMD GCN 1.1 Да - - -
AMD GCN 1.0 Да - - -

По крайней мере, NVIDIA вместе с представлением GeForce GTX 980 Ti пролила свет на поддержку нового API. Только видеокарты 2-го поколения архитектуры "Maxwell" будут поддерживать все упомянутые ранее функции и технологии. Среди них - GeForce GTX Titan X, GTX 980 Ti, GTX 980, GTX 970 и GTX 960. Все другие видеокарты вплоть до линейки GeForce 500 с GPU "Fermi" смогут поддерживать DirectX 12 API на базовом уровне, пользователи выиграют от улучшенного взаимодействия между драйвером и API.

К сожалению, со стороны AMD картина не такая понятная. Архитектура "Graphics Core Next" тоже даёт разные уровни поддержки. GCN версии 1.2 была реализована на видеокартах Radeon R9 285, в модифицированном виде мы получим поддержку и на новых видеокартах "Fiji". Версии GCN 1.1 (линейки Radeon 290 и Radeon 260) и GCN 1.0 (линейки Radeon 200 и Radeon 7000) тоже совместимы с DirectX 12, но, скорее всего, тоже на самом нижнем уровне. К сожалению, от AMD пока нет чётких утверждений по поводу поддержки DirectX 12. Некоторые функции, подобные асинхронным шейдерам (Asynchronous Shaders), должны работать на всех GPU с архитектурой "Graphics Core Next".

Вероятно, нам придётся подождать некоторое время, прежде чем AMD, NVIDIA и Intel представят более конкретную информацию об уровне функций. По крайней мере со стороны NVIDIA ситуация с поддержкой прояснилась.