یکی از رابط های برنامه کاربردی یا API هایی که همواره
بسیار مورد توجه تولید کنندگان سخت افزار و برنامه نویسان بوده، DirectX
است. اما این توجه به خاطر چیست؟ در گذشته برنامه نویسان سیستم عامل داس
(DOS) مجبور بوده اند که برای نوشتن برنامه های خود، مستقیما با سخت
افزار ها در ارتباط باشند. نتیجه هم این بود که برنامه های آنان، فقط با
چند سخت افزار خاص اجرا می شد و این مساله کار را بسیار سخت می کرد. اما از
زمانی که مایکروسافت DX را ابداع کرد، کارها بسیار راحت تر شد و حالا
این دایرکت ایکس است که مسئول برقراری ارتباط بین سخت افزارها و نرم
افزارها است. پس این که دایرکت ایکس به این اندازه مورد توجه باشد، چندان
دور از ذهن نیست.
حالا که با دایرکت ایکس آشنا شدید، وقت آن رسیده که به بررسی DX 11
بپردازیم؛ رابطی که این روز ها بسیار مورد توجه است. اما به راستی نکات
مثبت دایرکت ایکس یازده چیست؟
دایرکت ایکس یازده در واقع یک مجموعه کامل تر از این رابط است که
بهبودهایی در زمینه Tessellation و Multi-Threading پیدا کرده. همچنین
دو الگوریتم جدید برای متراکم کردن و فشرده سازی تکسچرها، بیشتر کردن
Cache مربوط به تکسچرها و ارائه Shader Model5، باعث شده اند تا پردازش
تصویر و سرعت دایرکت ایکس یازده بهبود یابد. به این موارد، سیستم Direct
Compute را اضافه کنید تا به قدرت DX11 پی ببرید. اگر به مواردی ناآشنا
بر خوردید نگران نباشید؛ در ادامه آنها را هم به شما معرفی خواهیم کرد.
Multi-Threading در چه حال است؟
گاهی اوقات لازم می شود که هر برنامه و بازی دو یا چند عمل را به صورت هم
زمان انجام دهد؛ بدون این که از دسترس خارج و به قول معروف Not
Responding شود. برای مثال در بازی ها وقتی شما در حال تیر اندازی هستید،
از ویژگی مولتی تریدینگ استفاده می کنید. چون هم حرکات شما پردازش می شود و
هم حرکات و اعمال دشمنان شما.
پشتیبانی Multi-Threading سالها است که توسط انویدیا و ای تی آی صورت می
گیرد و به پردازنده های چند هسته ای اجازه می دهد به طور مستقیم و به صورت
موازی با پردازنده گرافیکی یا GPU ارتباط یابند. اما دایرکت ایکس یازده
این امر را یک گام به جلو برده و جا را برای Thread های بیشتر باقی می
گذارد. حالا درایور گرافیک، برنامه و دایرکت ایکس Runtime می توانند در
Thread های جدا قرار گیرند. بنابر این اگر کیفیت تکسچرها در همان حد
دایرکت ایکس 10 باقی بماند، می توان عملکرد بهتری را در مولتی تریدینگ های
سنگین شاهد بود.
سلام بر Tessellation:
لازم است اول به توضیح Tessellation (تسلیشن) بپردازیم: مدل های سه بعدی
از راس های مختلفی تشکیل شده اند. این مدل ها درست دیده نمی شوند، مگر آن
که فواصل بین راس هایشان پر شوند و به این کار Tessellation می گویند.
این نکته را بدانید که مدل های پرجزئیات تر از راس های بیشتری تشکیل شده
اند و در نتیجه به Tessellation بیشتری نیاز دارند.
کاراکتر ها در بازی های امروزی واقعا پیچیده و گسترده شده اند و طراحان
تمام تلاش خود را برای خلق مدل هایی با جزئیات بالاتر به کار می گیرند. در
گذشته شاهد این بودیم که این جزئیات فقط در میان پرده های بازی دیده می شد و
در بازی خبری از آن ها نبود. علت هم آن بود که اگر مدل ها را با جزئیات
بالا وارد بازی می کردند، بار سنگینی اعمال می شد و افت فریم دهی قطعی بود.
اما در چند سال اخیر شاهد بهبود زیادی در کیفیت بازی ها هستیم چون هم قدرت
محاسبه افزایش یافته و هم الگوریتم های Tessellation در دایرکت ایکس بهتر
شده است.
جالب است بدانید که Tessellation سخت افزاری برای اولین
بار در سال 2001 توسط شرکت ای تی آی ابداع شد اما چون در آن زمان API ها
از آن پشتیبانی نمی کردند، با استقبال زیادی از سوی توسعه دهندگان مواجه
نشد. امروزه با کمک دایرکت ایکس یازده شرایط عوض شده چون (مانند دایرکت
ایکس 10 و 9) از Tessellation سخت افزاری به عنوان یک استاندارد پشتیبانی
می کند. پس به Tessellation سخت افزاری بیشتر توجه کنید.
میان افزار Direct Compute
Direct Compute یکی از میان افزار های مهم در اجرای بازی های ویدویی
است.این میان افزار که در دایرکت ایکس یازده نیز وجود دارد، امروزه تبدیل
به یک عضو جدایی ناپذیر خانواده دایرکت ایکس شده است! دایرکت کامپیوت می
تواند زمینه اجرای محاسبات چند منظوره GPGPU را محقق کند.
اگر شما هم در مورد CUDA از انویدیا و استریم از ای تی آی شنیده اید،
بدانید که Direct Compute اهرم نیرومند مایکروسافت در این زمینه است، که
در به کارگیری این دو تکنولوژی کمک می کند.
محاسبات General Purpose computing on Graphics Processing Unit که به
اختصار GP-GPU نامیده می شود، به این صورت کار می کند که بار پردازشی را
به قسمت های کوچکتری تقسیم کرده و آنها را به طور موازی به اجرا در می
آورد. بنابراین به جای این که محاسبات تک تک و به ترتیب اجرا شوند، به صورت
یک جا اجرا می شوند و این عمل باعث افزایش بهره وری خواهد شد.
دایرکت کامپیوت اجازه می دهد که عملیات پردازشی بیشتری روی GPU انجام
گیرد و از این راه، بازدهی را افزایش می دهد. نحوه کار به این صورت است که
دستور توقف بعضی عملیات پردازشی به پردازنده داده می شود و در عوض این
عملیات بر روی GPU انجام می گیرند. به این ترتیب هم عملکرد CPU بهبود
می یابد و هم پردازش افکت هایی که قبلا در CPU غیر ممکن بود و در GPU
انجام می پذیرد.
دایرکت کامپیوت قادر به اجرای موارد بسیاری است، که می توان این ها را نام
برد: هوش مصنوعی، پردازش فیزیک اجسام، ردیابی اشعه (ray tracing)، نور
پردازی به شیوه Ambient Occlusion، پست پروسسینگ، Video Transcoding .
دایرکت کامپیوت در دایرکت ایکس 10 و 10.1 نیز وجود دارد. اما بعضی از
قابلیت های آن در دایرکت ایکس یازده بهبود زیادی یافته است.
Ambient Occlusion: یک روش سایه زنی است که در گرافیک سه بعدی کامپیوتری
استفاده می شود و به واقعی نشان دادن اجسام کمک می کند. این روش نور را در
قسمت هایی از جسم که فرورفته هستند، رقیق می کند و در نتیجه باعث ایجاد
سایه در آن قسمت ها می شود.
Post Processing: این اصطلاح معرف فرایندی است که برای
بهبود کیفیت فیلم و عکس ها استفاده می شود. روش های پردازش تصویر معمولا در
هر وسیله ی مولتی مدیا، از کامپیوتر گرفته تا دستگاه های ضبط و پخش CD و
DVD مورد استفاده قرار می گیرند. توجه داشته باشید که ملاک برتری
الگوریتم های پست پرسسینگ سرعت، شفافیت و عدم وجود پله پله گی در تصویر
نهایی است.
Ray Tracing: در این تکنیک سعی می شود که مسیر تابش نور از منبع نور به
جسم و هم چنین از اشیاء دیگر به جسم ردیابی شود. این تکنیک باعث ایجاد
بازتاب های بسیار واقع گرایانه و طبیعی می شود.
Video Transcoding: به تبدیل مستقیم داده های دیجیتال به دیجیتال،
Transcoding می گویند. بارها برای شما پیش آمده که یک فایل AVI را به
MP4 تبدیل کنید، تا آن را بر روی موبایل خود ببینید. این کار Video
Transcoding نامیده می شود.
منبع