آیا DirectX 12 بهتر از DirectX 11 است؟ در اینجا نحوه مقایسه آنها …
DirectX 12 در کنار ویندوز 10 در سال 2015 منتشر شد. با انتشار آن، DirectX 12 مایکروسافت عصر جدیدی را برای گیمرها و توسعه دهندگان بازی آغاز کرد. DirectX 12 که قادر به کاهش سربار CPU و در عین حال افزایش عملکرد GPU است، به سرعت نامی برای خود دست و پا کرد.
با این حال، آیا واقعاً افزایش عملکرد شما به سادگی تغییر از DirectX 11 به DirectX 12 است؟ بیایید با نگاهی به تفاوت های DirectX 11 و 12 دریابیم.
DirectX مایکروسافت چیست؟
همانطور که در مرور کلی ما از Microsoft DirectX توضیح داده شد، DirectX مجموعه ای از رابط های برنامه نویسی کاربردی (API) است که برای رسیدگی به وظایف مربوط به چند رسانه ای استفاده می شود. این شامل برنامه نویسی بازی بر روی پلتفرم های مبتنی بر مایکروسافت مانند ویندوز و ایکس باکس می شود. برای ارائه برخی زمینه ها، اجازه دهید به طور خلاصه در مورد API ها صحبت کنیم.
یک API امکان برقراری ارتباط دو یا چند برنامه کامپیوتری با یکدیگر را فراهم می کند، که در بررسی کلی خود از API ها به آن می پردازیم. مثل یک تلفن به آن فکر کنید. اگر مادرتان با یک لیست خواربار برای شما پیامک ارسال کند، تلفن شما آن داده ها را دریافت کرده و برای شما نمایش می دهد. که اساسا یک API است.
چه تفاوت هایی بین DirectX 11 و DirectX 12 وجود دارد؟
بنابراین، تفاوت بین DirectX 11 و DirectX 12 چیست؟ به زبان ساده، DirectX 12 آخرین نسخه DirectX است. یکی از قابل توجه ترین تفاوت ها نحوه تعامل آنها با سخت افزار شما است. اکثر بازیهای توسعهیافته با DirectX 11 فقط از دو تا چهار هسته CPU استفاده میکنند. یکی از این هسته ها معمولاً به GPU می گوید که چه کاری انجام دهد.
سپس بازی از هستههای باقیمانده برای مدیریت تنظیمات مختلف CPU مانند ذرات بازی یا ترسیم فاصله استفاده میکند. از سوی دیگر، DirectX 12 حجم کاری یک CPU را در چندین هسته پخش می کند و به هر هسته اجازه می دهد تا به طور همزمان با GPU صحبت کند.
DirectX 12 همچنین با برخی از زنگ ها و سوت های فانتزی همراه است. این شامل محاسبات ناهمزمان و اشیاء حالت خط لوله (PSOs) است. محاسبات ناهمزمان با اجازه دادن به بارهای کاری متعدد به صورت موازی، استفاده از GPU را افزایش می دهد. این اساسا پتانسیل کامل GPU شما را باز می کند.
جدا از رندر گرافیکی، GPU شما طیف وسیعی از وظایف دیگر مانند اجرای الگوریتم های یادگیری ماشین را انجام می دهد. با DirectX 11، پردازنده گرافیکی تنها می تواند یکی از این وظایف را در یک زمان و به ترتیب خاصی انجام دهد. وقتی این اتفاق می افتد عملکرد ضربه می زند زیرا از منابع GPU شما به طور موثر استفاده نمی شود.
مثل یک گارسون در یک رستوران به آن فکر کنید. وقتی یک پیشخدمت سفارش شما را می گیرد، از شما می پرسند که اول چه می خواهید بنوشید. هنگامی که نوشیدنی های خود را دریافت می کنید، از شما می پرسند که برای غذای اصلی چه می خواهید. سفارش شما به صورت مرحله ای انجام می شود. پیشخدمت قرار نیست قبل از اینکه غذای اصلی خود را بخورید از شما بپرسد که برای دسر چه می خواهید. اگرچه این کارآمد است، اما آنقدر که میتوانست کارآمد نیست.
در محاسبات، یک منبع GPU متفاوت هر یک از وظایف پیشخدمت را انجام می دهد. تا زمانی که نوشیدنی خود را دریافت نکنید، منابع GPU مورد نیاز برای سفارش غذای اصلی شما بیکار خواهند بود. با محاسبات ناهمزمان DirectX 12، پیشخدمت می تواند سفارش شما را به یکباره دریافت کند، مانند یک زنجیره فست فود. این کار استفاده از GPU را به حداکثر می رساند و عملکرد بازی شما را بهبود می بخشد.
DirectX 12 همچنین اشیاء وضعیت خط لوله (PSO) را معرفی کرد. با DirectX 11، هنگامی که هندسه یک بازی به GPU ارسال می شود تا رندر شود، تنظیمات سخت افزاری مختلف وظیفه تفسیر و رندر این داده ها را بر عهده دارند. به این خط لوله گرافیکی و جریان ورودی و خروجی داده می گویند که هنگام رندر کردن فریم های گرافیکی شما رخ می دهد. با این حال، خط لوله گرافیکی DirectX 11 کامل نیست.
این خط لوله شامل مجموعه ای از حالت های مختلف، از جمله حالت شطرنجی، حالت ترکیبی و حالت استنسیل عمقی، در میان اجزای دیگر است. در DirectX 11، وابستگی هایی بین این حالت های مختلف وجود دارد. در نتیجه تا زمانی که حالت قبلی تعریف نشده باشد، نمی توان یک حالت را تکمیل کرد. این امر استفاده از GPU را کاهش می دهد و سربار CPU را با هزینه عملکرد افزایش می دهد.
برای دور زدن این موضوع، DirectX 12 PSO ها را معرفی کرد، اشیایی که وضعیت کل خط لوله گرافیکی را توصیف می کنند. PSO ها مانند یک بطری هستند که شامل حالات و اجزای مختلف مورد نیاز برای ایجاد یک تصویر است. این به GPU اجازه می دهد تا به جای محاسبه مجدد حالت ها بر اساس خط لوله گرافیکی فعلی، هر حالت وابسته را از قبل پردازش کند.
این به طور قابل توجهی سربار CPU موجود در DirectX 11 را کاهش می دهد و عملکرد را بهبود می بخشد. بنابراین، این تفاوت چگونه به نظر می رسد؟ خب، طبق گفته مایکروسافت، DirectX 12 سربار CPU را تا 50 درصد کاهش می دهد و عملکرد GPU را تا 20 درصد بهبود می بخشد. در حالی که آن ها برخی از پیشرفت های اساسی هستند، این بدان معنا نیست که شما همان نتایج را خواهید دید.
چرا تغییر از DirectX 11 به DirectX 12 ساده نیست
DirectX 11 برای اولین بار در 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 است.
باور کنید یا نه، نه سال طول کشید تا ArenaNet از DirectX 9 به DirectX 11 تغییر مکان داد. با این حال، برخی از بازی ها از DirectX 11 و DirectX 12 پشتیبانی می کنند، از جمله Fortnite (برگ تقلب Fortnite ما را بخوانید)، Battlefield 5، Shadow of Tomb Raider و موارد دیگر. کاربران می توانند در تنظیمات بازی بین DirectX 11 و DirectX 12 جابجا شوند.
اکنون، این واقعیت که برخی از بازی ها از DirectX 11 و 12 پشتیبانی می کنند، احتمالاً شما را در مورد عملکرد درون بازی متعجب کرده است. آیا انتخاب DX 11 یا DX 12 عملکرد بهتری در بازی ارائه می دهد؟ ویدیوی زیر تفاوتهای DirectX 11 و DirectX 12 را در طیف وسیعی از بازیها نشان میدهد و مشخصات حیاتی مانند میانگین فریم در ثانیه، استفاده از CPU، استفاده از GPU و موارد دیگر را با استفاده از 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 نیز صادق خواهد بود.