Quarantine در حال رشد
تاريخ عضويت: 4 شنبه 2 فروردين 1391 تعداد ارسالها: 48
2 شنبه 26 تير 1391 - 21:59 |
|
|
نقل قول: |
drawcall ها به تعداد پلیگان هم وابسته هست. مثلا هر 300 مثلث یک drawcall اضافه می کنه. |
این محدودیت ها گمونم مربوط به Dynamic batching میشه... و مقدارشم بر حسب ورتکس سنجدیده میشه. البته این نامبر ها فیکس نیستن و در آینده به این حد شمارش اضافه هم میشه.
Batching dynamic objects has certain overhead per vertex, so batching is applied only to meshes containing less than 900 vertex attributes in total.
If your shader is using Vertex Position, Normal and single UV, then you can batch up to 300 verts and if your shader is using Vertex Position, Normal, UV0, UV1 and Tangent, then only 180 verts.
Please note: attribute count limit might be changed in future
اما این در مورد static batching صدق نمی کنه:
http://docs.unity3d.com/Documentation/Manual/iphone-DrawCall-Batching.html
تو تست بالا 4 تا مکعب ساده درست و حسابی با هم بتچ نمیشن.
نقل قول: |
مثلا توی یک مک بوک همچین اتفاقی نمی افتاد ولی توی ویندوز این طور بود |
این نکته جدیدی بود ...مرسی... میشه یه لطفی بکنی و پروژه ی تستی که اون بالا دادمو یه تستی بکنی ؟ شخصیت رو جایی تنظیم کردم که با شروع بازی پنج drawcall نشون داده بشه... ببین شما هم پنج تا داری یا 4 تا....
نقل قول: |
یک مسئله دیگه هم فاصله آبجکت ها از دوربین هستش. اگه یک آبجکت با متریال جدا بین حد فاصل دو آبجکت با یک متریال یکسان باشه با این که شما دو متریال دارید 3 drawcall دارید. مثلا برای یک بازی دو بعدی باید سعی کنید بکگراند دارای یک متریال آبجکتهای میانی دارای یک متریال و gui دارای متریال جداگانه باشد. تا در بهترین حالت 3 drawcall داشته باشید. |
جالب بود مرسی... اما تو تست ساده بالا ما فقط سه تا آبجکت داریم که همه شون از یه متریال ساده استفاده می کنن. و دوری و نزدیکی هم همونطوری که گفتم تاثیر خاصی رو drawcall ها داره... تو بحثی که اینجا:
http://answers.unity3d.com/questions/283345/is-batching-and-also-atlas-almost-useless.html
داشتم آخرش به این نتیجه رسیدم که ممکنه خطای پنجره آمار یونیتی باشه..
نقل قول: |
نکته سوم هم مربوط به scale می شه که آبجکتهایی که scale متفاوت داشته باشند با هم Batch نمی شوند و drawcall اضافه می شود. البته در یک حالتی این اتفاق نمی افته ( در خود document گفته شده ولی دلیلش رو نگفته ) که من به شخصه هیچ وقت scale رو عوض نمی کنم که در آینده دچار مشکل نشم ... |
البته scale کردن هم بازم مربوط میشه به dynamic batching طبق documentation خود یونیتی:
http://docs.unity3d.com/Documentation/Manual/iphone-DrawCall-Batching.html
Don't use scale. Objects with scale (1,1,1) and (2,2,2) won't batch.
Uniformly scaled objects won't be batched with non-uniformly scaled ones.
Objects with scale (1,1,1) and (1,2,1) won't be batched. On the other hand (1,2,1) and (1,3,1) will be.
منم واقعیتش اصلا scale خود یونیتی رو عوض نمی کنم... سعی میکنم که Xform آبجکت ها رو قبل از اکسپورت ریست کنم تا تو یونیتی مشکل scale نداشته باشم...
نقل قول: |
من فعلا با Static Batching کار نکردم. این اطلاعاتی بود که در مورد drawcall داشتم |
ممنونم.... سعی می کنم که اطلاعات بیشتر رو به زودی ارائه بدم. |
|
|