نبرد اشیاء در برابر پیکسلها: چگونه رندرینگ Forward و Deferred سرنوشت عملکرد بازی را رقم میزنند
موتورهای بازیسازی مدرن، توسعهدهندگان را مجبور به یک انتخاب بیرحمانه میکنند: رندر کردن هندسه یا رندر کردن نور. محاسبه دقیق هزینه عملکرد در سایهزنی Forward در برابر Deferred، پرده از این راز برمیدارد که چرا نورپردازیهای خیرهکننده اغلب به قیمت نابودی متریالهای شفاف و آنتیالایزینگ تمام میشوند.
به قلم قاسم طباطبایی
این خبر را به اشتراک بگذارید
- مدافعان رندرینگ Deferred
- نورپردازی پویای نامحدود و جداسازی پیچیدگی هندسی را برای صحنههای عظیم در اولویت قرار میدهند.
- مدافعان رندرینگ Forward
- بهرهوری پهنای باند حافظه، آنتیالایزینگ سختافزاری و پشتیبانی از متریالهای پیچیده را در اولویت قرار میدهند.
دیدگاههایی که این گزارش پوشش نداده
- معماران سختافزاری که سلسلهمراتب کش GPU را طراحی میکنند
- توسعهدهندگان موتورهای بازیسازی که در حال ساخت رندرهای هیبریدی Forward خوشهای (Clustered) هستند
تولیدکنندگان سختافزار مدام پردازندههای گرافیکی جدیدشان را با این وعده میفروشند که قدرت پردازشی خام بالاخره محدودیتهای نورپردازی را در هم شکسته است؛ وعدهای که به توسعهدهندگان القا میکند میتوانند بینهایت نور پویا را بدون هیچ عواقبی در صحنه رها کنند. اما واقعیت ریاضیاتی موتورهای بازیسازی مستقیماً این ادعا را نقض میکند. همانطور که در مستندات LearnOpenGL آمده است، پایپلاین سنتی رندرینگ Forward نورپردازی را با پیچیدگی O(اشیاء × نورها) محاسبه میکند. اگر صحنهای شامل ۱۰۰۰ شیء و ۱۰۰ نور باشد، GPU باید ۱۰۰٬۰۰۰ محاسبه نوری انجام دهد، حتی برای اشیایی که پشت یک دیوار پنهان شدهاند. پرتاب کردن یک پردازنده گرافیکی سریعتر به سمت این معادله، این حقیقت را تغییر نمیدهد که ریاضیات به شکل نمایی رشد میکند؛ و دقیقاً به همین دلیل است که مسیرهای استاندارد رندرینگ Forward در موتورهایی مثل Unity از نظر تاریخی تعداد نورهای پویا را به ۴ تا ۸ نور برای هر شیء محدود میکردند.[1][2]
برای در هم شکستن این سقف سخت، صنعت بازیسازی زمین بازی را به سمت یک گلوگاه سختافزاری کاملاً متفاوت تغییر داد: پهنای باند حافظه. سایهزنی Deferred (به تعویقافتاده)، همانطور که در مستندات جامعه توسعهدهندگان Valve به تفصیل شرح داده شده، فرآیند رندرینگ را به دو مرحله کاملاً مجزا تقسیم میکند. در مرحله اول، موتور بازی هندسه صحنه را بدون هیچگونه نورپردازی رندر میکند و دادههایی مانند عمق، نرمالها و رنگ را در یک مجموعه تکسچر عظیم به نام G-buffer ذخیره میکند. در مرحله دوم، موتور بازی نورپردازی را تنها با استفاده از پیکسلهای قابل مشاهده روی صفحه محاسبه میکند. در اینجا پیچیدگی محاسباتی به O(پیکسلها × نورها) سقوط میکند و هزینه نورپردازی را به طور کامل از تراکم هندسی صحنه جدا میسازد.[4][5][6]
اما این جداسازی، یک مالیات سنگین و غیرقابل اجتناب را بر حافظه GPU تحمیل میکند. یک G-buffer استاندارد برای هر تکپیکسل روی صفحه به ۱۶۰ تا ۲۵۶ بیت داده نیاز دارد. در رزولوشن 1080p، این حجم قابل مدیریت است. اما در رزولوشن 4K، G-buffer به صدها مگابایت داده متورم میشود که باید در هر فریم نوشته و خوانده شود؛ اتفاقی که گذرگاه حافظه را پیش از محاسبه حتی یک نور، کاملاً اشباع میکند. این دقیقاً همان بدهبستان عملکردی است که در انجمنهای تخصصی Computer Graphics Stack Exchange بر سر آن بحث میشود: رندرینگ Deferred پیچیدگی محاسباتی را با پهنای باند حافظه معامله میکند و رزولوشنهای بالا را به شکلی نامتناسب گران و پرهزینه میسازد.[3][6]
خطرات این بدهبستان دیکته میکند که یک بازی واقعاً چه چیزی را میتواند روی صفحه نشان دهد. از آنجا که رندرینگ Deferred نور را بر اساس دادههای نهایی و دوبعدی پیکسلها در G-buffer محاسبه میکند، از اساس متریالهای شفاف را در هم میشکند. یک پنجره شیشهای و دیواری که پشت آن قرار دارد نمیتوانند به طور همزمان یک پیکسل واحد را در G-buffer اشغال کنند. در نتیجه، موتورهایی مانند Unreal مجبورند متریالهای شفاف را از طریق یک مسیر جداگانه و پرهزینه رندرینگ Forward که روی صحنه Deferred لایهبندی میشود پردازش کنند؛ کاری که عملاً GPU را برای یک فضای یکسان از صفحه نمایش، دو بار جریمه میکند.[1][5]
خطرات این بدهبستان دیکته میکند که یک بازی واقعاً چه چیزی را میتواند روی صفحه نشان دهد.
آنتیالایزینگ (Anti-aliasing) نیز به سرنوشت مشابهی دچار میشود. آنتیالایزینگ چندنمونهای سختافزاری (MSAA) با رندرینگ Forward بینقص کار میکند، زیرا GPU هنگام رسم هر شیء، لبههای هندسی دقیق آن را میشناسد. اما در یک پایپلاین Deferred، این لبههای هندسی پیش از اعمال نورپردازی در G-buffer تخت میشوند. اعمال MSAA روی یک رندرکننده Deferred نیازمند راهکارهای پیچیدهای است که عملکرد را به شدت نابود میکند و صنعت را مجبور میسازد به سمت راهحلهای پسپردازشی مانند آنتیالایزینگ زمانی (TAA) برود؛ همان چیزی که باعث ایجاد سایه (Ghosting) و تاری در تصویر میشود و بازیکنان رقابتی از آن متنفرند.[7][8]
به همین دلیل است که مسیر رندرینگ، پلتفرم را تعیین میکند. واقعیت مجازی (VR) نیازمند رزولوشنهای فوقالعاده بالا و کمترین میزان تاخیر مطلق است، که همین امر پهنای باند سنگین حافظه و مشکلات آنتیالایزینگ در رندرینگ Deferred را به یک گزینه غیرممکن تبدیل میکند. در نتیجه، توسعهدهندگان VR تقریباً به طور انحصاری به پایپلاینهای بهینهشده رندرینگ Forward تکیه میکنند. در نقطه مقابل، بازیهای عظیم جهانباز با چرخههای شبانهروز و صدها منبع نور پویا نمیتوانند از زیر بار ریاضیات O(اشیاء × نورها) در رندرینگ Forward جان سالم به در ببرند، و اینجاست که مالیات G-buffer در Deferred به یک هزینه اجباری برای ادامه کار تبدیل میشود.[4][8]
موتورهای مدرن در تلاشند تا این شکاف را از طریق رندرینگ Forward خوشهای (Clustered) و کاشیکاریشده (Tiled) پر کنند؛ روشی که صفحه را به یک شبکه تقسیم کرده و نورهایی را که روی کاشیهای خاص تاثیری ندارند حذف میکند. این رویکرد هیبریدی، قابلیت «نورهای بینهایت» در رندرینگ Deferred را به پایپلاین Forward بازمیگرداند و آنتیالایزینگ سختافزاری و متریالهای شفاف را احیا میکند. با این حال، فیزیک بنیادین GPU دستنخورده باقی میماند: هر فریم یک بودجهبندی سختگیرانه از چرخههای پردازشی در برابر پهنای باند حافظه است و توسعهدهندگان باید انتخاب کنند که حاضرند کدام منبع را تا مرز نابودی مصرف کنند.[7][8]
دفعه بعد که با قدم گذاشتن به یک میدان شلوغ در شهر، نرخ فریم بازی شما نصف شد، یا یک پنجره شیشهای نتوانست انفجار نزدیکش را منعکس کند، بدانید که این یک شکست در بهینهسازی نیست. این موتور بازی است که دقیقاً همان بدهبستان ریاضیاتی را اجرا میکند که برایش برنامهنویسی شده است. انتخاب بین رندرینگ Forward و Deferred یک شرطبندی دائمی روی این مسئله است که آیا سختافزار بازیکن در هستههای پردازشی گلوگاه ایجاد میکند یا در گذرگاه حافظه؛ و هیچ مقدار از ترافلاپسهای خام نمیتواند قوانین ریاضی را دور بزند.[9]
چرا مهم است
هر فداکاری بصری در یک بازی مدرن (از لبههای لرزان گرفته تا انعکاسهای گمشده روی شیشه) ریشه در محدودیتهای ریاضیاتی موتور بازی در محاسبه نور دارد. درک این بدهبستان نشان میدهد چرا بازیای که روی رزولوشن 1440p مثل کره اجرا میشود، ناگهان در 4K به پتپت میافتد و چرا عناوین واقعیت مجازی (VR) از اساس با نسخههای دسکتاپ تفاوت ظاهری دارند.
نکات کلیدی
- رندرینگ Forward نورپردازی را برای هر شیء محاسبه میکند، که با افزایش تعداد نورهای پویا باعث افت نمایی عملکرد میشود.
- رندرینگ Deferred نورپردازی را برای هر پیکسل محاسبه میکند و اجازه میدهد تعداد عظیمی از نورهای پویا با یک هزینه پردازشی ثابت پردازش شوند.
- جیبافر (G-buffer) مورد نیاز برای رندرینگ Deferred پهنای باند حافظه عظیمی را میبلعد و در رزولوشن 4K به شدت افت عملکرد پیدا میکند.
- پایپلاینهای Deferred از اساس با متریالهای شفاف و آنتیالایزینگ سختافزاری مشکل دارند و توسعهدهندگان را مجبور به استفاده از راهکارهای جایگزین و پرهزینه میکنند.
- توسعهدهندگان واقعیت مجازی و موبایل به شدت به رندرینگ Forward متکی هستند تا پهنای باند حافظه را حفظ کرده و نرخ فریم بالایی ارائه دهند.
منابع
[1]LearnOpenGLمدافعان رندرینگ DeferredDeferred Shading
مطالعه در LearnOpenGL →
[2]UnityRendering paths in Unity
مطالعه در Unity →
[3]Computer Graphics Stack ExchangeWhat is the performance tradeoff between forward and deferred rendering?
مطالعه در Computer Graphics Stack Exchange →
[4]Valve Developer Communityمدافعان رندرینگ DeferredDeferred renderer (shading & lighting)
مطالعه در Valve Developer Community →
[5]Unreal Art Optimizationمدافعان رندرینگ DeferredForward vs Deferred Shading
مطالعه در Unreal Art Optimization →
[6]Mighty Professional TutorialsDeferred Rendering & the G-buffer
مطالعه در Mighty Professional Tutorials →
[7]Bugnet Blogمدافعان رندرینگ ForwardForward vs Deferred Rendering: Which Should You Use
مطالعه در Bugnet Blog →
[8]GDC Vaultمدافعان رندرینگ ForwardForward Rendering Pipeline for Modern GPUs
مطالعه در GDC Vault →
[9]تیم سردبیری کوهستانتحلیل تیم سردبیری کوهستان
مطالعه در تیم سردبیری کوهستان →
نظرات
بیشتر در بازی و ورزشهای الکترونیک
مشاهده همه →تکنولوژی کنترلر
فیزیک دریفت آنالوگ: چگونه سنسورهای اثر هال به استهلاک کنترلرها پایان دادند
4 منبع
استراتژی درفت
وتوی نوبتی و درفت ماری: تیمهای ورزشهای الکترونیک چگونه در فاز پیک و بن برتری استراتژیک میسازند؟
6 منبع
صدای فضایی
چگونه توابع انتقال مرتبط با سر صدای جهتدار را در بازیها خلق میکنند
5 منبع
طراحی بازی
علم «زمان کایوتی» و بافرینگ ورودی: چگونه بازیهای پلتفرمر اشتباهات بازیکنان را میبخشند
6 منبع
هر زاویه. هر روز.
دریافت بازی و ورزشهای الکترونیک اخبار همراه با پوشش کامل منابع و تحلیل دیدگاهها، مستقیم در صندوق ورودی شما.





