نگاهی به قابلیت های رندرینگ موجود در Direct3D 11.3 و Direct3D 12

نگاهی به قابلیت های رندرینگ موجود در Direct3D 11.3 و Direct3D 12

نگاهی به قابلیت های رندرینگ موجود در Direct3D 11.3 و Direct3D 12

Direct3D 11.3 و Direct3D 12 چیست؟

این مقاله با ویرایش مجدداً در تاریخ ۳ مهر ۱۳۹۹ بازنشر شده است

Direct3D 12 توسط مایکروسافت برای تعطلات ۲۰۱۵ درنظر گرفته شده بود و در آن زمان هنوز از نسخه نهایی این پلتفرم (API) خبری نبود. با این حال در جریان GDC 2014 مایکروسافت و شرکای تجاری اش اطلاعات جالبی از کتابخانه رندرینگ Direct3D را برای عموم منتشر کردند. خلاصه بگوییم پلتفرم یا API دایرکت ایکس (DirectX) شامل مجموعه کتابخانه هایی است که هر کدام وظایف مهمی در ساخت بازی و تمام  موارد مربوط به مدیاهای حوزه بازی را بر عهده دارند. این کتابخانه شامل ابزارهای بسیار مهمی همچون DirectDraw، DirectMusic، DirectPlay، DirectSound و Direct3D است که در قالب مجموعه دایرکت ایکس (DirectX) عرضه میشود.

دایرکت ایکس (DirectX) آنقدر مهم است که آن روزها همه جا نقل محافل شده بود و همه سایت ها و خبرگذاری ها درباره آن مطالبی منتشر میکردند! آخرین نسخه دایرکت ایکس (DirectX) که همان دایرکت ایکس ۱۲ (DirectX) میباشد از دو جهت بسیار مهم است. جهت اول رقابت مایکروسافت با کنسول Xbox One در مقابل PS4 سونی و جهت دوم کمک به انویدیا برای رقابت با کمپانی AMD! در واقع در هر دو جبهه مایکروسافت نقش محوری مهمی دارد که پیروز میدان را مشخص میکند.

آن زمان در جبهه دوم همه چیز به نفع انویدیا و مایکروسافت بود و کمپانی AMD اندکی عقب کشیده بود! این اتفاق زمانی افتاد که سونی و انویدیا در جبهه دیگری با فشار زیاد به Khronos (مخترع OpenGL و نسخه‌ی جدید آن یا همان glNext) از انتشار نسخه جدید OpenGl خبر دادند و بااین خبر بود که amd از منبع باز بودن منتل (Mantle) منصرف و آن را اختصاصی اعلام کرد! بدین صورت، بحث اجرای بازی های PS4 با منتل (Mantle) منتفی شد و تمام نگاه ها به glNext ای بود که توسط Khronos، انویدیا و با همکاری مایکروسافت توسعه میافت.

میزان دسترسی هر پلتفرم یا API به سخت افزار کنسول ها

جبهه اول هم داستان خودش را داشت و مایکروسافت در دو بازار کنسولی و کامپیوتری قرار بود به جنگ رقیبانش برود. البته در این جبهه اوضاع آرام بود و همه چیز به صورت تمام شده به نفع مایکروسافت پیش میرفت. آخرین نسخه دایرکت ایکس (DirectX) که همان دایرکت ایکس ۱۲ (DirectX) بود، از کتابخانه بسیار مهم Direct3D استفاده میکرد که نسخه جدید آن دارای ویژگی های فوق العاده ای بود که در زیر به آن میپردازیم. لازم به ذکر است، ویژگی های دایرکت ایکس ۱۲ ای که در کارت های قبل از سری ۹۰۰ پشتیبانی نمیشوند، همین ویژگی های رندرینگ پیشرفته هستتند که در ادامه به شرح آن ها میپردازیم.

نگاه اول | Direct3D چیست؟!

تصویر ایجادشده توسط DirectX 12

وظیفه اصلی Direct3D رندر پیشرفته تصاویر گرافیک سه بعدی مورد استفاده در بازی ها است که در اکثر پلتفرم های کنسولی همچون X360، Xbox One و کامپیوترهای شخصی (PC) استفاده میشود. در DirectX 12 شاهد به روز رسانی های بی شمار و بسیار قدرتمندی بودیم که نتیحه آن افزایش بهره وری و عملکرد کنسول های بازی بود. DirectX 12 از آخرین و جدیدترین نسخه از Direct3D استفاده میکند که امکان کد نویسی روی پایین ترین لایه سخت افزاری را فراهم میکند.

