یکی از سوالات مهم گیمرها این است که دایرکت ایکس چیست و چرا مهم است؟

DirectX مجموعه‌ای از ابزارهای برنامه‌نویسی برای ساخت بازی‌هاست که پشتیبانی کارت گرافیک از آخرین نسخه‌های آن، سرعت و کیفیت اجرای بازی و نرم‌افزارهای مربوطه را افزایش می‌دهد.

در بررسی معماری مکسول یا دقیق‌تر بگویم، Maxwell 2 به این مهم اشاره شده که از DirectX 11.3 پشتیبانی می‌کند و در واقع اولین کارت گرافیک‌هایی که از این واسط برنامه‌نویسی و افکت‌های پیشرفته‌ی گرافیکی در بازی‌ها، پشتیبانی می‌کند، GTX 980 و GTX 970 است. پیش از بررسی کامل مکسول مناسب‌تر دیدم که اشاره‌ای به ویژگی‌های خاص دایرکت ایکس 11.3 کرده و مروری بر تاریخچه‌ی دایرکت ایکس‌ها و ویژگی‌های مهم آن داشته باشم.

البته تلفظ آمریکایی و انگلیسی این واژه دیرکت و دایرکت است ولیکن به شخصه تلفظ انگلستانی کلمات را بیشتر دوست دارم!

دایرکت ایکس چیست؟

در برنامه‌نویسی گرافیکی برای بازی‌ها، یکی از APIهای معروف و پرکاربرد دایرکت ایکس مایکروسافت است. این واسط برنامه‌نویسی شامل دستورات و توابعی است که خلق افکت‌ها، سایه، حرکات، نورپردازی، تخصیص بافت به شبکه‌ای از نقاط اجسام و .... را ساده‌تر می‌کند. اگر قرار باشد سازندگان بازی از صفر شروع کنند و همه‌ی دستورات را از ابتدا بنویسند، دیگر نمی‌توان امیدوار بود که سیلی از بازی‌های جدید در هر ماه رونمایی شود.

دایرکت ایکس تنها به گرافیک محدود نمی‌شود ولیکن با توجه اهمیت گرافیک، اغلب افراد فکر می‌کنند که این واسط برنامه‌نویسی تنها برای گرافیک بازی‌ها طراحی شده است. در حقیقت دایرکت ایکس مجموعه‌ای از واسط‌های برنامه‌نویسی است که کاربرد آن در مالتی‌مدیا و به ویژه ساخت بازی است. لذا برنامه‌نویسی برای استفاده از سیستم صوتی، دسته‌ی بازی، کارت گرافیک و پردازنده و رم، همگی در این مجموعه قابل انجام است.

در ضمن برای طراحی نرم‌افزارهای مهندسی و گرافیکی از Direct3D که واسط برنامه‌نویسی گرافیک 3 بعدی است، استفاده می‌شود که به دنیای بازی ارتباطی ندارد.

چند API دایرکت ایکس

واسط‌های مختلفی که در این مجموعه گردآوری شده، با نام دایرکت مشخص می‌شوند. مثلاً Direct3D، DirectDraw، DirectMusic، DirectPlay و DirectSound از بخش‌های زیرمجموعه‌ی دایرکت ایکس است. همان‌طور که می‌بینید برای ترسیم یا Draw، محتوای سه‌بعدی یا 3D، موسیقی یا Music و صدا یا Sound از بخش‌های مختلف دایرکت ایکس استفاده می‌شود.

وقتی از واژه‌ی DirectX استفاده می‌کنیم، با استفاده از حرف X به تمام بخش‌ها اشاره کرده‌ایم. حتی جالب است بدانید که کنسول بازی Xbox هم به این علت اکس‌باکس نامیده شده که از دایرکت ایکس برای طراحی بازی‌های آن استفاده می‌شود. دو واسط برنامه‌نویسی مربوط به دسته‌ی اکس‌باکس و صدا هم XInput و XACT نام دارند که به نوعی به دایرکت ایکس اشاره می‌کنند.

