شیوه محاسبه Batching در یونیتی
ارتباط بین GPU و CPU
در پست قبلی گفتیم که draw call دستوری برای رسم Mesh است که توسط CPU فراخوانی و توسط GPU دریافت می شود.
درسته GPU به صورت موازی کار می کنه اما چه ارتباطی بین CPU و GPU وجود داره؟ آیا CPU باید منتظر بمونه تا GPU کار هاشو تموم کنه تا بتونه دستورات جدید رو دریافت کنه؟
خوشبختانه نه! به خاطر اینکه که چنین ارتباطی bottlenecks ایجاد می کنه (مثلاً وقتی CPU نمی تونه دستورات کافی رو سریع تحویل بده) و کار موازی را غیرممکن می کنه.
راه حل لیستیه که توش دستورات توسط CPU اضافه و توسط GPU خوانده بشه - اینطوری مستقل از یکدیگرند! به این لیست Command Buffer میگن.
نکته: draw call ربطی به تعداد vertex نداره!
نکته: draw call ربطی به اندازه تکسچر نداره!
فرمول محاسبه Batch
به ازای هر متریال 1 Batch داریم
پس حواستون باشه که موقع Export گرفتن مدل از نرم افزار مدلسازی متریال هاش کم باشه
چون تو مثال پایین 6 تا متریال داره در نتیجه 6 تا Batch حساب میشه!
تعداد Batch به تعداد تکه های Mesh هم ربط داره!
پس تا می تونید مدلی Export بگیرید که تعداد تکه های کمی داشته باشه!
توضیح SetPass Call
این Pass مربوط به Shader ، Texture و Blending هست
منبع:Batch! Let's take a look at Batching! - Unite Seoul 2016
مطلبی دیگر از این انتشارات
اصل جداسازی Interface ها
مطلبی دیگر از این انتشارات
بدست اوردن مختصات گوشه های باکس کُلایدر "box colider" در یونیتی
مطلبی دیگر از این انتشارات
الگو های طراحی در یونیتی