نگاه دوم | چرا برنامه نویسی سطح پایین؟

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

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

اما ویژگی‌های Direct3D در نسخه جدید فقط محدود به موارد برشمرده نبوده و مایکروسافت API خودش را که وظیفه‌ رندر کردن تصاویر سه ‌بعدی را بر عهده دارد، همراه با قابلیت ‌های دیگری در بسته‌ DirectX قرار داده است. با توجه به معرفی نسل دوم از پردازنده‌های گرافیکی GeForce GTX 980 که برپایه‌ معماری مَکسوِل بنیان نهاده شده، مایکروسافت نیز اطلاعات بیشتری از قابلیت‌های Direct3D و آنچه که در نظر دارد تا به این API‌ اضافه کند، تشریح کرده است.به لطف ثبات کنسول های نسل هشتمی تا چند سال، این مدل برنامه نویسی به موضوع اصلی نسل هشتم کنسول های بازی تبدیل شده است.

این مدل برنامه نویسی سطح دسترسی بسیار زیادی به توسعه دهنده بازی خواهد داد تا بتواند قدرت پردازش بازی توسط کنسول را چندین برابر بیشتر از حالت استاندارد آن کند. به همین دلیل است که از چنین سطح برنامه نویسی قدرتمندی برای کنسول های نسل هشتمی PS4 و Xbox One استفاده شده. نمیشود گفت PC جزو این پلتفرم حساب نمیشود، پس بهتر است به PC به عنوان یکی از انعطاف پذیرترین پلتفرم های بازی نگاه کنیم که برای مدتی طولانی خارج از پلتفرم های (API) سطح بالایی همچون Direct3D و OpenGL کار میکرد. ویدئوی زیر مربوط به معرفی بازی Forza MotorSport 5 است که توسط DirectX 12 ساخته شده است که در ادامه بیشتر در این مورد توضیح خواهیم داد.

.

به عنوان یک نتیجه از این موضوع باید گفت که پتانسیل این روش برای Bottlenecking یا تنگنا بسیار زیاد است و در واقع بر اساس همین عملکرد است که خلاصه قیمت این پردازنده ها مشخص میشود. پس به دلیل تنگنای بسیار زیاد است که نیاز به رابط برنامه نویسی سطح پایین احساس میشود و باید گفت که برنامه نویسی سطح پایین در برابر این نوع تنگناها بسیار مقاوم است. در مدل برنامه نویسی سطح بالا همواره به موضوعی به نام “master” نیاز داریم، از این رو احتمال تنگنا در هر “master” زیاد است، اما در برنامه نویسی سطح پایین هیچ نیازی به یک API فشرده برای پردازنده نخواهد بود که این مورد باعث میشود کار با هسته های چندگانه پردازنده مرکزی (CPU) بسیار راحت تر از گذشته شود.

این روش توسعه دهنده بازی را قادر میکند تا بتوانند با پردازنده های ضعیف کنسولی، همانطوری برنامه نویسی کنند که برای پلتفرم PC برنامه نویسی میکنند که این موضوع به خودی خودش باعث افزایش کارایی و عملکرد نهایی بازی میشود. هدف نهایی Direct3D 12 کاهش سربار اضافی پردازنده و جلوگیری از تنگناهای برنامه نویسی سطح بالاست که قبلا در مقاله AMD Mantle به تفصیل در موردش صحبت کردیم. یکی از بزرگترین منابع سربار پردازنده داشتن Direct3D است که لیست دستورات و بافرهای مختلف را برای GPU جمع آوری میکند. از این رو Direct3D 12 در حال حرکت به سمت برنامه نویسی سطح پایین و باز گذاشتن دست توسعه دهندگان در بهبود کارایی است.

پشتیبانی کنسول Xbox One از DX12

با این روایت، دستورات و بافرها در صورتی که دراختیار خود توسعه دهندگان بازی باشد، میتوانند آن را بین هسته های GPU به درستی توزیع کنند تا از سربار پردازنده جلوگیری شود. نکته مهم این است که ما نمیدانیم لیست دستورات و بافرهای مختلف Direct3D 12 چه چیزی است و این همان تفاوتی است که در آن زمان (۶ سال پیش) موجب تمایز بین Direct3D 12 و AMD Mantle شده بود. اما در زمان حال و زمان نگارش این مقاله میدانیم AMD Mantle از دنیای رقابت با Direct3D کنار کشیده.