اهمیت پشتیبانی کارت گرافیک از نسخه‌های جدید DirectX

کارت گرافیک‌های امروزی با چند مشخصه‌ی اساسی معرفی می‌شود. تعداد هسته‌ها، واحدهای بافت و کنترلر حافظه از عوامل مهم سخت‌افزاری است و در کنار آن پشتیبانی از آخرین واسط‌های برنامه‌نویسی مثل دایرکت ایکس، OpenGL و GPGPU (به نوعی OpenCL) هم بسیار مهم است.

به عنوان مثال وقتی یک کارت گرافیک از دایرکت ایکس 10 به صورت سخت‌افزاری پشتیبانی کند، کدهای و توابع دایرکت ایکس با شتاب‌دهی سخت‌افزاری توسط آن اجرا می‌شود که نتیجه سرعت بیشتر اجرا و گاهاً خلق افکت‌های گرافیکی ویژه و زیبا است. اهمیت گرافیک دو بعدی، صدا و حتی استفاده از دسته‌های بازی و موس و کیبورد هم کم نیست ولیکن آنچه بیشتر جلب توجه می‌کند، گرافیک خیره‌کننده‌ی بازی‌های امروزی است که به کمک شتاب‌دهی سخت‌‎افزاری قابل اجرا است.

در ویندوز 95 ارتباط می‌بایست از طریق سیستم عامل انجام می‌شد که روش بهینه‌ای نیست. در DOS هم برنامه‌نویسی و ساخت بازی مشکل است.

DirectX چیست و چرا کارت گرافیک و بازی‌ها باید از دیرکت ایکس جدید پشتیبانی کند؟

DirectX چیست و چرا کارت گرافیک و بازی‌ها باید از دیرکت ایکس جدید پشتیبانی کند؟

در تصویر زیر ارتباط همگام دایرکت ایکس با ویندوز، نرم‌افزار و سخت‌افزار به صورت شماتیک نمایش داده شده است؛ دایرکت ایکس تمام مشکلات را با انعطاف‌پذیری خود حل کرده به این شکل که تفاوتی ندارد از کدام کارت گرافیک و سخت‌افزار استفاده می‌کنید، دایرکت ایکس با ویندوز، نرم‌افزار و سخت‌افزار هماهنگ است.

DirectX چیست و چرا کارت گرافیک و بازی‌ها باید از دیرکت ایکس جدید پشتیبانی کند؟

برای استفاده از آخرین تکنولوژی‌های گرافیکی، هم سخت‌افزار باید از آخرین نسخه‌های دایرکت ایکس پشتیبانی کند و هم می‌بایست بسته‌ی نرم‌افزاری دایرکت ایکس را بروز کرد.

کتابخانه‌های لازم که حین اجرای بازی و نرم‌افزارهای مبتنی بر دایرکت ایکس لازم است، به صورت یک بسته‌ی کمتر از 150 مگابایت برای دانلود آماده شده که بهتر است حتی در جدیدترین ویندوزها هم آن را نصب کنیم:

DirectX چیست و چرا کارت گرافیک و بازی‌ها باید از دیرکت ایکس جدید پشتیبانی کند؟

پیشرفت دایرکت ایکس در گذر زمان

نمی‌خواهم به روزهای ابتدایی ویندوز بازگردم و ببینم ویژگی نسخه‌های قدیمی آن مثل DirectX 3 چه بوده بلکه فقط به سال‌های اخیر می‌پردازم.

این روزها در کیس هر کامپیوتر قدیمی، یک کارت گرافیک یا به جای آن پردازنده‌ی گرافیکی مجتمع در مادربورد پیدا می‌کنید که از نسخه‌ی 9 دایرکت ایکس پشتیبانی می‌کند. چند سالی از معرفی نسخه‌ی 10 هم گذشته است، برای همین ابتدا نسخه‌ی 10 را بررسی می‌کنم.

