DX-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 به سخت افزار کنسول ها

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

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

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

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

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

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

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

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

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

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

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

در نتیجه زمانیکه به دنبال عملکرد پردازنده های تک رشته ای هستیم، با GPU هایی برخورد میکنیم که از نظر رشد و عملکرد بسیار جلوتر و پیشرفته تز CPU ها هستند. این مورد به خودی خود یک مشکل محسوب نمیشود، اما زمانیکه با رابط های برنامه نویسی سطح بالا بخواهیم برای گرافیک کامپیوتری برنامه نویسی انجام دهیم، به مشکل میخوریم. بخش عمده ای از کار رابط های برنامه نویسی(APIها)، آماده سازی دیتا برای پردازنده های گرافیکی(GPU) است که با توجه به ماهیت تک رشته ای خود باعث کاهش سرعت در عملکرد CPU و در نهایت ایجاد تنگنا یا سربار اضافی برای آن میشود.

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

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

Xbox-One

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

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

مایکروسافت همچنین یک مفهوم مشابه را معرفی کرده است که به نوعی بسته نرم افزاری جدیدی است که قابلیت استفاده مجدد لیست دستورات را به توسعه دهنده خواهد داد. این مورد یکی از روش های صرفه جویی منابع CPU به شمار میرود که با استفاده از بسته نرم افزاری در مکان لیست دستورات مختلف باعث کاهش مقادیری میشود که CPU برای ساخت هر لیست از آن استفاده میکند. Direct3D 12 تکنیک جدیدی به اسم pipeline state objects را مورد استفاده قرار میدهد که موجب حذف دستورات بافرینگ میشود و این مورد در باره چگونگی معماری گرافیک های مختلف میتواند متفاوت باشد.

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

ForzaMotorSport 5

استفاده از DX12 در بازی ForzaMotorSport 5

API یا پلتفرم 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 را بیاموزند و پس از تست و برسری های فراوان، به محصول مورد نظر خود دست یابند.

پردازش هزاران سیارک به طور زنده (Real-Time) در DX12

پردازش هزاران سیارک به طور زنده (Real-Time) در DX12 با فریم ثابت

از همین جهت است که با عرضه رسمی 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-600x300

تصویر رندر شده توسط موتور بازی سازی 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 قابل استفاده است. این در حالی است کارت های جدیدتر از ویژگی های جدیدتری استفاده میکنند که در کارت های قدیمی تر قابل استفاده نخواهد بود.

پشتیبانی بی دردسر بالاترین سطح از قابلیت های موجود در کتابخانه Direct3D 12 با کارت GTX 980

پشتیبانی بی دردسر بالاترین سطح از قابلیت های موجود در کتابخانه Direct3D 12 با کارت GTX 980

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

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

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

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

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

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

قابلیت Rasterizer Ordered Views

قابلیت 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

در واقع پیسکل شیدرها با در نظر گرفتن مقصد رندرینگ نهایی، اطلاعات پیکسل نهایی را مشخص میکنند. اما 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

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

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

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

قابلیت Conservative Rasterization

قابلیت Conservative Rasterization

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

قابلیت های موجود در کتابخانه Direct3D 11 نشان دادند که صنعت بازی و گرافیک کامپیوتری وارد عصری جدید شده است. عصری که به گفته یکی از مدیران AMD، بهترین بازی هایش باید شبیه به فیلم آواتار جیمز کامرون باشد. Direct3D نسخه جدید همین امسال (۲۰۱۵/۱۳۹۴) منتشر میشود. کتابخانه جامع و قدرتمندی که در کنار نسل جدید کارت های گرافیک مردن انویدیا و AMD میتوانند به حداکثر بازدهی خود برسند و دنیای جدید را برای علاقه منان به بازی های رایانه ای ترسیم کنند.

منبع Guard3d anandtech
راي شما
1 Star2 Stars3 Stars4 Stars5 Stars6 Stars7 Stars8 Stars9 Stars10 Stars
Loading...

نوشته شده در بررسی سخت افزار,تحلیل فنی,کارت گرافیک

آخرین نقد و بررسی ها
بررسی مانیتور Samsung CFG70 27-Inch gaming

بررسی مانیتور Samsung CFG70 27-Inch gaming

تاريخ بررسي: ۲۶ آبان, ۹۶
بررسی کارت گرافیک ASUS ROG STRIX GTX 1060 OC 6GB

بررسی کارت گرافیک ASUS ROG STRIX GTX 1060 OC 6GB

۱۹ مرداد, ۹۶

9.0

بررسی کارت گرافیک Zotac GeForce GTX 1080 Ti AMP! Extreme

بررسی کارت گرافیک Zotac GeForce GTX 1080 Ti AMP! Extreme

۶ مرداد, ۹۶

9.6

بررسی کارت گرافیک Palit GTX 1080 GameRock Premium

بررسی کارت گرافیک Palit GTX 1080 GameRock Premium

۲۶ تیر, ۹۶

9.8

بررسی کارت گرافیک Sapphire Radeon RX 580 Nitro

بررسی کارت گرافیک Sapphire Radeon RX 580 Nitro

۲۳ اردیبهشت, ۹۶

9.2

روزی سگی، شیری را گفت: با من ستیز کن؛ شیر سر باز زد؛ سگ گفت: نزد تمام سگان خواهم گفت شیر از مقابله با من می هراسد. شیر گفت: سرزنش سگان را خوشتر دارم تا شماتت شیران، که گویند چون شیری باشد که با سگی پنجه در پنجه شده

×
نگاهی به واژه زامبی «Zombie» در بازی و فیلم
شاخه: بازی ها,مقالات بازی

نگاهی به واژه زامبی «Zombie» در بازی و فیلم

تــیم گارد3دی

تیم گــارد3دی (Guard3d.com) سعی بر ارائه مطالب متفاوت در زمینه سخت افزار و بازی دارد و امیدوار است در این زمینه بهترین عملکرد را داشته باشد . تیم گـــارد فعالیت خود را به صورت رسمی از تاریخ 2013-10-14 برابر با 1392-07-22 آغاز کرده و تمامی مطالب تولید شده توسط این سایت برای صاحبین آن محفوظ میباشد. کپی مطالب تنها با ذکر نام (Guard3d.com) مجاز است و ما از کپی مطالب بدون ذکر دقیق لینک منبع به صفحه مطلب راضی نیستیم. امیدواریم رضایت شما را جلب کنیم .

شبکه های اجتماعی

کپی رایت 2013 © تمامی حقوق نزد Guard3d محفوظ است | طراحی و کدنویسی توسط hosseincode

error: نمیتوانید کپی کنید!!! فقط لینک صفحه برای آدرس دهی به این مطلب قابل کپی است