مایکروسافت همچنین یک مفهوم مشابه را معرفی کرده است که به نوعی بسته نرم افزاری جدیدی است که قابلیت استفاده مجدد لیست دستورات را به توسعه دهنده خواهد داد. این مورد یکی از روش های صرفه جویی منابع پردازنده به شمار میرود که با استفاده از بسته نرم افزاری در مکان لیست دستورات مختلف باعث کاهش مقادیری میشود که پردازنده برای ساخت هر لیست از آن استفاده میکند. Direct3D 12 تکنیک جدیدی به اسم Pipeline State Pbjects را مورد استفاده قرار میدهد که موجب حذف دستورات بافرینگ میشود و این مورد در باره چگونگی معماری گرافیک های مختلف میتواند متفاوت باشد.

در DirectX 11 مدیریت و تنظیم Pipeline State ها توسط آبجکت های متفاوت انجام میشد که این مورد برای سخت افزار های کنونی اصلا مناسب نیست. به دلیل نیاز به نوع دسترسی سطح پایین به سخت افزار نیاز به تغییر این مورد بود تا از ایجاد تاخیر در بار پردازش اضاف و کاهش تعداد نرخ فریم ریت جلوگیری شود. مثلا در نسخه DirectX 11 قابلیت هایی همچون Pixel Shader State, Output Merger State و … به طور مستقل قابل تنظیم هستند که به دلیل مناسب نبودن برای سخت افزار های کنونی در نسخه جدید حذف شده اند تا از کاهش فریم ریت جلوگیری شود.

استفاده از dx12 در بازی Forza MotorSport 5

DirectX 12 با یکپارچه سازی تمامی ویژگی های نسخه قبلی همچون pipeline state objects یا (PSO) که در ترسیم تصویر نهایی نقش مستقیم دارند مشکلات افت فریم و پردازش اضافی را حل کرده است که حاصل آن را در بازی Forza MotorSport 5 دیده ایم. این تغییر به سخت افزار اجازه میدهد تا به راحتی و به سرعت بتواند PSO ها را به دستورالعمل های سخت افزاری در هر State تبدیل کند. هر کدام از PSO ها نیز به صورت زنده (Real-Time) قابل تغییرند و برای انجام عمل نهایی بدون نیاز به واسطه هایی همچون State ها به ریجسترهای سخت افزاری داده میشوند تا بار پردازش برادری آغاز شود. این روش در نهایت باعث کاهش بار پردازش ترسیمی و افزایش تعداد فریم ریت در بازی نهایی خواهد شد.

Direct3D 12 علاوه بر خود DirectX 12 شامل ویژگی جدیدی به نام Work-Pre-Computotion است که تنها یک بار ارائه میشود و پس از هر ارائه پردازشی به GPU از بین میرود. این مدل برای ساخت و رندرینگ نهایی یک کاراکتر بسیار ساده خواهد بود و فراخوانی آن نیازی به استفاده از روش Self-Contained ندارد تنها نیاز به یک بسته Character Model دارد تا توابع ترسیمی فراخوانی شوند. این روش هم موجب کاهش بار پردازشی و افزایش سرعت رندرینگ و در نهایت افزایش میزان فریم ریت در بازی های سنگین خواهد شد. البته بحث فنی و قابلیت های موجود در این نسخه بسیار فراتر و تخصصی تر این نوشته است و از حوصله این مقاله و خوانندگان عزیز هم خارج است. به همین دلیل مقدار توضیحات ارائه شده تا همین مقدار را کافی میدانیم.

نگاه سوم | Direct3D 11.3

سوال اصلی این است که چرا مایکروسافت به طور همزمان روی Direct3D 11.3 و Direct3D 12 کار میکند؟! وقتی میتواند تمام هدفش را روی Direct3D 12 بگذارد چه نیازی به Direct3D 11.3 داریم!؟ از آنجایی که Direct3D 12 یک پلتفرم کاملا نو و جدید محسوب میشود، (البته در آن تاریخ – سال ۱۳۹۳) توانایی کار و استفاده سازندگان کم تجربه از مزیت های این پلتفرم میتواند وجب اشکالات جدی در بازی های مختلف شود. کما اینکه مایکروسافت به سازندگان بازی اعلام کرده است که باید به طور کامل کار با Direct3D 12 را بیاموزند و پس از تست و برسری های فراوان، به محصول مورد نظر خود دست یابند.

