عملکرد DirectX12 در سال ۲۰۱۷؛ آیا DX12 در حال محو شدن است؟
سه سال پیش بود که شرکت مایکروسافت با DirectX12 پا به مراسم GDC 2014 گذاشت و آن را آینده API نامید. حالا که حدود دو سال از عرضهی این API میگذرد، میتوان تا حد زیادی دربارهی این ادعای مایکروسافت قضاوت کرد. در این مقاله قصد داریم تا وضعیت بازیهایی را که در سال ۲۰۱۷ از DX12 پشتیبانی میکردند، بررسی کنیم.
سال ۲۰۱۶ و در زمانی که فقط یک سال از انتشار DirectX12 بر روی ویندوز ۱۰ میگذشت، چندین بازی برای اولینبار از DX12 پشتیبانی کردند. با نگاهی نهچندان تخصصی و عمیق هم مشخص بود که ورژن DX12 بازیهای ذکرشده، بازده پایانتری نسبت به ورژن DX11 همان بازیها دارند که به شدت غافلگیرمان کرد و به همین دلیل DX12 در معرفی خود به عنوان یک API نوظهور و بزرگ شکست خورد؛ با اینکه سال پیش این بازیها با کارتهای گرافیک Nvidia تست شدند، اما اکنون و برای سال ۲۰۱۷ قصد داریم تا به بررسی تمام بازیهای DX12 برروی کارتهای گرافیکی Nvidia و AMD بپردازیم.
قبل از شروع مطلب، بهتر است اشاره کنیم که در سال ۲۰۱۷، فقط ۵ بازی از DX12 و ۱ بازی هم از Vulkan به عنوان API پشتیبانی کردند که به ترتیب عبارتند از Forza Motorsport 7، Star Wars Battlefront II، Sniper Elite 4، Halo Wars 2 و Total War: Warhammer 2 برای DX12 و Wolfenstein II: The New Colossus برای Vulkan. شاید بد نباشد که بدانید در سال ۲۰۱۶، ۱۱ بازی از DX12 و ۲ بازی از Vulkan استفاده میکردند. خیلی خندهدار و عجیب است که تعداد بازیهای DX12 در سال ۲۰۱۷ نسبت به سال پیش به جای افزایش، با کاهش ۵۰% مواجه شده است!
یکی دیگر از نکات جالبی که دربارهی DX12 وجود دارد، این است که در سال ۲۰۱۷ بیشتر توسعهدهندگان بهسادگی از کنار DX12 گذشتهاند و ترجیح دادهاند که از این API استفاده نکنند. این موضوع در حالی است که بعضی از این توسعهدهندگان اعلام کرده بودند که در حال ارزیابی و بررسی DX12 هستند. یکی از این توسعهدهندگان، استودیوی Codemasters بود که در سال ۲۰۱۶ اعلام کرده بود که موتور بازیسازی آنها با نام EGO از DX12 پشتیبانی خواهد کرد. با این وجود بازی F1 2017 که امسال منتشر شده است، فقط از DX11 استفاده میکند. نمونهی دیگر هم شرکت یوبیسافت است. این شرکت فرانسوی در سال ۲۰۱۶ ادعا کرد که در حال آزمایش DX12 است، اما دو بازی بزرگ این شرکت با نامهای Watch Dogs 2 و Assassin’s Creed Origins هیچکدام از DX12 پشتیبانی نمیکنند و تنها به استفاده از DX11 اکتفا کردهاند.
اما در بررسی بازیهای ۲۰۱۷ با Sniper Elite 4 شروع میکنیم که به تنها بازی امسال تبدیل شده است که نسخهی DX12 آن از نسخهی DX11 آن برروی کارتهای گرافیک AMD عملکرد بهتری داشته است. در نظر داشته باشید که دو بازی Forza Motorsport 7 و Halo Wars 2 تنها از DX12 پشتیبانی میکنند؛ بنابراین نمیتوان عملکرد این دو بازی برروی DX11 را مورد بررسی قرار داد. از طرف دیگر عناوین Total War: Warhammer 2 و Battlefront II با استفاده از DX11 سرعت بهتری را نسبت به نسخهی DX12 خود ارائه میدهند. این موضوع چندان غافلگیرکننده نیست؛ زیرا سال پیش هم بازیهای Warhammer 1 و Battlefield 1 دقیقا همین وضعیت را داشتند.
در تصاویر زیر میتوانید عملکرد ۵ بازی ذکرشده در استفاده از DX11 و DX12 را مشاهده کنید.
در حالی که Forza Motorsport 7 و Halo Wars 2 عملکردی فوقالعاده برروی رایانههای شخصی دارند، اما این دو بازی از نهایت قدرت پردازندههای چند هستهای (Multi-Core CPU) استفاده نمیکنند. وجود این مشکل به هیچوجه قابلقبول نیست؛ زیرا از نظر تئوریک، انتظار میرفت تا DX12 در این زمینه، بهتر عمل کند، اما این دو بازی فقط از ۲ رشتهی پردازنده (Thread) استفاده میکنند. بله، درست است که این دو بازی میتواند با نرخ بیش از ۱۰۰ فریم در ثانیه اجرا شود، اما کاملا مشخص است که پردازنده دچار افت بازده (به اصطلاح Bottleneck) شده است؛ در حالی که بیشتر رشتهها و هستههای پردازنده از حداکثر توان خود استفاده نمیکنند و حتی بعضی از آنها در حال استراحت هستند.
اما با این وضعیت، آیندهی DX12 چگونه خواهد بود؟ با عرضهی دو کنسول ایکسباکس وان ایکس و پلیاستیشن ۴ پرو احتمال میرود که از این به بعد، حتی سازندگان کمتری منابع خود را به API جدید مایکروسافت اختصاص بدهند. بله، کاملا درست است که استفادهی درست از DX12، باعث ارتقای عملکرد بازیها میشود و آزادی عمل بیشتری به سازندگان میدهد، اما آنطور که به نظر میرسد، این API چیزی نیست که بیشتر سازندگان در این مقطع به آن نیاز داشته یا به عبارت دقیقتر، قصد استفاده از آن را داشته باشند. مشخصا آزادی عمل بیشتر به این معناست که سازندگان باید منابع بیشتری را صرف بازسازی و بهینهسازی موتور بازیسازی خود برای بهرهمندی از این API بکنند. برای مثال قابلیت پشتیبانی از چند کارت گرافیک (Multi-GPU Support) در DX12 را درنظر بگیرید. این ویژگی برروی کاغذ بسیار جذاب به نظر میرسد، زیرا به گیمرهای PC این امکان را میدهد تا از کارتهای گرافیکی از دو شرکت متفاوت استفاده کنند. با این حال و برخلاف DX11 که دو شرکت Nvidia و AMD خودشان پیشقدم شدند و به ترتیب تکنولوژیهای SLI و Crossfire را معرفیکردند، در بازیهای DX12، سازندگان مجبورند تا تمام کارهای اضافی مربوط به Multi-GPU را خودشان انجام دهند و آن طور که از شواهد پیداست، به نظر میرسد که سازندگان حاضر به انجام این کارهای اضافی نیستند و ترجیح میدهند منابع خود را برروی بازی متمرکز کنند.
این قضیه دقیقا همان چیزی است که آقای «جورجن کتسمن» (Jurjes Katsman) مدیرعامل شرکت Nixxes در ماه فوریهی ۲۰۱۷ به آن اشاره کرده بود. کتسمن ادعا کرده بود که تغییرات حاصل از استفادهی DX12 در پردازندهها جزئی و ناچیز است؛ به خصوص برای گیمرهایی که از یک پردازندهی حرفهای و گرانقیمت استفاده میکنند یا کسانی که بازیها را با رزولوشن ۱۴۴۰p ،۴K و با بالاترین تنظیمات گرافیکی اجرا میکنند. البته کتسمن تایید کرد که با DX12 میتوان تا حدی از افت بازده (Bottleneck) پردازنده در اجراهای سنگین جلوگیری کرد و ۱۰% هم به حداکثر کارایی کارت گرافیک اضافه کرد، اما کدگذاری DX12 به قدری مشکل است که ارتقای عملکرد بازی با DX12، ارزش هزینهی چندبرابری را برای سازندگان ندارد.
DX12 تواناییهای بیشتری از فقط محاسبهی Async دارد، اما بیشتر بازیسازانی که بازیهای مبتنی بر DX12 میسازند، تنها از این مزیت DX12 استفاده میکنند. DX12 قابلیتهای بیشتری برای Multi-Tasking پردازنده ارائه میدهد، میتواند میزان استفادهی بازیها از پردازندهی مرکزی را کاهش دهد و میتواند Draw Call بیشتری را بکار ببرد. مورد آخری در بهبود اجرای بازیهای جهانباز و بازیهایی که به هر دلیلی از حداکثر قدرت سیستم استفاده نمیکنند، نقش بسیار موثری دارد. در ضمن این API میتواند دسترسی و استفادهی بازیها از کارت گرافیک را کاهش دهد؛ چیزی که کار را برای توسعهدهندگان باتجربه آسان میکند و البته ممکن است سازندگان نوپا را به دلیل بعضی پیچیدگیها بترساند!
در یک جمعبندی کلی باید بیان کنیم که در حال حاضر، DX12 وضعیت خوبی ندارد و اکثر بازیسازان بزرگ این صنعت از آن پشتیبانی نمیکنند. همانطور که «تیاگو رودریگز» (Tiago Rodriguez) برنامهنویس ۳D شرکت یوبیسافت بیان کرده است، اکثر سازندگان از DX12 راضی نخواهند بود؛ مگر اینکه فقط به فکر افزایش کیفیت اجرای بازی خود، بدون درنظر گرفتن هزینهها باشند. ضمنا رودریگز اشاره کرده است که کار و هزینه زیادی لازم است تا سرعت اجرای یک بازی DX12 با ورژن DX11 آن برابر شود؛ به همین دلیل است که استفاده از DX12 در شرایط کنونی، چندان عقلانی و منطقی به نظر نمیرسد. البته با عرضهی جدیدترین کارت گرافیک شرکت Nvidia که GTX Titan V نام دارد و از معماری Volta این شرکت رونمایی میکند، میتوان مشاهده کرد که این کارت گرافیکی به خوبی میتواند از قابلیتهای DX12 استفاده کند، اما این موضوع که در حال حاظر، فقط یک کارت گرافیک در بازار برای استفاده از این API بهینه شده است، اصلا قابل قبول نیست. در صورتی که این روند نزولی ادامه پیدا کند، DX12 که با شعار بزرگترین API برای بازیسازی معرفی شده بود، به بدترین API تولیدشده توسط مایکروسافت تبدیل خواهد شد! به عقیدهی بسیاری از کارشناسان و طرفداران، DX12 تنها به این دلیل عرضه شده تا کاربران رایانههای شخصی را مجاب به خرید ویندوز ۱۰ بکند و با شرایط اسفباری که این API دارد، این تئوری کاملا درست به نظر میرسد.
نظر شما در این مورد چیست؟ آیا شما با پشتیبانی بازیهای روز دنیا از DirectX12 موافقید؟ نظر خود را با ما به اشتراک بگذارید.