در کامپیوترهای امروزی، پردازنده‌ی اصلی هم با پردازنده‌ی گرافیکی ترکیب شده و یک تراشه است. اینتل به آن CPU می‌گوید ولی ای‌ام‌دی نام APU را بر آن نهاده تا از پردازنده‌ی اصلی متمایز شود.

در نسخه‌ی 10 تغییرات بسیار زیادی دیده می‌شود به طوری که برخی بازی‌های جدید مبتنی بر این نسخه با سرعت بسیار بیشتری روی کارت گرافیک‌های پشتیبانی کننده از آن اجرا می‌شوند. نسخه‌ی 10 تنها روی ویندوز ویستا و ویندوزهای بعدی قابل استفاده است هر چند تلاش‌هایی در جهت پورت کردن دایرکت ایکس 10 به ویندوز XP شده ولیکن مهم آن است که مایکروسافت پشتیبانی از نسخه‌های 10 و 11 را به ویندوز ویستا و 7 به بعد محدود کرده است.

دایرکت ایکس 10 در برابر دایرکت ایکس 9

هماهنگی سازندگان کارت گرافیک در محصولات سازگار با دایرکت ایکس 10

مهم‌ترین ویژگی دایرکت ایکس 10، هماهنگی سازندگان سخت‌افزار است. در نسخه‌ی 9 برخی سازندگان کارت گرافیک ویژگی‌ها و قابلیت‌های اضافی به محصولات خود اضافه می‌کردند که در نتیجه برخی بازی‌ها با سرعت و کیفیت بیشتری روی محصولات خاص اجرا می‌شد. در نسخه‌ی 10 هماهنگی بین سازندگان سخت‌افزار بیشتر شده است و در نتیجه سازندگان بازی هم با خیال راحت‌تری می‌توانند از آخرین تکنولوژی‌ها و قابلیت‌های دایرکت‌ایکس استفاده کنند.

برخی APIها به کلی تغییر نام داده مثلاً DirectInput و XACT جای خود را به XInput و DirectSound دادند و برخی امکانات سخت‌افزاری به شدت تغییر کرده‌اند که یکی از مهم‌ترین موارد Geometry Shader شیدرهای هندسی است. در دایرکت ایکس 10 برای محاسبه فقط از رئوس استفاده نمی‌شود بلکه می‌توان از نقاط، خطوط و مثلث‌ها استفاده کرد و افکت‌هایی مثل سایه، برخورد اجسام و نمایان بودن عناصر را بررسی نمود.به این ترتیب جزئیات بیشتری در شاخ و برگ گیاهان و چمن‌زارهای بلند رویت می‌شود.

نمونه‌ی از کاربرد آن را در دو تصویر زیر می‌بینیم، علاوه بر پوشش گیاهی ظریف‌تر و دقیق‌تر، نورپردازی پیشرفته‌تر DX10 هم مشخص است. به درختان دوردست و نورپردازی دقت کنید:

بازی کرایسیس با دایرکت ایکس 9

بازی کرایسیس با دایرکت ایکس 10

مثال دیگر چهره‌ی یک کاراکتر است که معمولاً در کنسول‌های بازی به سادگی هر چه تمام‌تر رندر می‌شود ولی با کارت گرافیک‌های رده اولی که از دایرکت ایکس 10 پشتیبانی می‌کنند می‌توان حتی عضلات و استخوان‌های صورت را هم به تصویر کشید؛ چیزی که قبل از DX10 فقط به ویدیوهای رندر شده و فیلم‌های کامپیوتری محدود می‌شد حالا در بازی‌ها هم قابل پیاده‌سازی است. نمونه‌ی آن را در تصویر زیر بررسی کنید:

DirectX چیست و چرا کارت گرافیک و بازی‌ها باید از دیرکت ایکس جدید پشتیبانی کند؟

