مرجع Scalerها (Scaler Reference)
ابزار Web Adaptive Performance شامل مجموعهای از Scalerهای تخصصی (ماژولهای بهینهسازی) است. Indexer بهطور خودکار انتخاب میکند که کدام Scaler را بر اساس تأثیر بصری (Visual Impact) و نوع گلوگاه فعلی (Target: پردازنده یا کارت گرافیک) اعمال کند.
ماتریس سازگاری
در زیر ماتریس سازگاری و شرحی از تمام ماژولهای موجود آورده شده است.
| Scaler | Pipeline | Target | توضیحات |
|---|---|---|---|
| Resolution | BiRP URP | GPU | وضوح رندرینگ (Rendering Resolution) را کاهش میدهد و بار روی Fillrate کارت گرافیک را بهشدت کم میکند. جزئیات را در ادامه ببینید. |
| Shadows Quality | BiRP URP | GPU | سایهها را بهصورت مرحلهای غیرفعال میکند. در URP، ابتدا سایههای نرم (Soft Shadows)، سپس سایه نورهای اضافی، و در نهایت سایه اصلی را غیرفعال میکند. در BiRP، سایهها را قبل از غیرفعال کردن کامل، به حالت Hard Only تغییر میدهد. |
| Shadow Cascades | BiRP URP | CPU/GPU | تعداد Cascades سایهها را کاهش میدهد. Draw Callهای پردازنده و بار کارت گرافیک را کاهش میدهد. |
| Shadow Distance | BiRP URP | GPU | فاصله رسم (Draw Distance) سایهها را کوتاه میکند. |
| Shadow Resolution | BiRP URP | GPU | وضوح نقشههای سایه (Shadow Maps) را کاهش میدهد. |
| Anti Aliasing | BiRP URP | GPU | کیفیت Anti-Aliasing (MSAA) را تا غیرفعال شدن کامل آن کاهش میدهد. |
| LOD Bias | BiRP URP | GPU | موتور Unity را مجبور میکند تا در فواصل کوتاهتر به مدلهای LOD با تعداد چندضلعی کمتر (Low-poly) سوییچ کند. |
| Camera Clip | BiRP URP | GPU | پارامتر Far Clip Plane را در دوربینهای هدف کاهش داده و اشیاء دور را از رندرینگ حذف میکند. |
| Layer Culling | BiRP URP | CPU | فاصله Culling (حذف اشیاء دور از دید) را برای لایههای خاصی از اشیاء بهتناسب کاهش میدهد. |
| Physics Step | BiRP URP | CPU | فرکانس محاسبات فیزیک را کاهش میدهد. در هنگام بارهای سنگین فیزیکی در مرورگر، به حفظ عملکرد کمک میکند. |
| LUT | فقط URP | GPU | اندازه جداول LUT در Color Grading را به حداقل میرساند. |
| Mesh LOD Threshold | Unity 6+ | GPU | پارامتر meshLodThreshold معرفیشده در Unity 6.2 را برای تغییرات تهاجمیتر LOD تغییر میدهد. |
احتیاط با Physics Step Scaler
اسکیلر فیزیک مستقیماً پارامتر Time.fixedDeltaTime را تغییر میدهد. اگر کنترلر کاراکتر (Character Controller) یا مکانیکهای بازی شما بهطور سختگیرانه به فریمهای فیزیک ثابت بدون درونیابی (Interpolation) متکی باشند، حرکت اشیاء ممکن است در سطوح کیفیت پایینتر دچار پرش (Stuttering) شود.
تنظیم مجدد Scaler
اگر با پارامترهای Scaler آزمایش کردهاید (مثلاً Min Bound یا Max Level را تغییر دادهاید) و میخواهید به مقادیر پیشفرض بازگردید، کافیست سوئیچ آن را در پنجره Project Settings خاموش و روشن کنید. افزونه بهطور خودکار ماژول را با پیکربندی پایه از نو میسازد.
بررسی عمیق: Resolution Scaler
این قدرتمندترین ابزار افزونه است که بیشترین افزایش FPS را تضمین میکند. نحوه عملکرد آن بسته به پایپلاین (Pipeline) فعال بسیار متفاوت است.
در حالت URP (Universal Render Pipeline)
در URP، مقیاسبندی (Scaling) بدون نقص کار میکند. افزونه مستقیماً با ویژگی renderScale در UniversalRenderPipelineAsset تعامل میکند. رابط کاربری (UI) بهطور خودکار واضح میماند، زیرا URP میتواند Canvas را روی یک دنیای سهبعدی که مقیاس آن تغییر کرده است، رندر کند.
در حالت BiRP (Built-in Render Pipeline)
از نظر تاریخی، BiRP فاقد تنظیمات Render Scale داخلی است که بتواند در WebGL بدون خراب کردن رابط کاربری یا ایجاد خطا (مانند FBO Feedback Loop) کار کند. WebAP این مشکل را با ارائه دو استراتژی انحصاری حل میکند.
حالت ۱: NativeBrowserScaling (مقیاسبندی بومی مرورگر)
افزونه عنصر HTML <canvas> را مستقیماً از طریق فریب دادن حلقه بومی (Native Loop Spoofing) (با تزریق به پارامترهای devicePixelRatio مرورگر) مقیاسبندی میکند.
- مزایا: حداکثر عملکرد، بدون هزینه پردازشی اضافی (Zero Overhead) روی کارت گرافیک.
- معایب: رابط کاربری بازی همراه با گرافیک سهبعدی تار میشود. این حالت فقط در نسخه کامپایلشده WebGL عمل میکند (تغییرات در داخل Unity Editor قابل مشاهده نیستند).
حالت ۲: RenderTextureScaling
افزونه خروجی دوربینهای هدف را به یک بافت اشتراکی (Shared Texture) فشردهشده هدایت (Redirect) میکند و از یک دوربین ترکیبی پنهان (Compositor Camera) برای ارائه تصویر استفاده میکند.
- مزایا: دنیای سهبعدی تغییر مقیاس میدهد، در حالی که رابط کاربری (متن، دکمهها) کاملاً واضح میماند.
- معایب: به دلیل عملیات Blit (کپی کردن بافت به صفحه نمایش) بار جزئی به کارت گرافیک اضافه میکند.
اصلاح کلیکهای ماوس (Raycasts)
هنگام استفاده از RenderTextureScaling، مختصات مجازی صفحه فشرده میشود. برای اطمینان از اینکه کلیکهای ماوس روی اشیاء سهبعدی بهدرستی کار میکنند، افزونه بهطور خودکار کامپوننتهای استاندارد PhysicsRaycaster و Physics2DRaycaster در دوربینهای هدف را با کامپوننتهای سفارشی WebScaledPhysicsRaycaster جایگزین میکند. دقت Rayها در هر مقیاسی بینقص باقی میماند.
چگونه وضوح UI را حفظ کنیم؟ (برای BiRP RenderTextureScaling)
برای واضح نگهداشتن رابط کاربری در حین مقیاسبندی گرافیک سهبعدی در BiRP با RenderTextureScaling، باید Canvas خود را بهدرستی پیکربندی کنید. یکی از این دو گزینه را انتخاب کنید:
گزینه ۱: Screen Space - Overlay (توصیه شده)
سادهترین و مطمئنترین روش. افزونه تمام کارها را بهطور خودکار انجام میدهد.
۱. Canvas خود را در Hierarchy صحنه انتخاب کنید.
۲. در کامپوننت Canvas، ویژگی Render Mode را روی Screen Space - Overlay تنظیم کنید.
نتیجه: Unity رابط کاربری را روی دنیای سهبعدیِ فشردهشده، با وضوح ۱۰۰٪ بومی رندر میکند.
گزینه ۲: Screen Space - Camera (برای لایههای پیچیده)
اگر نیاز به ترکیب مدلهای سهبعدی، ذرات (Particles) و رابط کاربری دارید از این روش استفاده کنید. باید رندرینگ را به دو دوربین جداگانه تفکیک کنید.
۱. دوربین اصلی (سهبعدی): مطمئن شوید که تگ (Tag) آن در آرایه Target Tags تنظیمات Scaler مشخص شده باشد. در فیلد Culling Mask، تیک لایه UI را بردارید. ویژگی Depth را روی 0 تنظیم کنید.
۲. دوربین رابط کاربری (جدید): یک دوربین جدید برای رندر کردن رابط کاربری ایجاد کنید. تگ آن را به تنظیمات Scaler اضافه نکنید.
* ویژگی Clear Flags را روی Depth Only تنظیم کنید (تا دوربین پسزمینه سهبعدی را پاک نکند).
* ویژگی Culling Mask را فقط به لایه UI اختصاص دهید.
* ویژگی Depth را روی 1 (بیشتر از دوربین اصلی) تنظیم کنید.
۳. تنظیمات Canvas: ویژگی Render Mode را روی Screen Space - Camera تنظیم کنید و دوربین رابط کاربری جدید خود را به فیلد Render Camera بکشید.
