در مطلب قبلی که راجع به Directx 11 نوشتم توضیحاتی بین دو direct یعنی ۱۰ و ۱۱ دادم و در همان مطلب یکی از خصوصیات آنرا گفتم. ولازم دونستم که اجزا نسخه ۱۱ هم بگم. اگر مطلب چرا direct 11 مهم است را خوانده باشید ، در آن از Multi-threaded صحبت کردم و ادامه همان را با عنوان مطلب جدیدی که در عنوان پست هست اجزا Directx 11 توضیح میدم که شما باید اون Multi-threaded هم جزو این مطلب حساب کنید.
Tessellation
جدیدترین ویژگی نسخه ۱۰ از Directx سایه زنیهای هندسی Geometry Shaders بود که نهایتا امکان ایجاد یا نابود کردن راسها برروی GPU را فراهم میکرد. اما تفسیری که روی آن کردن اشتباه بود. بجای اینکه از این واحد برای گسترش سنگین هندسی استفاده کنند، برای پیاده سازی Point-Spirit های انعطاف پذیرتر ، مدیریت Fur shading و یا محاسبه نیم رخ یک آبجکت برای الگوریتمهای سایه حجمی استفاده کردند. اصلا بهتر از یک واحد اختصاصی برای انجام Tessellation نیست. که این واحد اول برای نسخه ۱۰ برنامهریزی شده بود که در کارت radeon HD میبینید. ولی متاسفانه مایکروسافت و nVIDIA و ATI نتونستند سر این قضیه به تفاهم درستی برسند و این گزینه از نسخه ۱۰ برداشته شد و قرار شد که با نسخه ۱۱ بطور حرفه ای تر برگرده. پس میتونم بگم که Tessellation یک ویژگی بزرگ جدید در نسخه ۱۱ حساب میشه.
این نشان دهنده این است که مایکروسافت ۳ خط راندوی معرفی کرده، البته تاکید میکنم برای خواندن راندوی حتما مطلب چرا direct 11 مهم است را بخوانید. این ۳ خط عبارتند از Hull Shader و Tessellator و domain shader که برخلاف سایر مراحل خط لوله ، این ۳ مرحله با مثلثها بعنوان شکلهای اصلی Primitives کار نمیکنند، بلکه از مسیرها استفاده میکنند.
Hull shader: کنترل نقاط هر مسیر را در هنگام دریافت ورودی بر عهده گرفته و پارامترهای خاص tesselator نظیر tessfactor که میزان دقت tessellation را مشخص مینماید تعیین میکند.
tesselator: یک واحد fixed-function است، بنابراین نحوه محاسبه tessellation توسط برنامه نویس کنترل نمیشود. این واحد ، نقاط ایجاد شده رابرای domain shader میفرستد که به نوبه خود میتواند را برروی آنها انجام دهد. شاید بشه این قضیه را با یک مثالی که بزنم بهتر توضیحش بدم.
Displacement Mapping
بعنوان ورودی راسی سایه زنی، ما نقاط کنترل مسیرمون را در اختیار داریم. برنامه نویس میتونه این نقاط را به همان صورتی که مناسب میدونه دستکاری کنه، بنابراین تعداد آنها چندان زیاد نیست. برای آسانتر کردن کار، آنها یک نسخه بسیار زمختی از Mesh نهائی هستند. این نقاط تغییر شکل یافته بعدا به Hull Shader فرستاده میشوند که تعیین میکند هر طرف مسیر بایستی چندبار تقسیم گردد. مثلا تابعی از اندازه مسیر بر حسب پیکسل روی مانیتور. Tesselator هم فرایند tessellation را همینطور و به همین ترتیب اداره میکنه. که این کار شامل ایجاد ساختار هندسی است که به domain shader فرستاده میشه.
Domain Shadet: به نوبه خودش نقاط ایجاد شده را به فضای مقتضی تبدیل میکنه و رئوس کلاسیکی را تولید میکند که میتونه بعنوان تابعی از یک بافت جابجا displace شده و displacement mapping را انجام میدهند.
اینکارها همه به لطف tessellation انجام میشه بدون نیاز داشتند به normal map و پیاده سازی مستقیم یک سطح از جزئیات برروی Gpu امکانپذیر شده و همچنین امکان استفاده از مدلهایی با جزئیات بسیار بالا یعنی چند میلیون ضلعی بجای ۱۰۰۰۰ چند ضلعی در بازیهای فعلی را فراهم میکنه. البته این جمله که گفتم در حد تئوری بود. در عمل tessellation مشکلاتی داره که جلوی این تکنیک را تا الان گرفته، حالا آیا Directx 11 و nVIDIA و ATI میتونند این مشکل را حل کنند یا نه! هنوز معلوم نیست.
اجزا نسخه ۱۱ هنوز ادامه داره و اجازه بدید بقیه آنها را بخاطر اینکه مطلب طولانی نشه در پستهای بعدی وبلاگ توضیح بدم. بعد نیست یادی از خاطرات گذشته خودم بکنم. تصویر پائین اولین بازی هست که من با کامپیوتر انجام دادم البته این بازی تحت Dos بود و آنموقع هنوز ویندوز جایی نبود این بازی را خیلی دوست داشتم و هنوز هم دارم. تصویر پائین ترش ورژن جدید آن هست که با Directx 9 کار میکند. Prince Of Persia
سلام دوست عزیز واقعاً وب سایت جالبی داری شاید اولین باری باشه که میبینم اکثر مطالبت مفیده امیدوارم این کار خوب را ادامه بشی و موفق باشی اگر بحثی در مورد ساخت بازی هم باشه و کمک به ساخت بازی در ایران کنه واقعاً کار بزرگیه به هر حال ممنون
[…] اجزا Directx 11 ابزار Tessellation […]
سلام.باید بگم تحت تاثیر قرار گرفتم.کمتر ایرانی دیدم که حاضر بشه وب سایت طراحی کنه و این طور سخاوت مندانه اطلاعات خودش رو در اختیار دیگران بگذاره(حتی اگر از جای دیگر پیدا کرده باشه).به سختی می تونستم قبول کنم کسی این نوع اطلاعات را داشته باشه و تازه آن ها و در اختیار دیگران بگذاره.موفق باشید
نه بقیه هم خوبند فقط حوصله ندارند.
[…] است؟! توی مطالبی که من در مورد directX 11 توضیح میدادم در این مطلب نوشتم که: جدیدترین ویژگی نسخه ۱۰ از Directx سایه زنیهای […]
[…] از اجزا مهمش که قبلا هم توضیح کامل را راجع بهش دادم tessellation است اگر روی اسمش کلیک کنید به مطلبی که من راجع بهش کامل […]