Draw Call چیست؟ یعنی چه؟ در بازی سازی یونیتی
gameover.blog.ir
draw call یا پیغام رسم به پیغام های GPU اطلاق میشه که موتور برای رندر کردن تمام
آبجکت های تو صحنه نیاز داره. بنابراین به ازای هر تکسچر و متریال نسبت
داده شده به آبجکت یک پیغام به GPU ارسال میشه. بدیهیه که هر چقدر این
تعداد کمتر باشه رندرینگ راحت تر صورت می گیره. البته انواع رندرینگ و غیره
هم تو افزایش یا کاهش تعداد این Draw Call ها تاثیر دارن.
راه حل خوب برای کاهش Draw Call ها استفاده از Texture Atals ه اما این کار
دردسرای خاص خودشو داره. باید عکسای مورد نظرمونو تو فوتوشاب با رزولوشن
مورد نظرمون آماده کنیم و بعد برای آبجکت های مورد نظرمون قسمت های مورد
نیاز اتلس رو تو ابزار تری دی UV کنیم. جدا از اینکه این کار زمان زیادی می
بره نقطه ضعفش اینه که با ویرایش اتلس (مثلا اگه بخوایم سازشونو تغییر
بدیم یا کمی جابجا شون کنیم)، مختصات UV ها به هم میریزه و باید تک تک
آبجکت ها رو دوباره تنظیم کنیم. این کار برای دو سه مدل مشکلی رو ایجاد نمی
کنه اما اگه حدود 100 تا تکسچر رو اتلس کرده باشیم اونوقت تنظیم همه شون
دیوونگیه.
خوشبختانه، همونطور که می دونید، پلاگین هایی هستن که این کار رو براتون
انجام میدن اما بدی شون اینه که یا این کار رو به صورت Real Time انجام
میدن مثل Draw Call Minimizer که مشکلات خاص خودشو داره و یا اینکه آبجکت
ها رو ترکیب می کنن مثل Mesh Baker (که من نمی خوام ترکیبشون کنن)
آیا پلاگینی وجود داره که فقط بتونه از آبجکت هایی که فقط با یک تکسچر UV شده Texture Atlas بگیره و مختصات هر تکسچر جداگونه رو حفظ کنه بدون اینکه بخواد آبجکت ها رو ترکیب کنه ؟
https://www.assetstore.unity3d.com/#/content/5515 : AtlasEditor
این پلاگین مجانی هستش ، اگه از یونیتی پرو استفاده می کنی که خود یونیتی
گفته که تو یونیتی 4.3 این کار رو انجام می ده و علاوه بر این اگه برای منو
می خوای از این استفاده کنی یکسری پلاگین دیگه برای منو هستش که توی
خودشون این کار رو انجام می دن .