رندر هزاران سیارک با Direct3D 12 و فریم ریت ثابت

از همین جهت است که با عرضه رسمی DirectX 12 نباید از همان روز اول شاهد افزایش بسیار زیاد فاصله گرافیکی بازی های بین DirectX 12 و DirectX ۱۱.۳ را داشته باشیم. در حال حاضر و با توجه به اطلاعات موجود در وب، همینطور ویدئوهایی منتشر شده ای همچون ویدئوی بادبادک موتور بازی سازی Unreal Engine 4 میشود گت که تنها تعداد محدودی سازنده بزرگ به این پلفترم دستری دارند تا بتوانند محصولاتی جدید شامل موتورهای بازی با قدرت رندرکنندگی بالا بر مبنای DirectX 12 را ایجاد کنند.

در واقع ساخت موتورهای بازی جدید به همین دلیل است. موتورهای بزرگ بازی سازی ای همچون Unreal Engine ۴ و موتور قدرتمند CryEngine 3، قرار است واسطه ای قدرتمند برای استفاده ای رحت تر از امکانات موجود در Direct3D 11.3 و Direct3D 12 باشند. استدیو کرایت در جریان GDC 2015 ویدئو وتصاویر جدیدی از نسخه جدید موتور CryEngine 3 منتشر کرد که با کلیک روی لینک زیر میتوانید ببینید.

در واقع مهمترین دلیل توسعه Direct3D 11.3 در کنار Direct3D 12 هم به همین بی تجربه بودن سازنده برمیگردد. در واقع بسیاری از بازیهای ۲۰۱۵ تا ۲۰۱۶ همان نسخه های Direct3D 11.3 هستند که با آپدیتی نرم افزاری به Direct3D 12 تبدیل میشوند تا مورد پردازش قرار بگیرند. بدین معنا که از همان ابتدا به صورت کامل بر مبنای Direct3D 12 تولید نمیشوند. میتوان اینطور گفت که بازی های سال ۲۰۱۵ بستر تستی برای آشنایی اولیه بیشتر با Direct3D 12 ای است که بر پایه DirectX 12 کار میکند. پس از این مرحله تست است که سازنده میتواند خودش را برای ساخت بازی روی DirectX 12 آماده کند.

تصویر رندر شده با موتور گرافیکی CryEngine 3

پس تا یکی دو سال اول نباید انتظار معجزه از DirectX 12 داشته باشید. آخرین نسخه Direct3D 11.3 از تمام ویژگی های جدید موجود در کارت های سری ۹۰۰ استفاده میکند تا بتواند کیفیت قابل قبول در رندر گرافیکی ارائه کند.

نگاه چهارم | Direct3D 12

Direct3D 11.3 و ویژگی های موجود در آن تاثیر مستقیمی بر روی Direct3D 12 خواهد گذاشت. در واقع  Direct3D 12 به سمت پایان دادن به حذف (Multi-Feature Level) یا چند سطحی بودن ویژگی های موجود در Direct3D 11.3 حرکت میکند. سطوح ویژگی یا (feature levels) اولین بار با Direct3D 11 معرفی شد که به سازندگان بازی اجازه میداد بازیسازان محصول تولیدی خود را روی طیف وسیعی از سخت افزارهای روز پیاده کنند. این بدین معناست که سازنده در عمل میتواند با استفاده از D3D 11 به طور همزمان از سخت افزارهای مبتنی بر D3D 9, 10, و ۱۱ به صورت همزمان استفاده کند.

در واقع با سطوح ویژگی یا (Feature Levels) معرفی شده در Direct3D 11 میتوان از رندرینگ متناسبی با هر تراشه گرافیکی استفاده کرد. مثل FL9_3 برای سخت افزارهای مبتنی بر D3D9.0c. در Direct3D 12 هم میتوان از قابلیت بسیار مهم Feature Levels روی تمامی تراشه های گرافیکی استفاده کرد. این کار به سازنده اجازه بهره برداری از منافع سطح پایین پردازنده و استفاده آن به طور همزمان روی چندین نسل مختلف از سخت افزار های دیگر کمپانی های مختلف را میدهد.