افت سرعت یا افزایش آن؟ دایرکت ایکس جدید سریع‌تر است یا نه؟

یک سوال ساده، با دایرکت ایکس 11 می‌توان بازی را سریع‌تر اجرا کرد؟

یکی از تصورات نادرست کاربران در خرید کارت گرافیک این است که فکر می‌کنند دایرکت ایکس برای افزایش سرعت اجرای بازی‌ها ضروری است اما در حقیقت موضوع برعکس است. دایرکت ایکس‌های جدید افکت‌های گرافیکی را ارتقا می‌دهند و در مقابل کمی از سرعت اجرای بازی می‌کاهند که البته قابل توجه نیست. برخی بازی‌های معمولی‌تر هم معرفی می‌شوند که به قابلیت‌های جدید و پیشرفته کاری ندارند و تنها در این موارد است که می‌توان گفت سرعت اجرا بهبود پیدا کرده است.

مثال روشن آن بازی کرایسیس 3 است که نسبت به دو نسخه‌ی قبلی کندتر اجرا می‌شود. به شخصه وقتی نسخه‌ی اول و سوم را با آخرین تنظیمات گرافیکی اجرا می‌کنم، به این نتیجه می‌رسم که سرعت اجرای نسخه‌ی سوم، حدود 40 درصد کمتر است و صد البته گرافیک خیره‌کننده‌ی آن هم بسیار جالب توجه و طبیعی است. لذا هدف دایرکت ایکس افزایش سرعت نیست بلکه ارتقای کیفیت گرافیک است.

بد نیست مثال عددی دیگری بزنم تا ببینیم تأثیر شتاب‌دهی سخت‌افزاری نسخه‌ی 10 چه قدر ممکن است زیاد باشد. سراغ یکی از گرافیکی‌ترین بازی‌های چند سال اخیر می‌روم که معمولاً از آخرین تکنولوژی‌های کارت گرافیک استفاده می‌کند، منظورم همان Crysis معروف است. کرایسیس اول در حالت DX9 و DX10 قابل اجرا بود. سرعت اجرای بازی Crysis در دو حالت فوق و در رزولوشن 1080p در نمودار زیر نشان داده شده است.

DirectX چیست و چرا کارت گرافیک و بازی‌ها باید از دیرکت ایکس جدید پشتیبانی کند؟

مشاهده می‌کنید که با DX 10 سرعت اجرای کمتر از 10 درصد کاهش یافته ولیکن در مقابل کیفیت اجرا بهبود یافته است.

شاید بهبود گرافیک بازی‌های مختلف و فعال کردن آپشن‌های مربوط به DX 10 و از آن مهم‌تر DX 11 تفاوت شدیدی در گرافیک بازی ایجاد نکند ولیکن جالب است بدانید که برای اضافه شدن کمی جزئیات به عناصر دوردست و همچنین نورپردازی و سایه‌زنی کمی بهتر، بار پردازشی به شدت افزایش می‌یابد و لذا موفقیت DirectX 10 و 11 بسیار مهم و ارزشمند است.

دایرکت ایکس 11 در برابر دایرکت ایکس 10

تفاوت‌های نسخه‌ی 11 و انشعابات آن یعنی 11.1 و اخیراً 11.2 با دایرکت ایکس 10 هم نسبتاً زیاد است. سرعت اجرا باز هم کمی کاهش یافته ولیکن گرافیک به خوبی ارتقا یافته است.

یکی از موثرترین بخش‌ها Tessellation یا مفروش‌سازی است که وظیفه‌ی آن تقسیم کردن یک سطح به چند سطح کوچک‌تر برای به تصویر کشیدن جزئیات بیشتر است. تسیلیشن دایرکت ایکس 11 به کمک سخت‌افزار صورت می‌گیرد لذا می‌توان یک سطح ساده را با پهنای باند و پردازش کمتر، به چندین سطح کوچک‌تر تقسیم کرد.

