Skip to content

مرجع Scalerها (Scaler Reference)

ابزار Web Adaptive Performance شامل مجموعه‌ای از Scalerهای تخصصی (ماژول‌های بهینه‌سازی) است. Indexer به‌طور خودکار انتخاب می‌کند که کدام Scaler را بر اساس تأثیر بصری (Visual Impact) و نوع گلوگاه فعلی (Target: پردازنده یا کارت گرافیک) اعمال کند.

ماتریس سازگاری

در زیر ماتریس سازگاری و شرحی از تمام ماژول‌های موجود آورده شده است.

ScalerPipelineTargetتوضیحات
ResolutionBiRP URPGPUوضوح رندرینگ (Rendering Resolution) را کاهش می‌دهد و بار روی Fillrate کارت گرافیک را به‌شدت کم می‌کند. جزئیات را در ادامه ببینید.
Shadows QualityBiRP URPGPUسایه‌ها را به‌صورت مرحله‌ای غیرفعال می‌کند.
در URP، ابتدا سایه‌های نرم (Soft Shadows)، سپس سایه نورهای اضافی، و در نهایت سایه اصلی را غیرفعال می‌کند.
در BiRP، سایه‌ها را قبل از غیرفعال کردن کامل، به حالت Hard Only تغییر می‌دهد.
Shadow CascadesBiRP URPCPU/GPUتعداد Cascades سایه‌ها را کاهش می‌دهد. Draw Callهای پردازنده و بار کارت گرافیک را کاهش می‌دهد.
Shadow DistanceBiRP URPGPUفاصله رسم (Draw Distance) سایه‌ها را کوتاه می‌کند.
Shadow ResolutionBiRP URPGPUوضوح نقشه‌های سایه (Shadow Maps) را کاهش می‌دهد.
Anti AliasingBiRP URPGPUکیفیت Anti-Aliasing (MSAA) را تا غیرفعال شدن کامل آن کاهش می‌دهد.
LOD BiasBiRP URPGPUموتور Unity را مجبور می‌کند تا در فواصل کوتاه‌تر به مدل‌های LOD با تعداد چندضلعی کمتر (Low-poly) سوییچ کند.
Camera ClipBiRP URPGPUپارامتر Far Clip Plane را در دوربین‌های هدف کاهش داده و اشیاء دور را از رندرینگ حذف می‌کند.
Layer CullingBiRP URPCPUفاصله Culling (حذف اشیاء دور از دید) را برای لایه‌های خاصی از اشیاء به‌تناسب کاهش می‌دهد.
Physics StepBiRP URPCPUفرکانس محاسبات فیزیک را کاهش می‌دهد. در هنگام بارهای سنگین فیزیکی در مرورگر، به حفظ عملکرد کمک می‌کند.
LUTفقط URPGPUاندازه جداول LUT در Color Grading را به حداقل می‌رساند.
Mesh LOD ThresholdUnity 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 بکشید.