به عبارتی قابلیت های موجود در Feature Levels برای این است که از تمامی کارت های گرافیک موجود در بازار پشتیبانی شود. یعنی هر کارت گرافیکی در هر نسلی که باشد، با توجه به قابلیت هایش میتواند از ویژگی های DirectX 12 استفاده کند. این بدین معناست که Direct3D 12 روی تمامی تراشه های گرافیکی (GPU) قدیمی همچون کارت های گرافیک مبتنی بر Fermi و کارت های جدید Maxwell قابل استفاده است. این در حالی است کارت های جدیدتر از ویژگی های جدیدتری استفاده میکنند که در کارت های قدیمی تر قابل استفاده نخواهد بود.

پشتیبانی GTX 980 از کتابخانه Direct3D 12

به هر حال کاربران باید برای استفاده از Direct3D 12 توجه ویژه ای به Feature Levels داشته باشند. پشتیبانی از Direct3D 12 به معنای پشتیبانی سخت افزار از تمام ویژگی های موجود در پلتفرم DirectX 12 نیست و این دقیقا موردی است که ما  آن را پیش از این طی مقاله ای تحت عنوان [لیست کامل کارت های گرافیک پشتیبانی کننده از DirectX 12] گفته بودیم که به دلیل درک پایین برخی افراد به تمسخر گرفته شد! بحث این بخش را اینطور تمام کنیم که هر نسل ازکارت های گرافیک موجود در بازار قادرند تا میزان تعریف شده‌ ای از قابلیت‌ ها را بر اساس سخت افزار خودشان پشتیبانی کنند.

نگاه پنجم | ویژگی‌های جدید Direct3D نسخه‌ی ۱۱.۳ و ۱۲

ویژگی های مختلف و جدیدی برای Direct3D 11.3 و ۱۲ در نظر گرفته شده است که هنوز به درستی مشخص نیست. همین الان اشاره کنیم که این لیست اصلا کامل و جامع نیست و تنها برخی از جدیدترین امکانات موجود در کتابخانه Direct3D را شامل میشود. پس با ما همراه باشید تا چهار مورد از بهترین ویژگی های این کتابخانه را بررسی کنیم.

ویژگی اول | Rasterizer Ordered Views

ریسترایزر (Rasterizer)، شطرنجی سازی، رسترساز یا هر نامی که شما دوست دارید برای این تکنیک بسیار مهم و جدید بگذارید، روشی است برای مرتب کردن رندر داده های سه بعدی شامل موقعیت، رنگ، بافت و سطوح دو بعدی که به صورت همزمان برای نمایش رندر میشوند. هر تصویر سه بعدی از چندین چند ضلعی (Polygons) تشکیل شده که به صورت مثلثی یا عمودی رسم شده اند که در نهایت موجب رندرینگ تصویری دو بعدی میشوند. این حالت با ترکیبی از چند حالت مختلف موجب ایجاد تصاویر سه یعدی میشوند.

 در واقع در این حالت داده های برداری به داده های شطرنجی یا همان پیکسل ها تبدیل میشوند. با این روش سازنده میتواند تمامی عناصیر تبدیل شده به پسکل و زیر پیکسل را کنترل کند که نتیجه آن نمایش اشکال هندسی سه بعدی روی صفحه نمایش است. سازنده با کمک این قابلیت میتواند تمامی مطمئن شود تمامی عناصر موجود بر روی صفحه به درستی ترسیم میشوند. استفاده از تکنیک Rasterizer برای کاهش بار پردازشی استفاده از هندسه انجام میشود.

قابلیت Rasterizer Ordered Views

در واقع کلاس RasterizerState تمام کارهای رستر سازی موجود در پردازش بازی را بر عهده میگیرد. این تکنیک برای کنترل و نظم عناصر روی صفحه استفاده میشود، به طوری که عناصر در جهتی درست ترسیم شوند. این تکنیک به طور خاص بر روی دسته های نمایشی نامرتبی (UAVs) اعمال میشود که توسط پیسکل شیدرها (pixel shaders) تولید شده اند. در واقع ROVs نوعی جایگزین بی نظم برای UAVs است که Rasterizer آنها به سادگی به پایان رسیده است.

Rasterizer برای رندرینگ غیر منظم عالی است، اما عناصر عمیق منظرم موجود در این رندرینگ مسدود خواهند شد و در نهایت موجب دسترسی سریع به UAVs، برای رندر سریع اشیاء موجود در یک صحنه فراهم میشود. مثلا در برخی تصاویر ممکن است شاهد دو رنگ قرمز و آبی باشیم که ترکیب هر دو رنگ نتیجه ای یکسان دارد. حتی اگر آبی و قرمز را با هم ترکیب کنیم باز هم باید شاهد یک نتیجه باشیم. اما در بعضی مواقع نتیجه نهایی موجب ایجاد رنگی جدید میشود که موجب افزایش زمان رندرینگ خواهد شد.