اثر آن در برخی صحنه‌های کرایسیس 2 و 3 کاملاً آشکار است، مثلاً به آجرها و سطح ناهموار جاده در دو تصویر زیر دقت کنید تا تفاوت خیره‌کننده‌ی گرافیک برایتان آشکار شود:

DirectX چیست و چرا کارت گرافیک و بازی‌ها باید از دیرکت ایکس جدید پشتیبانی کند؟

DirectX چیست و چرا کارت گرافیک و بازی‌ها باید از دیرکت ایکس جدید پشتیبانی کند؟

در دایرکت ایکس 11 نورپردازی طبیعی‌تر است و خبری از حالت یکنواختی که در نسخه‌ی 9 دیده می‌شد نیست. به همین علت است که در تصویر زیر کنتراست بخش‌های تاریک و روشن، بالاتر و صد البته به نورپردازی حقیقی نزدیک‌تر است:

DirectX چیست و چرا کارت گرافیک و بازی‌ها باید از دیرکت ایکس جدید پشتیبانی کند؟

تفاوت‌های ریز و درشتی زیادی در دایرکت ایکس 11 وجود دارد که نمونه‌ی دیگری از آن در تصویر زیر نمایان است، در نسخه‌ی 11 حرکت حجمی آب بسیار واقعی‌تر به نظر می‌رسد.

DirectX چیست و چرا کارت گرافیک و بازی‌ها باید از دیرکت ایکس جدید پشتیبانی کند؟

افکت دیگری که با دایرکت ایکس 11 به سادگی پیاده‌سازی شده، DOF یا Depth of Field است که با افکت بوکه دایروی و 5 ضلعی در تصویر زیر دیده می‌شود:

DirectX چیست و چرا کارت گرافیک و بازی‌ها باید از دیرکت ایکس جدید پشتیبانی کند؟

نمونه‌ی دیگر به سایه‌ها مربوط است که در بازی Stalker نمونه‌ای از آن قابل بررسی است:

سایه‌ی با استفاده DirectX 10

سایه‌ی با استفاده DirectX 11

در مورد افکت‌های مربوط به دود و غبار و بازتاب هم تفاوت‌های ریز و درشت زیادی وجود دارد که بررسی دقیق آن خارج از حوصله‌ی این مقاله است.

مکسول 2 انویدیا و Direct3D 11.3

این نسخه از دایرکت ایکس قرابت زیادی با نسخه‌ی 12 دارد که البته هنوز استاندارد آن نهایی نشده است. البته ویژگی‌های اصلی نسخه‌ی 11.3 احتمالاً در نسخه‌ی 12 هم وجود خواهد داشت.

انویدیا در کارت گرافیک‌های جدید خود یعنی مکسول 2 از نسخه‌ی 11.3 دایرکت ایکس پشتیبانی می‌کند و بالاخره یک قدم از AMD جلو افتاده است. دقت کنید که مکسول در ابتدای کار فقط از نسخه‌ی 11 پشتیبانی می‌کرد و بیشتر موارد مربوط به 11.1 را هم پشتیبانی می‌کرد. منظورم به طور دقیق دو کارت گرافیک GTX 750 و GTX 750 Ti است که شروع کار مکسول را کلید زدند و از این نظر با سایر سری 700 که معماری کپلر دارند، متفاوت هستند.

انعطاف‌پذیری دایرکت ایکس 12 در سطح دسترسی به سخت‌افزار و کدنویسی برای نسل‌های مختلف سخت‌افزار

