DirectX 12 був випущений разом з Windows 10 у 2015 році. З його випуском DirectX 12 від Microsoft відкрив нову еру для геймерів і розробників ігор. DirectX 12, здатний зменшити навантаження на ЦП і підвищити продуктивність графічного процесора, швидко зробив собі ім’я.
Однак чи справді підвищити продуктивність так просто, як перейти з DirectX 11 на DirectX 12? Давайте дізнаємось, поглянувши на відмінності між DirectX 11 і 12.
Що таке DirectX від Microsoft?
Як пояснюється в нашому огляді Microsoft DirectX, DirectX — це набір програмних інтерфейсів прикладних програм (API), які використовуються для виконання завдань, пов’язаних із мультимедіа. Це включає програмування ігор на платформах Microsoft, таких як Windows і Xbox. Щоб надати деякий контекст, давайте коротко поговоримо про API.
API дає змогу двом або більше комп’ютерним програмам спілкуватися одна з одною, про що ми говоримо в нашому огляді API. Подумайте про це як про телефон. Якщо ваша мама надішле вам текстове повідомлення зі списком покупок, ваш телефон отримає ці дані та відобразить їх для вас. По суті, це API.
Які відмінності між DirectX 11 і DirectX 12?
Отже, які відмінності між DirectX 11 і DirectX 12? Простіше кажучи, DirectX 12 — це остання версія DirectX. Однією з найбільш помітних відмінностей є те, як вони взаємодіють із вашим обладнанням. Більшість ігор, розроблених за допомогою DirectX 11, використовують лише від двох до чотирьох ядер ЦП. Одне з цих ядер зазвичай повідомляє графічному процесору, що робити.
Потім гра використовує решта ядер для обробки різних інтенсивних налаштувань процесора, таких як частинки в грі або малювання відстані. З іншого боку, DirectX 12 розподіляє робоче навантаження центрального процесора на кілька ядер і дозволяє кожному ядру спілкуватися з графічним процесором одночасно.
DirectX 12 також поставляється з деякими модними наворотами. Це включає асинхронні обчислення та об’єкти стану конвеєра (PSO). Асинхронні обчислення збільшують використання GPU, дозволяючи кільком навантаженням працювати паралельно. Це по суті розкриває повний потенціал вашого GPU.
Окрім візуалізації графіки, ваш графічний процесор виконує широкий спектр інших завдань, наприклад запуск алгоритмів машинного навчання. За допомогою DirectX 11 графічний процесор може виконувати лише одне з цих завдань за раз і в певному порядку. У цьому випадку продуктивність знижується, оскільки ресурси графічного процесора використовуються неефективно.
Думайте про це як офіціанта в ресторані. Коли офіціант приймає ваше замовлення, він запитує вас, що ви хочете випити в першу чергу. Коли ви отримуєте напої, вони запитують, що ви хочете на основну страву. Ваше замовлення виконується поетапно. Офіціант не питатиме вас, що б ви хотіли на десерт, перш ніж ви з’їсте основну страву. Хоча це ефективно, це не настільки ефективно, як могло б бути.
В обчисленнях кожне завдання офіціанта виконував би інший ресурс GPU. Доки ви не отримаєте напій, ресурси графічного процесора, необхідні для замовлення основної страви, будуть неактивні. Завдяки асинхронним обчисленням DirectX 12 офіціант міг би прийняти ваше замовлення одразу, як у мережі швидкого харчування. Це максимізує використання графічного процесора та покращує продуктивність у іграх.
DirectX 12 також представив об’єкти стану конвеєра (PSO). У DirectX 11, коли геометрія гри надсилається графічному процесору для візуалізації, різні параметри апаратного забезпечення відповідають за інтерпретацію та рендеринг цих даних. Це називається графічним конвеєром і потоком вхідних і вихідних даних, які виникають під час рендерингу графічним процесором кадрів. Однак графічний конвеєр DirectX 11 не ідеальний.
Цей конвеєр містить набір різних станів, включаючи стан растеризації, стан змішування та стан трафарету глибини, серед інших компонентів. У DirectX 11 існують залежності між цими різними станами. У результаті один стан не може бути завершено, доки не буде визначено попередній стан. Це зменшує використання графічного процесора та збільшує навантаження на процесор за рахунок продуктивності.
Щоб уникнути цього, DirectX 12 представив PSO, об’єкти, які описують стан усього графічного конвеєра. PSO схожі на пляшку, яка містить різні стани та компоненти, необхідні для створення іміджу. Це дозволяє графічному процесору попередньо обробляти кожен залежний стан замість того, щоб постійно переобчислювати стани на основі поточного графічного конвеєра.
Це суттєво зменшує навантаження на ЦП, що спостерігається в DirectX 11, і покращує продуктивність. Отже, як виглядає ця різниця? За даними Microsoft, DirectX 12 зменшує навантаження на ЦП на 50 відсотків і покращує продуктивність графічного процесора на 20 відсотків. Хоча це значні покращення, це не означає, що ви побачите ті самі результати.
Чому перейти з DirectX 11 на DirectX 12 непросто
DirectX 11 було вперше випущено для Windows Vista 27 жовтня 2009 року. Отже, DirectX 12, який вийшов у 2015 році, між DirectX 11 і DirectX 12 склав шість років. За цей час тисячі ігор було розроблено з використанням DirectX 11. На жаль, перехід від DirectX 11 до DirectX 12 зовсім не простий.
DirectX 11 — це так званий API високого рівня. Простіше кажучи, розробникам легше працювати з API високого рівня. Результат – стабільні, відшліфовані ігри, у які можна грати. З іншого боку, DirectX 12 — це низькорівневий API, який відрізняється від DirectX 11. Хоча він дозволяє розробникам точно налаштовувати оптимізацію на детальному рівні, він також вимагає великих знань для використання.
З огляду на це, гра, розроблена в DirectX 12, може мати гіршу продуктивність залежно від знання розробником API. Деякі покращення входять у DirectX 12, але насправді це залежить від того, наскільки добре розробник може це реалізувати. З цієї причини багато розробників вирішують дотримуватися API високого рівня, наприклад DirectX 11.
DX 11 проти DX 12: що вибрати?
Відповідь залежить від кількох речей, наприклад, яку гру ви намагаєтеся запустити. Наприклад, Guild Wars 2 працює на DirectX 11. Навіть якщо ваша ОС і апаратне забезпечення можуть використовувати DirectX 12, у вас не буде можливості вибрати DirectX 11 у Guild Wars 2, оскільки гра його не підтримує. Це повністю рішення розробника ArenaNet.
Автор зображення: Мартін Керштайн/Guild Wars 2
Вірте чи ні, ArenaNet знадобилося дев’ять років, щоб перейти від DirectX 9 до DirectX 11. Однак деякі ігри підтримують як DirectX 11, так і DirectX 12, зокрема Fortnite (читайте нашу шпаргалку Fortnite), Battlefield 5, Shadow of розкрадачка гробниць тощо. Користувачі можуть перемикатися між DirectX 11 і DirectX 12 у налаштуваннях гри.
Той факт, що деякі ігри підтримують DirectX 11 і 12, напевно, змусив вас задуматися про продуктивність у грі. Вибір DX 11 або DX 12 забезпечує кращу продуктивність у грі? Наступне відео демонструє відмінності між DirectX 11 і DirectX 12 у ряді ігор, демонструючи важливі характеристики, такі як середня частота кадрів за секунду, використання ЦП, використання графічного процесора тощо, з використанням AMD Ryzen 3600, Nvidia GeForce RTX 3060 Ti та 16 ГБ оперативної пам’яті DDR4.
Результати дивують у багатьох відношеннях, іноді з невеликою візуальною різницею між DX 11 і DX 12, незважаючи на багаторічну різницю між їхніми випусками. Можливо, ви також помітили різницю в навантаженні GPU та CPU між обома версіями DirectX, причому версії DX 12 кожної гри зазвичай потребують менше ресурсів, ніж старіша DX 11.
Окрім підтримки в грі, вибір між DirectX 11 і DirectX 12 також залежатиме від вашого апаратного забезпечення. Майже будь-який сучасний графічний процесор підтримує DirectX 12, але цього не можна сказати про старіші графічні процесори, такі як Radeon HD 4870. Цей графічний процесор, випущений у 2008 році, підтримує лише DirectX 10. Це означає, що він не зможе працювати з більшістю сучасних ігри, які працюють за допомогою DirectX 11 і DirectX 12.
DirectX 12 – правильний вибір для вас?
Загалом, перехід від DirectX 11 до DirectX 12 не такий чорно-білий, як здається. Це залежить від низки факторів, таких як апаратне забезпечення, програмне забезпечення, операційна система, а також від того, чи підтримує гра взагалі обидва. Усе це потрібно враховувати, перш ніж приймати рішення, і це, ймовірно, буде вірним і для майбутніх поколінь DirectX.