این مشکل با Rasterizer برطرف شده است. DirectX 11 از این ویژگی استفاده میکرد، اما مشکل اصلی موجود در آن سرعت بسیار پایینش برای رندر چنین صحنه هایی بود که با DirectX 12 بر طرف میشود.

ویژگی دوم | Typed UAV Load

دومین ویژگی جدید Direct3D ویژگی Typed UAV Load است. UAVs دسترسی نامنظمی (Unordered Access Views) است از یک نوع بافر مخصوص که موجب میشود دسترسی به فریم بافر (حافظه ویدئویی کارت گرافیک) تراشه گرافیکی برای چندین رشته پردازشی بدون هیچ گونه تداخل دسترسی حافظه مستقیمی صورت پذیرد. UAVs اساساً نامنظم هستند و از محدودیت های زیادی در کنار استفاده از Typed UAV Load برخوردارند.  UAVs از لحاظ ساختاری با پیکسل شیدرها (Pixel Shaders- شیدرهایی که پس از اتمام پردازش رنگ پیکسل رامشخص میکنند) تفاوت زیادی دارد.

قابلیت Typed UAV Load

در واقع پیسکل شیدرها با در نظر گرفتن مقصد رندرینگ نهایی، اطلاعات پیکسل نهایی را مشخص میکنند. اما Typed UAV Load با هدف از بین بردن محدودیت های مختلف استفاده میشود.

ویژگی سوم | Volume Tiled Resources

 این قابلیت همان MegaTexture است که به صورت اختصاصی توسط جان کارمک بزرگ ابداع شده است. Mega Texture تکنیکی است برای تخصیص بافت های مختلف و استفاده آسان آنها در نمونه های بسیار ساده و شامل بافت های (Texture) بسیار بزرگی است که از چندین Texture کوچکتر تشکیل شده اند. ان کارمک برای اولین بار در شرکت id Software از این تکنیک در بازی های Splash Damage’ و Enemy Territory: Quake Wars استفاده کرد و نام آنها را Mega Texture گذاشت.

در این روش بازیباز با رسیدن به هر نقطه از بازی شاهد لود شودن تکنیک MegaTexture است که درنهایت Texture های یک منطقه از بازی را تشکیل میدهند و پس از عبور از آن ناحیه Texture ها به حالت اولیه برمیگردند. در روش MegaTexture معمولا Texture ها را با روشی صحیح به اندازه استاندارد کوچک میکنند و سپس آنرا به صورت ۳D در میآورند تا در بازی قابل استفاده باشد. تکنیک MegaTexture خود شامل چند روش بافت زنی است که مهمترین آنها بافت گذاری مجازی (Virtual texturing) است.

قابلیت Volume Tiled Resources

با این توضیحات برویم سراغ Volume Tiled Resources و ببینیم که چیست. VTRs در واقع نوعی پیسکل حجمی است که با volumetric pixels ها مورد استفاده قرار میگیرد. در این روش هر کاشی (Tile‌) بافت مانندی که اطلاعات ذخیره شده در حافظه نداشته باشد حذف میشود. این کار باعث کاهش پردازش و لود حافظه میشود و علاوه بر استفاده از فضای کمتر، موجب پردازش بهتر بازیها میشود. این روش از نظر بافت زنی بسیار شبیه به روش بالاست. در روش بالا، بافت ها پس از گذر از مرزی نامرئی ازحافظه حذف میشوند، در روش Volume Tiled Resources اگر اطلاعاتی نباشد از بین می رود. در واقع هر دو روش یکی هستند، اما با نامی متفاوت.

ویژگی چهارم | Conservative Rasterization

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

قابلیت Conservative Rasterization

نگاه ششم | سخن پایانی

قابلیت های موجود در کتابخانه Direct3D 11 نشان دادند که صنعت بازی و گرافیک کامپیوتری وارد عصری جدید شده است. عصری که به گفته یکی از مدیران AMD، بهترین بازی هایش باید شبیه به فیلم آواتار جیمز کامرون باشد. Direct3D نسخه جدید منتشر شده و کتابخانه جامع و قدرتمندی است که در کنار نسل جدید کارت های گرافیک انویدیا و AMD میتواند حداکثر بازدهی را برای سازندگان بازی فراهم کند.

خروج از نسخه موبایل