مهم‌ترین مشخصه‌ی دایرکت ایکس 12 دسترسی سطح پایین‌تر به سخت‌افزار است؛ اصطلاحاً می‌گوییم: واسط برنامه‌نویسی سطح پایین یا Low Level API. مزیت این نوع دسترسی برای برنامه‌نویسان و کمپانی‌های سازنده‌ی موتور گرافیکی مثل Unreal Engine 4 روشن است، آنها می‌توانند با حوصله و دقت زیاد، به شکل بهینه‌تری از سخت‌‎افزار استفاده کنند. چیزی که معمولاً در بهینه‌سازی بازی‌ها برای کنسول‌ها اتفاق می‌افتد. دسترسی سطح بالا هم مزایای خودش را دارد. مثلاً در تولید بازی به کدنویسی کمتری نیاز است و کار ساده می‌شود. دایرکت ایکس 12 انعطاف خوبی دارد و بسته به نیاز می‌توان از سطح پایین یا سطح بالا استفاده کرد.

نمونه‌ای از بهینه‌سازی سطح دسترسی توسط اینتل و انویدیا به نمایش گذاشته شده که در آن پردازنده‌ی اصلی بسیار کمتر درگیر اجرای دستورات شده است:

DirectX چیست و چرا کارت گرافیک و بازی‌ها باید از دیرکت ایکس جدید پشتیبانی کند؟

نکته‌ی دیگر که باز هم برای برنامه‌نویسان بسیار مهم و حیاتی است، پشتیبانی از Feature Level یا سطح قابلیت‌ها است. با این ویژگی اگر کارت گرافیک از نسخه‌های 9، 10 و 11 دایرکت ایکس پشتیبانی کند، می‌توان با نوشتن یک کد، آن را روی همه‌ی موارد اجرا کرد. بنابراین برنامه‌نویس در API نسخه‌ی 12 برنامه‌ی خود را می‌نویسد و برنامه‌ی نوشته شده روی کارت گرافیک‌های قدیمی هم به راحتی اجرا می‌شود. نیاز به نوشتن چند کد جداگانه نیست. به عنوان مثال تنها کافی است از FL9_3 که هماهنگی با دایرکت ایکس 9.0c را تضمین می‌کند استفاده شود.

Voxel، پیکسل‌های 3 بعدی و توخالی

دایرکت اکیس 11.3 و بعدها نسخه‌ی 12، امکانات و ویژگی‌های بسیاری دارد که نمی‌توان آن را در این مقاله خلاصه کرد. به چند مورد مهم اشاره‌ای گذارا می‌کنم.

اولین مورد پشتیبانی از Volume Tiled Resources یا منابع پیکسل‌های حجمی است که به پیکسل‌های سه‌بعدی یا حجمی که به نام Voxel شناخته می‌شوند اجازه می‌دهد که در صورتی که شامل هیچ داده‌ی خاصی نیستند، در حافظه هم فضایی اشغال نکنند. در این صورت به جای اینکه یک واکسل مربوط به داخل اشیاء و افکت‌ها دارای 24 بیت داده برای سه رنگ اصلی باشد، حجم اشغال شده‌ی آن صفر بیت می‌شود.

در تصویر زیر به کاهش حافظه‌ی مورد نیاز پرداخته شده و می‌بینیم که ممکن است 1.5 گیگابایت داده به 156 مگابایت کاهش یابد.

DirectX چیست و چرا کارت گرافیک و بازی‌ها باید از دیرکت ایکس جدید پشتیبانی کند؟

Conservative Raster یا تعیین مکان محافظه‌کارانه

یک چند ضلعی را در نظر بگیرید که ممکن است پیکسلی را شامل شود و یا پیکسل مربع شکل از آن بیرون زده باشد. روش کلی برای ارزیابی وضعیت پیکسل چک کردن مرکز آن است. اگر درون چند ضلعی باشد، جزئی از چند ضلعی است و اگر نباشد، بیرون آن است. اما روش دقیق‌تر این است که گوشه‌های مربع بررسی شوند. این روش قطعاً بار پردازشی بیشتری هم خواهد داشت اما در مورد چند ضلعی‌های کوچک دقت بالاتری دارد و نتیجه‌ی رندر بازی یا صحنه واقعی‌تر می‌نماید.

