Наближається вихід Windows 10, тому сьогодні увагу виробників відеокарт, розробників ігор і геймерів прикута до нових API. Але більшість користувачів як і раніше плутаються в тому, які відеокарти будуть підтримувати новий DX 12 і в якому вигляді. Нас знову чекають кілька рівнів підтримки. Вони відповідають різним рівням апаратної і програмної підтримки, нижче ми якраз розглянемо їх більш детально.
Більшість сучасних відеокарт, будь то від AMD або NVIDIA, підтримують DirectX 12 в "рідному" режимі. Однак мова тут йде про мінімальний рівень підтримки, старі GPU не зможуть повністю реалізувати всі технології, оскільки вони вийшли два-три роки тому. Але дозвольте пролити світло на це питання.
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_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
При растеризации невеликого об'єкта / пікселя в деяких випадках краще враховувати всі покриті точки вибірки, нехай навіть частково. Також консервативна растеризация важлива при вокселізаціі VXGI . Покращена методика найбільш помітна і при розрахунку тіней.
апаратна підтримка
Звичайно, багатьох читачів цікавить питання про те, які GPU або відеокарти будуть підтримувати DirectX 12 і на якому рівні. Хоча обидва розробника GPU AMD і NVIDIA кілька років говорять про підтримку DirectX 12, вона поки залишається досить обмеженою.
Підтримка DirectX 12 на сучасних відкритих Архітектура GPU DirectX 12 API DirectX 12_0 DirectX 12_1 DirectX "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 ситуація з підтримкою прояснилася.