DirectX چیست و چرا کارت گرافیک و بازی‌ها باید از دیرکت ایکس جدید پشتیبانی کند؟

یکی از کاربردهای این روش، برخورد دو شیء است. واکسل‌ها در این بخش هم نقش مهمی دارند، یک واکسل پیکسلی سه بعدی است که برخورد آن با پیکسل‌های سه بعدی چند وجهی‌های می‌تواند با دقت بالاتری تمیز داده شود.

از نظر تئوری استفاده از واکسل یا ارزیابی محافظه‌کارانه در دیگر کارت گرافیک‌ها هم امکان‌پذیر است ولیکن تفاوت مکسول این است که برای تسریع پردازش، این کار را با پشتیبانی سخت‌افزاری انجام می‌دهد که نتیجه‌ی آن سرعت به مراتب بالاتر خواهد بود.

VXGI، تکنولوژی پراکنش نور شتاب‌یافته با Voxel

انویدیا علاوه بر پشتیبانی از آخرین دستاوردهای DirectX یک تکنولوژی ارزشمند دیگر هم ارایه کرده که به اختصار VXGI گفته می‌شود. دو حرف آخر مخفف Global Illumination است یعنی با یک تکنولوژی گرافیکی در عرصه‌ی نورپردازی و پراکنش نور سروکار داریم. نورپردازی عمومی معمولاً بار پردازشی سنگینی برای سخت‌افزار و کارت گرافیک است اما از طرف دیگر گرافیک را بسیار واقعی‌تر می‌کند. توسعه‌دهندگان در گذشته روی پراکنش عمومی نور کار زیادی انجام داده‌اند و به عنوان مثال در پیش‌نمایشی از توانمندی موتور گرافیکی Unreal Engine 4 یعنی Elemental Demo از پراکنش عمومی نور به کمک Voxelها استفاده شده است. اما سرعت اجرا بسیار پایین و غیرکاربردی است.

DirectX چیست و چرا کارت گرافیک و بازی‌ها باید از دیرکت ایکس جدید پشتیبانی کند؟

انویدیا با VXGI به دنبال حل مشکل سرعت است و می‌خواهد با پشتیبانی سخت‌افزاری آن را تسریع‌ کند و همچمین دقت آن را افزایش دهد. VXGI برای موتور گرافیک آنریل انجین و صد البته سایر موتورهای گرافیکی در فصل آخر 2014 قابل استفاده خواهد بود و لذا برای رونمایی از بازی‌هایی که از آن بهره می‌برند، فعلاً باید صبر کرد.

البته دقت کنید که این روش نورپردازی هم روی سایر کارت گرافیک‌ها قابل پیاده‌سازی است. تفاوت مکسول 2 با سایر محصولات این است که می‌تواند از واکسل‌های بیشتری برای شبیه‌سازی پراکنش نور استفاده کند. در حقیقت الگوریتمی مبتنی بر واکسل که انویدیا معرفی کرده، بسته به توان پردازشی کارت گرافیک و سخت‌افزار در دسترسی، اسکیل یا مقیاس می‌شود. هر چه سخت‌افزار بهتر باشد، شبکه‌ی پیکسل‌های سه‌بعدی یا واکسل ریزتر و دقیق‌تر می‌شود.

DirectX چیست و چرا کارت گرافیک و بازی‌ها باید از دیرکت ایکس جدید پشتیبانی کند؟

انویدیا از دو قابلیت جالب دایرکت ایکس 11.3 که به آن اشاره کردم استفاده کرده تا محاسبات لازم و واکسل‌های مورد نیاز برای نورپردازی عمومی را در سطح سخت‌افزاری پیاده‌سازی کند. بخشی از مراحل هم به صورت سعی و خطا صورت می‌گیرد. موضوع استفاده از واکسل برای نورپردازی است، تعیین مکان محافظه کارانه اجازه می‌دهد که واکسل‌ها دقیق‌تر خلق شوند و برخوردشان با چندضلعی‌ها دقیق‌تر ارزیابی شود و در عین حال VTR یا Volume Tiled Resources کاری می‌کند که حافظه‌ی لازم برای ذخیره کردن داده‌های مربوط به واکسل‌ها، کمتر شود.

واکسل و کاربرد آن در پراکنش عمومی نور موضوعی بسیار جالب و نسبتاً پیچیده است. بار پردازشی سنگینی هم دارد. توصیه می‌کنم برای مطالعه‌ی بیشتر در این خصوص، مقاله‌ای که انویدیا منتشر کرده را مطالعه کنید. در واقع برای توضیح دادن VXGI ابتدا باید تعیین موقعیت و ردیابی مسیر نور را به طور کامل توضیح دهم که خارج از حوصله‌ی این مقاله است.

MPA و تصویر کردن چندتایی

یکی دیگر از قابلیت‌های مکسول 2 که شاید در نسخه‌ی 12 دایرکت ایکس هم پیاده‌سازی شود، MPA یا Multi-Projection Acceleration است. در استفاده از عناصر حجمی و به ویژه واکسل‌ها که به منزله‌ی پیکسل‌های سه‌بعدی هستند، تصویر کردن عناصر روی سطوح مختلف در حالت عادی بدون هیچ شتاب‌دهی سخت‌افزاری صورت می‌گیرد. انویدیا با شتاب‌دهی تصویر کردن چندتایی یا به اختصار MPA کاری کرده که این فرآیند تسریع شود. به جای اینکه برای هر تصویر کردن، یک بار از شیدرها کمک گرفته شود، همه‌چیز سریع و ساده صورت می‌گیرد.

DirectX چیست و چرا کارت گرافیک و بازی‌ها باید از دیرکت ایکس جدید پشتیبانی کند؟

یکی از زیرمجموعه‌های MPA قابلیتی به نام viewport multicast یا ارسال چندتایی برای نمایش است. با این قابلیت زمانی که نیاز باشد، مکسول یک هندسه را در چند محل مختلف به نمایش درمی‌آورد. البته اینکه بار پردازشی چگونه است و آیا لازم است یک هندسه روی چند قسمت نمایش داده شود، چیزی است که کارت گرافیک و در واقع مکسول 2 در مورد آن تصمیم‌گیری می‌کند اما به هر حال نتیجه‌ی نهایی، سرعتی به مراتب بالاتر از استفاده از شیدرهاست.

یک رندر واقعی و سرعت مکسول 2

انویدیا در رندر کردن صحنه‌ی San Miguel de Allende به این نتیجه رسیده که مکسول 2 به خاطر برخورداری از VXGI و همچنین MPA عملکردی در حد سه برابر دارد.

از اهداف انویدیا این است که بازی‌های پی‌سی تنها پورت شده‌ی نسخه‌های کنسولی نباشند که فقط بافت دقیق‌تر و رزولوشن بالاتر دارد. VXGI و به طور کلی GameWorks از مسائلی است که انویدیا برای ارتقای کیفیت بازی‌های پی‌سی در نظر گرفته است و در این راه پشتیبانی لازم سخت‌افزاری و حتی سخت‌افزار اختصاصی بسیار موثر واقع می‌شود.

توصیه می‌کنم برای درک اهمیت، کیفیت و کارایی VXGI به دمویی از فرود فضاپیمای آپولو 11 بر سطح ماه توجه کنید. نور پردازی بسیار واقعی می‌نماید، تابش نور، بازتاب، پراکندگی و سایه‌ها بسیار طبیعی به نظر می‌رسند. با توجه به رزولوشن بالا بهتر است مستقیماً در یوتیوب به تماشا بنشینید.

DirectX چیست و چرا کارت گرافیک و بازی‌ها باید از دیرکت ایکس جدید پشتیبانی کند؟