نورپردازی یکی از مهمترین جنبه های بازی است. می تواند خلق و خو را تنظیم کند، بازیکن را هدایت کند، تهدیدها یا اهداف را شناسایی کند و موارد دیگر. نورپردازی می تواند جلوه های بصری یک بازی را بسازد یا آن را خراب کند. به عنوان مثال، نور خوب می تواند یک مدل بد را در بازی بهتر به نظر برساند، در حالی که نور بد می تواند یک مدل عالی را بدتر کند.
این راهنما اطلاعاتی را برای عملکرد بهتر نور در یک بازی موبایل ارائه می دهد. نحوه تصمیم گیری شما برای استفاده از نور بر عملکرد بازی موبایل شما تأثیر می گذارد. مهم است که از نورپردازی به طور موثر استفاده کنید تا مطمئن شوید که بازی شما تا حد امکان روان اجرا می شود.
بخشهایی از این مقاله بر اساس آثار ارائهشده و دارای حق چاپ توسط Arm Limited است.
رندر گزینه های خط لوله
خط لوله رندر Legacy Unity شامل مسیرهای رندر زیر است:
- ارائه به جلو
- سایه زنی معوق
ارائه به جلو
با رندر جلو، نورهای بلادرنگ بسیار گران هستند. اگر تعداد نورهای موجود در هر پیکسل را کاهش دهید، می توانید این هزینه را جبران کنید.
سایه زنی معوق
سایهزنی معوق نیاز به پشتیبانی GPU دارد. در سختافزار سازگار، سایهزنی معوق میتواند تعداد زیادی نور در زمان واقعی را با سطح بالایی از وفاداری نور ارائه کند. متأسفانه، سایهزنی معوق در پردازندههای گرافیکی موبایل عملکرد خوبی ندارد زیرا پهنای باند کمتری دارند.
هنگامی که عنوانی برای موبایل می سازید، مهم است که بازی شما تا حد امکان بر روی دستگاه های زیادی اجرا شود.
خط لوله رندر جهانی
یونیتی خط لوله رندر جهانی (URP) را توسعه داده است. ما به شدت توصیه می کنیم که از URP برای بازی های موبایل خود استفاده کنید.
حالت های نور
حالت های مختلف نور بر اساس نحوه حرکت نور یا استفاده از آن در یک صحنه استفاده می شود. انواع حالت نور ویژگی های عملکرد متفاوتی دارند. هنگام اجرای چراغ ها، موارد زیر را در نظر بگیرید:
- برای روشنایی استاتیک از پخته استفاده کنید. این برای اشیایی که نور خود را در طول زمان اجرا تغییر نمی دهند بهترین است. Baking lights فرآیند پیش محاسبه و ذخیره داده های روشنایی در نقشه های بافتی است که به آنها lightmaps می گویند.
- روشنایی پخته را نمی توان در زمان اجرا تغییر داد. نور و سایه ها در لایت مپ ها ثابت هستند. از آنجایی که تمام نورپردازی در Unity از قبل پردازش شده است، هیچ محاسباتی در زمان اجرا وجود ندارد که بر عملکرد تأثیر بگذارد.
- سایه های پویا را نمی توان با نور پخته ایجاد کرد. این ممکن است در مورد اجسام پویا یا متحرک عجیب به نظر برسد.
- برای نورهای ثابتی که قصد دارید با اجسام متحرک تعامل داشته باشید، از مخلوط استفاده کنید. به عنوان مثال، مشعلی که بر روی بازیکن نور می اندازد و در حین حرکت بازیکن سایه ایجاد می کند.
- نور ترکیبی نور و سایه مستقیم پویا ایجاد می کند.
- می توانید نور ترکیبی را در محاسبات نقشه نوری برای اجسام ساکن بگنجانید.
- می توانید شدت را در زمان اجرا تغییر دهید. فقط نور مستقیم به روز می شود.
- گران است.
- از زمان واقعی برای نورهای پویا یا متحرک استفاده کنید، مانند نوری که از یک گلوله آتشین که از زمین بلند می شود و منفجر می شود.
- ویژگی های نور و سایه پویا را می توان در زمان اجرا تغییر داد.
- نورهای بلادرنگ در نقشه های نوری پخته نمی شوند.
- خیلی گرونه
برای اطلاعات بیشتر، خط لوله روشنایی یونیتی را بخوانید.
در صورت امکان، از نور ساکن استفاده کنید و از نور دینامیک خودداری کنید
نورپردازی پویا یا بلادرنگ در هر فریم محاسبه و به روز می شود. این برای اجسام متحرک، تعامل و ایجاد احساسات عالی است.
در مقابل، اطلاعات نور استاتیک در نقشه های نوری پخته می شود. استفاده از بافت نوری به یک شی امکان می دهد از محاسبات گران قیمت نورپردازی در هر رأس یا هر پیکسل اجتناب کند. هزینه رندر یک بافت لایت مپ همیشه بسیار ارزان تر از نورپردازی پویا است. توصیه می کنیم که نورپردازی پخته اولین انتخاب شما برای پیاده سازی در یک بازی موبایل باشد.
پخت لایت مپ
پیش محاسبه اثرات نور به پخت نور نقشه معروف است. اثر نور در یک بافت جداگانه ذخیره می شود که به آن نقشه نوری می گویند. از لایت مپ می توان برای تقویت ظاهر اجسام استفاده کرد. پخت Lightmap فقط باید یک بار در هر تکرار صحنه شما انجام شود. اگر هندسه صحنه خود را تغییر دهید، یا پارامترهای چراغ های پخته شده را تغییر دهید، باید نقشه های نور را دوباره بسازید. به جز سربار بافت lightmap، هیچ هزینه عملکرد اضافی در زمان اجرا وجود ندارد. این بهترین رویکرد اولیه برای روشنایی در یک پلت فرم تلفن همراه است.
نور پخته تحت تأثیر هیچ یک از جنبه های پویا یا متحرک صحنه شما قرار نمی گیرد. روشنایی پخته شامل روشنایی جهانی پخته برای همه عناصر استاتیک می شود. این به این معنی است که محاسبات نقشه نوری شامل نور غیرمستقیم است که از سایر اجسام ثابت منعکس شده است و همچنین نورهای پخته شده ای که مستقیماً به جسم برخورد می کنند.
شکل 1. راه اندازی روشنایی تمام پخته شده مورد استفاده در دمو فناوری ارتش.
برای پخت چراغ های خود، سه مرحله زیر را انجام دهید.
مرحله 1: چراغ ها را روی Mixed یا Baked تنظیم کنید
حالت چراغ ها را روی مخلوط یا پخته تنظیم کنید. برای عناوین موبایل، بهتر است از Baked lights روی Mixed استفاده کنید. پخته شده کم هزینه ترین راه برای ارائه نور است.
شکل 2. تنظیم حالت نور در Unity.
مرحله 2. اشیاء را ثابت کنید
هر جسمی را که تحت تأثیر چراغ های پخته قرار می گیرد ثابت کنید. بهینه سازی های زیادی برای یک شی که به عنوان ثابت علامت گذاری شده است وجود دارد، اما معمولاً بهتر است همه چیز را در لیست کشویی Static انتخاب کنید. با علامت گذاری شده به عنوان Static ، Unity می داند که آن را در پخت سبک قرار دهد.
شکل 3. نمونه ای از منوی ثابت.
مرحله 3. پخت چراغ های خود را
می توانید با منوی Lighting که در Window > Rendering > Lighting Settings یافت می شود، چراغ های خود را بپزید.
وقتی چراغها را پخت میکنید، دادههای ذخیرهشده بر اساس هر صحنهای است که هنگام شروع پخت فعال بود. پوشه ای با همان نام صحنه پخته شده ایجاد می شود. این پوشه تمام اجزای مربوط به داده های روشنایی را ذخیره می کند. اگر پروژه شما چندین صحنه را در یک زمان بارگذاری می کند، باید چراغ های هر صحنه را بپزید. اگر صحنه خود را تنظیم کنید، باید چراغ ها را دوباره بپزید.
شکل 4. نمونه ای از نقشه های نوری پخته شده.
بهینه سازی نقشه های نوری
پس از تنظیم چراغ ها برای پخت، مطمئن شوید که نقشه های پخته شده بهینه شده اند. اندازه لایت مپ ها بر اساس تنظیماتشان در زمان پخت متفاوت است. شما باید مصرف حافظه را در موبایل پایین نگه دارید، بنابراین اندازه lightmap باید نظارت شود.
در مثال زیر از نسخه ی نمایشی Armies، هفت لایت مپ پیکسل 1024x1024 وجود دارد. در پیشنمایش نقشه، میتوانید مشهایی را که روی لایت مپ گذاشته شدهاند، مشاهده کنید. مش های انتخاب شده برجسته می شوند.
شکل 5. این نمونه ای از یک نقشه نوری است. بخش های آبی مش های انتخاب شده هستند.
تنظیمات زیادی در تنظیمات Lightmapping به همراه اندازه نقشه ها وجود دارد که تعیین می کند هر نقشه چه مقدار حافظه و فضای ذخیره سازی استفاده می کند. بخشهای زیر چند تنظیمات مهم را برجسته میکنند.
نورپردازان
یونیتی سه روش زیر را برای پختن چراغ ها در صحنه ارائه می دهد:
- Enlighten : فقط تا انتشار پشتیبانی بلند مدت (LTS) در سال 2020 پشتیبانی می شود. از این برای پروژه های جدید استفاده نکنید.
- CPU پیشرو : در زمان زیادی صرفه جویی می کند زیرا به صورت تدریجی نقشه های سبک ایجاد می کند. اگر نمایش اولویت انتخاب شده باشد، مناطق در نمای صحنه اولویت بندی می شوند. این می تواند زمان تکرار برای تنظیم نور صحنه شما را کاهش دهد.
- پردازشگر گرافیکی پیشرو : این پردازنده مانند پردازنده پیشرو عمل می کند، اما به جای پردازنده، نقشه نور را روی GPU ایجاد می کند. در سخت افزار پشتیبانی شده، این روش می تواند زمان پخت را در مقایسه با استفاده از CPU بسیار کاهش دهد. برای راه اندازی GPU Progressive نیازمندی های اضافی وجود دارد. در صفحه The Progressive GPU Lightmapper درباره الزامات بیشتر بدانید.
شکل 6. تنظیمات Lightmapper به شما امکان می دهد روش پخت را برای صحنه خود تغییر دهید.
تکلز
یک تکسل یا بافت پیکسل، یک پیکسل مجزا در یک نقشه بافت است. Texels اطلاعات نور را در یک نقشه نوری برای هر نقطه نوری که به یک جسم برخورد می کند ذخیره می کند. هرچه تعداد تکسل های بیشتری در واحد فضا استفاده شود، بر کیفیت نورپردازی، زمان محاسبه پخت، هزینه های ذخیره سازی دیسک و هزینه VRAM نقشه های نوری شما تأثیر می گذارد.
برای کاهش مقدار داده های مورد نیاز نقشه نور، تعداد تکل ها در هر واحد پخت را در تنظیمات Lightmapping تنظیم کنید.
شکل 7. تنظیمات موجود برای lightmaps.
در Lightmapping Settings ، پارامتر Lightmap Resolution کنترل می کند که چند تکل در هر واحد در lightmap استفاده می شود. در زیر نمونه ای از یک مکعب با تنظیمات مختلف Lightmap Resolution آورده شده است. می توانید ببینید که چگونه وضوح بالاتر میزان کار مورد نیاز را به سرعت افزایش می دهد.
شکل 8. اولین مکعب دارای وضوح نقشه نور 1
است. مکعب دوم دارای رزولوشن Lightmap 2
است. مکعب سوم دارای رزولوشن Lightmap 5
است.
برای مشاهده نحوه چیدمان تکل ها در صحنه، لیست کشویی حالت ترسیم را در نمای صحنه انتخاب کنید و Baked Lightmap را انتخاب کنید.
اشیای پخته شده با روکش شطرنجی پوشانده شده اند. الگوی شطرنجی نشان میدهد که وقتی چراغها را میپزید، تکسلهای شما چگونه توزیع میشوند.
در مثال زیر، کاهش رزولوشن Lightmap از 15
به 12
در دمو Armies، تعداد لایت مپ های مورد نیاز را از 7 به 4 کاهش می دهد.
شکل 9. نسخه ی نمایشی ارتش با وضوح نقشه 12
.
استفاده از Texel
در حالی که میتوانید تعداد تکسلها در هر واحد را در کل صحنه تنظیم کنید، اغلب برخی از اشیاء هستند که به تعداد زیادی تکسل نیاز ندارند.
Unity به شما این امکان را می دهد که کنترل کنید هر شی از چند تکل استفاده می کند. در Inspector > Mesh Renderer برای یک شی، مقدار پارامتر Scale In Lightmap تعداد تکسلهایی را که شی در لایت مپ استفاده میکند، کنترل میکند.
در مثال زیر، مکعب سمت چپ دارای پنج تکسل اطلاعات نور در هر واحد پخت است. در کادر سمت راست، Scale In Lightmap روی 0.5 تنظیم شده است. این تنظیم، تکسل های نور را به 2.5 کاهش می دهد، که نسبت به کادر سمت چپ، فضای کمتری در نقشه نوری نیاز دارد.
شکل 10. دو مکعب با وضوح های مختلف نقشه نور.
شکل 11. می توانید تنظیمات Scale In Lightmap را طوری تغییر دهید که یک شی تعداد تکسل های کمتری داشته باشد.
سعی کنید از صرف تکسل برای موارد زیر اجتناب کنید:
- سطوح و اشیایی که بازیکن نمی بیند. این از هدر رفتن حافظه در نقشه های نوری برای جزئیاتی که روی صفحه نیستند جلوگیری می کند.
- سطوحی که تغییرات نوری کمی روی آنها وجود دارد. به عنوان مثال، اشیاء در سایه یا لمس شده توسط یک منبع نور.
- اجسام کوچک یا نازک. میزان نوری که اینها دریافت می کنند، چیز زیادی به رندر نهایی صحنه اضافه نمی کند.
نورپردازی تقلبی تا حد امکان
برای کاهش نیازهای پردازش، می توانید برخی از عناصر را جعل کنید. این می تواند باعث شود که محتوای شما سبک به نظر برسد، اما در واقع از روش های کارآمدتری استفاده کنید.
سایه های جعلی
سایه های بلادرنگ گران هستند. آنها با تکنیکی به نام نقشه سایه تولید می شوند. هزینه ارائه هندسه صحنه به نقشه سایه متناسب با تعداد رئوس رسم شده با سایه های فعال است. توصیه می کنیم مقدار هندسه ای که سایه می اندازد و تعداد نورهای سایه افکن بلادرنگ را محدود کنید.
شما می توانید سایه های جعلی را برای سایه ها بر روی اشیاء پویا بدون نورهای پویا پیاده سازی کنید. این هزینه های رندرینگ را پایین نگه می دارد و می تواند اثری مشابه سایه های پویا داشته باشد. در زیر چند راه برای اجرای سایه های تقلبی وجود دارد:
- از یک مش سه بعدی مانند صفحه یا چهارتایی که در زیر کاراکتر قرار داده شده استفاده کنید و یک بافت تار روی آن اعمال کنید.
- شما می توانید سایه بان سفارشی خود را برای سایه های حباب پیچیده تر بنویسید.
اگر از مش سه بعدی برای سایه استفاده کنید، مثال زیر نتیجه را نشان می دهد:
شکل 12. اجرای سایه در نسخه ی نمایشی فناوری ارتش.
اطلاعات نور را مستقیماً روی بافت ها رنگ کنید
اگر مقداری از سایه را در بافت ها رنگ کنید، محاسبات لازم برای نورهای اضافی را کاهش می دهید. این باعث صرفهجویی در حافظه میشود، زیرا به دادههای نقشه نوری کمتری نیاز دارد.
پروب های نور
هنگامی که از اشیاء پویا با نورپردازی پخته استفاده می کنید، آنها تحت تأثیر نقشه های نوری قرار نخواهند گرفت. این ممکن است باعث شود آنها احساس کنند که بخشی از صحنه نیستند.
می توانید با Light Probes این مشکل را حل کنید. کاوشگرهای نور مزایای مشابهی با نقشه های نوری دارند. آنها داده های سبکی را ذخیره می کنند که می توانند قبل از زمان محاسبه شوند و برای استفاده در زمان اجرا ذخیره شوند. این امر بسیاری از هزینه های محاسباتی را به زمان ویرایش منتقل می کند.
در حالی که یک نقشه نوری نور دریافت شده در یک تکسل را برای سطوح رمزگذاری می کند، یک نور پروب نوری را که از فضای خالی عبور می کند ذخیره می کند. می توانید از این داده ها برای نور دادن به اجسامی که حرکت می کنند استفاده کنید. کاوشگرهای نوری به ادغام اشیاء پویا به صورت بصری با اشیاء دارای نقشه نوری در سراسر صحنه شما کمک می کنند.
کاوشگرهای نور بهتر است برای نور دادن به اجسامی که در صحنه شما حرکت می کنند استفاده شود. کاوشگرها از نورهای پخته شما استفاده می کنند، که به اشیاء متحرک شما اجازه می دهد نوری مشابه صحنه داشته باشند. نورپردازی اجسام دینامیک با نور پروب نسبت به نورهای بلادرنگ هزینه کمتری دارد.
میتوانید درباره صفحات نورپردازی استاتیک با پروبهای نور و پروبهای نور بیشتر بدانید.
شکل 13. کاوشگرهای نوری که برای روشن کردن جمعیت پویا در دمو فناوری ارتش ها قرار داده شده اند.
تنظیمات Mesh Renderer
صرف نظر از نوع نوری که Scene شما استفاده می کند، مهم است که تنظیمات Mesh Renderer شما درست باشد.
هر چیزی را که استفاده نمی کنید خاموش کنید. تنظیماتی مانند Cast Shadows وقتی صحنه را رندر میکنید، حتی اگر شی روشن نباشد، هزینه اضافه میکند. مثال زیر از تنظیمات Mesh Renderer برای کاراکتری است که در شکل 13 نشان داده شده است. این کاراکتر از داده های پروب نور استفاده می کند، اما از پروب های بازتاب استفاده نمی کند.
تنظیم Blend Probes برای Light Probes اطلاعات نور را از نزدیکترین پروب نور به کاراکتر ترکیب می کند. همانطور که شخصیت در اطراف صحنه حرکت می کند، کاوشگرهای نوری که بر شخصیت تأثیر می گذارد تغییر می کند. Cast Shadows خاموش است زیرا رندر از روش blob استفاده می کند. Receive Shadows نیز خاموش است، زیرا صحنه پخته شده است و سایههای بیدرنگ وجود ندارد.
شکل 14. تنظیمات Mesh Renderer برای رندر شکل 13.
نورهای بیدرنگ و انواع نور
توصیه میکنیم نور خود را با نورپردازی پخته ، پروبهای نور ، و تکنیکهای نورپردازی تقلبی مانند بافتهای نوری رنگشده یا جلوههای مواد سایهزن کنترل کنید. با این حال، اگر به نور بلادرنگ نیاز دارید، باید نوع نور مورد استفاده را در نظر بگیرید.
هر نوع نور هزینه متفاوتی برای محاسبه روشنایی دارد. لیست زیر جزئیات هر نوع نور را نشان می دهد:
- جهت دار: این چراغ جهت یکنواخت و بدون ریزش دارد. نور جهت دار ارزان ترین نور بلادرنگ است. شما اغلب فقط به یک نور جهت در هر صحنه نیاز دارید. با رندر رو به جلو، مسیر رندر پیشنهادی برای موبایل، یونیتی یک نور جهتدار پیشفرض را در صورت عدم وجود نور جهتدار در صحنه، شامل میشود.
- نقطه: نورهای نقطه ای اجسام خارج از مخروط خود را از بین می برند و آنها را روشن نمی کنند. این باعث می شود نورهای نقطه ای از نظر محاسباتی کمتر از نورهای نقطه کروی هزینه داشته باشند. برای به دست آوردن بهترین عملکرد، عرض مخروط را محکم نگه دارید و فقط به اشیاء مورد نظر ضربه بزنید.
- نقطه: اینها نور را در همه جهات می تابانند. نور ریخته شده در هر جهت مفید است اما بسیار گران است. چراغ های نقطه ای در مناطق وسیعی گران هستند. علاوه بر این، محاسبه سایه می تواند گران ترین بخش نورپردازی باشد. اگر نور را در همه جهات بتابانید، سایههای بیشتر و محاسبات بیشتری وجود دارد.
نورپردازی یکی از مهمترین جنبه های بازی است. می تواند خلق و خو را تنظیم کند، بازیکن را هدایت کند، تهدیدها یا اهداف را شناسایی کند و موارد دیگر. نورپردازی می تواند جلوه های بصری یک بازی را بسازد یا آن را خراب کند. به عنوان مثال، نور خوب می تواند یک مدل بد را در بازی بهتر به نظر برساند، در حالی که نور بد می تواند یک مدل عالی را بدتر کند.
این راهنما اطلاعاتی را برای عملکرد بهتر نور در یک بازی موبایل ارائه می دهد. نحوه تصمیم گیری شما برای استفاده از نور بر عملکرد بازی موبایل شما تأثیر می گذارد. مهم است که از نورپردازی به طور موثر استفاده کنید تا مطمئن شوید که بازی شما تا حد امکان روان اجرا می شود.
بخشهایی از این مقاله بر اساس آثار ارائهشده و دارای حق چاپ توسط Arm Limited است.
رندر گزینه های خط لوله
خط لوله رندر Legacy Unity شامل مسیرهای رندر زیر است:
- ارائه به جلو
- سایه زنی معوق
ارائه به جلو
با رندر جلو، نورهای بلادرنگ بسیار گران هستند. اگر تعداد نورهای موجود در هر پیکسل را کاهش دهید، می توانید این هزینه را جبران کنید.
سایه زنی معوق
سایهزنی معوق نیاز به پشتیبانی GPU دارد. در سختافزار سازگار، سایهزنی معوق میتواند تعداد زیادی نور در زمان واقعی را با سطح بالایی از وفاداری نور ارائه کند. متأسفانه، سایهزنی معوق در پردازندههای گرافیکی موبایل عملکرد خوبی ندارد زیرا پهنای باند کمتری دارند.
هنگامی که عنوانی برای موبایل می سازید، مهم است که بازی شما تا حد امکان بر روی دستگاه های زیادی اجرا شود.
خط لوله رندر جهانی
یونیتی خط لوله رندر جهانی (URP) را توسعه داده است. ما به شدت توصیه می کنیم که از URP برای بازی های موبایل خود استفاده کنید.
حالت های نور
حالت های مختلف نور بر اساس نحوه حرکت نور یا استفاده از آن در یک صحنه استفاده می شود. انواع حالت نور ویژگی های عملکرد متفاوتی دارند. هنگام اجرای چراغ ها، موارد زیر را در نظر بگیرید:
- برای روشنایی استاتیک از پخته استفاده کنید. این برای اشیایی که نور خود را در طول زمان اجرا تغییر نمی دهند بهترین است. Baking lights فرآیند پیش محاسبه و ذخیره داده های روشنایی در نقشه های بافتی است که به آنها lightmaps می گویند.
- روشنایی پخته را نمی توان در زمان اجرا تغییر داد. نور و سایه ها در لایت مپ ها ثابت هستند. از آنجایی که تمام نورپردازی در Unity از قبل پردازش شده است، هیچ محاسباتی در زمان اجرا وجود ندارد که بر عملکرد تأثیر بگذارد.
- سایه های پویا را نمی توان با نور پخته ایجاد کرد. این ممکن است در مورد اجسام پویا یا متحرک عجیب به نظر برسد.
- برای نورهای ثابتی که قصد دارید با اجسام متحرک تعامل داشته باشید، از مخلوط استفاده کنید. به عنوان مثال، مشعلی که بر روی بازیکن نور می اندازد و در حین حرکت بازیکن سایه ایجاد می کند.
- نور ترکیبی نور و سایه مستقیم پویا ایجاد می کند.
- می توانید نور ترکیبی را در محاسبات نقشه نوری برای اجسام ساکن بگنجانید.
- می توانید شدت را در زمان اجرا تغییر دهید. فقط نور مستقیم به روز می شود.
- گران است.
- از زمان واقعی برای نورهای پویا یا متحرک استفاده کنید، مانند نوری که از یک گلوله آتشین که از زمین بلند می شود و منفجر می شود.
- ویژگی های نور و سایه پویا را می توان در زمان اجرا تغییر داد.
- نورهای بلادرنگ در نقشه های نوری پخته نمی شوند.
- خیلی گرونه
برای اطلاعات بیشتر، خط لوله روشنایی یونیتی را بخوانید.
در صورت امکان، از نور ساکن استفاده کنید و از نور دینامیک خودداری کنید
نورپردازی پویا یا بلادرنگ در هر فریم محاسبه و به روز می شود. این برای اجسام متحرک، تعامل و ایجاد احساسات عالی است.
در مقابل، اطلاعات نور استاتیک در نقشه های نوری پخته می شود. استفاده از بافت نوری به یک شی امکان می دهد از محاسبات گران قیمت نورپردازی در هر رأس یا هر پیکسل اجتناب کند. هزینه رندر یک بافت لایت مپ همیشه بسیار ارزان تر از نورپردازی پویا است. توصیه می کنیم که نورپردازی پخته اولین انتخاب شما برای پیاده سازی در یک بازی موبایل باشد.
پخت لایت مپ
پیش محاسبه اثرات نور به پخت نور نقشه معروف است. اثر نور در یک بافت جداگانه ذخیره می شود که به آن نقشه نوری می گویند. از لایت مپ می توان برای تقویت ظاهر اجسام استفاده کرد. پخت Lightmap فقط باید یک بار در هر تکرار صحنه شما انجام شود. اگر هندسه صحنه خود را تغییر دهید، یا پارامترهای چراغ های پخته شده را تغییر دهید، باید نقشه های نور را دوباره بسازید. به جز سربار بافت lightmap، هیچ هزینه عملکرد اضافی در زمان اجرا وجود ندارد. این بهترین رویکرد اولیه برای روشنایی در یک پلت فرم تلفن همراه است.
نور پخته تحت تأثیر هیچ یک از جنبه های پویا یا متحرک صحنه شما قرار نمی گیرد. روشنایی پخته شامل روشنایی جهانی پخته برای همه عناصر استاتیک می شود. این به این معنی است که محاسبات نقشه نوری شامل نور غیرمستقیم است که از سایر اجسام ثابت منعکس شده است و همچنین نورهای پخته شده ای که مستقیماً به جسم برخورد می کنند.
شکل 1. راه اندازی روشنایی تمام پخته شده مورد استفاده در دمو فناوری ارتش.
برای پخت چراغ های خود، سه مرحله زیر را انجام دهید.
مرحله 1: چراغ ها را روی Mixed یا Baked تنظیم کنید
حالت چراغ ها را روی مخلوط یا پخته تنظیم کنید. برای عناوین موبایل، بهتر است از Baked lights روی Mixed استفاده کنید. پخته شده کم هزینه ترین راه برای ارائه نور است.
شکل 2. تنظیم حالت نور در Unity.
مرحله 2. اشیاء را ثابت کنید
هر جسمی را که تحت تأثیر چراغ های پخته قرار می گیرد ثابت کنید. بهینه سازی های زیادی برای یک شی که به عنوان ثابت علامت گذاری شده است وجود دارد، اما معمولاً بهتر است همه چیز را در لیست کشویی Static انتخاب کنید. با علامت گذاری شده به عنوان Static ، Unity می داند که آن را در پخت سبک قرار دهد.
شکل 3. نمونه ای از منوی ثابت.
مرحله 3. پخت چراغ های خود را
می توانید با منوی Lighting که در Window > Rendering > Lighting Settings یافت می شود، چراغ های خود را بپزید.
وقتی چراغها را پخت میکنید، دادههای ذخیرهشده بر اساس هر صحنهای است که هنگام شروع پخت فعال بود. پوشه ای با همان نام صحنه پخته شده ایجاد می شود. این پوشه تمام اجزای مربوط به داده های روشنایی را ذخیره می کند. اگر پروژه شما چندین صحنه را در یک زمان بارگذاری می کند، باید چراغ های هر صحنه را بپزید. اگر صحنه خود را تنظیم کنید، باید چراغ ها را دوباره بپزید.
شکل 4. نمونه ای از نقشه های نوری پخته شده.
بهینه سازی نقشه های نوری
پس از تنظیم چراغ ها برای پخت، مطمئن شوید که نقشه های پخته شده بهینه شده اند. اندازه لایت مپ ها بر اساس تنظیماتشان در زمان پخت متفاوت است. شما باید مصرف حافظه را در موبایل پایین نگه دارید، بنابراین اندازه lightmap باید نظارت شود.
در مثال زیر از نسخه ی نمایشی Armies، هفت لایت مپ پیکسل 1024x1024 وجود دارد. در پیشنمایش نقشه، میتوانید مشهایی را که روی لایت مپ گذاشته شدهاند، مشاهده کنید. مش های انتخاب شده برجسته می شوند.
شکل 5. این نمونه ای از یک نقشه نوری است. بخش های آبی مش های انتخاب شده هستند.
تنظیمات زیادی در تنظیمات Lightmapping به همراه اندازه نقشه ها وجود دارد که تعیین می کند هر نقشه چه مقدار حافظه و فضای ذخیره سازی استفاده می کند. بخشهای زیر چند تنظیمات مهم را برجسته میکنند.
نورپردازان
یونیتی سه روش زیر را برای پختن چراغ ها در صحنه ارائه می دهد:
- Enlighten : فقط تا انتشار پشتیبانی بلند مدت (LTS) در سال 2020 پشتیبانی می شود. از این برای پروژه های جدید استفاده نکنید.
- CPU پیشرو : در زمان زیادی صرفه جویی می کند زیرا به صورت تدریجی نقشه های سبک ایجاد می کند. اگر نمایش اولویت انتخاب شده باشد، مناطق در نمای صحنه اولویت بندی می شوند. این می تواند زمان تکرار برای تنظیم نور صحنه شما را کاهش دهد.
- پردازشگر گرافیکی پیشرو : این پردازنده مانند پردازنده پیشرو عمل می کند، اما به جای پردازنده، نقشه نور را روی GPU ایجاد می کند. در سخت افزار پشتیبانی شده، این روش می تواند زمان پخت را در مقایسه با استفاده از CPU بسیار کاهش دهد. برای راه اندازی GPU Progressive نیازمندی های اضافی وجود دارد. در صفحه The Progressive GPU Lightmapper درباره الزامات بیشتر بدانید.
شکل 6. تنظیمات Lightmapper به شما امکان می دهد روش پخت را برای صحنه خود تغییر دهید.
تکلز
یک تکسل یا بافت پیکسل، یک پیکسل مجزا در یک نقشه بافت است. Texels اطلاعات نور را در یک نقشه نوری برای هر نقطه نوری که به یک جسم برخورد می کند ذخیره می کند. هرچه تعداد تکسل های بیشتری در واحد فضا استفاده شود، بر کیفیت نورپردازی، زمان محاسبه پخت، هزینه های ذخیره سازی دیسک و هزینه VRAM نقشه های نوری شما تأثیر می گذارد.
برای کاهش مقدار داده های مورد نیاز نقشه نور، تعداد تکل ها در هر واحد پخت را در تنظیمات Lightmapping تنظیم کنید.
شکل 7. تنظیمات موجود برای lightmaps.
در Lightmapping Settings ، پارامتر Lightmap Resolution کنترل می کند که چند تکل در هر واحد در lightmap استفاده می شود. در زیر نمونه ای از یک مکعب با تنظیمات مختلف Lightmap Resolution آورده شده است. می توانید ببینید که چگونه وضوح بالاتر میزان کار مورد نیاز را به سرعت افزایش می دهد.
شکل 8. اولین مکعب دارای وضوح نقشه نور 1
است. مکعب دوم دارای رزولوشن Lightmap 2
است. مکعب سوم دارای رزولوشن Lightmap 5
است.
برای مشاهده نحوه چیدمان تکل ها در صحنه، لیست کشویی حالت ترسیم را در نمای صحنه انتخاب کنید و Baked Lightmap را انتخاب کنید.
اشیای پخته شده با روکش شطرنجی پوشانده شده اند. الگوی شطرنجی نشان میدهد که وقتی چراغها را میپزید، تکسلهای شما چگونه توزیع میشوند.
در مثال زیر، کاهش رزولوشن Lightmap از 15
به 12
در دمو Armies، تعداد لایت مپ های مورد نیاز را از 7 به 4 کاهش می دهد.
شکل 9. نسخه ی نمایشی ارتش با وضوح نقشه 12
.
استفاده از Texel
در حالی که میتوانید تعداد تکسلها در هر واحد را در کل صحنه تنظیم کنید، اغلب برخی از اشیاء هستند که به تعداد زیادی تکسل نیاز ندارند.
Unity به شما این امکان را می دهد که کنترل کنید هر شی از چند تکل استفاده می کند. در Inspector > Mesh Renderer برای یک شی، مقدار پارامتر Scale In Lightmap تعداد تکسلهایی را که شی در لایت مپ استفاده میکند، کنترل میکند.
در مثال زیر، مکعب سمت چپ دارای پنج تکسل اطلاعات نور در هر واحد پخت است. در کادر سمت راست، Scale In Lightmap روی 0.5 تنظیم شده است. این تنظیم، تکسل های نور را به 2.5 کاهش می دهد، که نسبت به کادر سمت چپ، فضای کمتری در نقشه نوری نیاز دارد.
شکل 10. دو مکعب با وضوح های مختلف نقشه نور.
شکل 11. می توانید تنظیمات Scale In Lightmap را طوری تغییر دهید که یک شی تعداد تکسل های کمتری داشته باشد.
سعی کنید از صرف تکسل برای موارد زیر اجتناب کنید:
- سطوح و اشیایی که بازیکن نمی بیند. این از هدر رفتن حافظه در نقشه های نوری برای جزئیاتی که روی صفحه نیستند جلوگیری می کند.
- سطوحی که تغییرات نوری کمی روی آنها وجود دارد. به عنوان مثال، اشیاء در سایه یا لمس شده توسط یک منبع نور.
- اجسام کوچک یا نازک. میزان نوری که اینها دریافت می کنند، چیز زیادی به رندر نهایی صحنه اضافه نمی کند.
نورپردازی تقلبی تا حد امکان
برای کاهش نیازهای پردازش، می توانید برخی از عناصر را جعل کنید. این می تواند باعث شود که محتوای شما سبک به نظر برسد، اما در واقع از روش های کارآمدتری استفاده کنید.
سایه های جعلی
سایه های بلادرنگ گران هستند. آنها با تکنیکی به نام نقشه سایه تولید می شوند. هزینه ارائه هندسه صحنه به نقشه سایه متناسب با تعداد رئوس رسم شده با سایه های فعال است. توصیه می کنیم مقدار هندسه ای که سایه می اندازد و تعداد نورهای سایه افکن بلادرنگ را محدود کنید.
شما می توانید سایه های جعلی را برای سایه ها بر روی اشیاء پویا بدون نورهای پویا پیاده سازی کنید. این هزینه های رندرینگ را پایین نگه می دارد و می تواند اثری مشابه سایه های پویا داشته باشد. در زیر چند راه برای اجرای سایه های تقلبی وجود دارد:
- از یک مش سه بعدی مانند صفحه یا چهارتایی که در زیر کاراکتر قرار داده شده استفاده کنید و یک بافت تار روی آن اعمال کنید.
- شما می توانید سایه بان سفارشی خود را برای سایه های حباب پیچیده تر بنویسید.
اگر از مش سه بعدی برای سایه استفاده کنید، مثال زیر نتیجه را نشان می دهد:
شکل 12. اجرای سایه در نسخه ی نمایشی فناوری ارتش.
اطلاعات نور را مستقیماً روی بافت ها رنگ کنید
اگر مقداری از سایه را در بافت ها رنگ کنید، محاسبات لازم برای نورهای اضافی را کاهش می دهید. این باعث صرفهجویی در حافظه میشود، زیرا به دادههای نقشه نوری کمتری نیاز دارد.
پروب های نور
هنگامی که از اشیاء پویا با نورپردازی پخته استفاده می کنید، آنها تحت تأثیر نقشه های نوری قرار نخواهند گرفت. این ممکن است باعث شود آنها احساس کنند که بخشی از صحنه نیستند.
می توانید با Light Probes این مشکل را حل کنید. کاوشگرهای نور مزایای مشابهی با نقشه های نوری دارند. آنها داده های سبکی را ذخیره می کنند که می توانند قبل از زمان محاسبه شوند و برای استفاده در زمان اجرا ذخیره شوند. این امر بسیاری از هزینه های محاسباتی را به زمان ویرایش منتقل می کند.
در حالی که یک نقشه نوری نور دریافت شده در یک تکسل را برای سطوح رمزگذاری می کند، یک نور پروب نوری را که از فضای خالی عبور می کند ذخیره می کند. می توانید از این داده ها برای نور دادن به اجسامی که حرکت می کنند استفاده کنید. کاوشگرهای نوری به ادغام اشیاء پویا به صورت بصری با اشیاء دارای نقشه نوری در سراسر صحنه شما کمک می کنند.
کاوشگرهای نور بهتر است برای نور دادن به اجسامی که در صحنه شما حرکت می کنند استفاده شود. کاوشگرها از نورهای پخته شما استفاده می کنند، که به اشیاء متحرک شما اجازه می دهد نوری مشابه صحنه داشته باشند. نورپردازی اجسام دینامیک با نور پروب نسبت به نورهای بلادرنگ هزینه کمتری دارد.
میتوانید درباره صفحات نورپردازی استاتیک با پروبهای نور و پروبهای نور بیشتر بدانید.
شکل 13. کاوشگرهای نوری که برای روشن کردن جمعیت پویا در دمو فناوری ارتش ها قرار داده شده اند.
تنظیمات Mesh Renderer
صرف نظر از نوع نوری که Scene شما استفاده می کند، مهم است که تنظیمات Mesh Renderer شما درست باشد.
هر چیزی را که استفاده نمی کنید خاموش کنید. تنظیماتی مانند Cast Shadows وقتی صحنه را رندر میکنید، حتی اگر شی روشن نباشد، هزینه اضافه میکند. مثال زیر از تنظیمات Mesh Renderer برای کاراکتری است که در شکل 13 نشان داده شده است. این کاراکتر از داده های پروب نور استفاده می کند، اما از پروب های بازتاب استفاده نمی کند.
تنظیم Blend Probes برای Light Probes اطلاعات نور را از نزدیکترین پروب نور به کاراکتر ترکیب می کند. همانطور که شخصیت در اطراف صحنه حرکت می کند، کاوشگرهای نوری که بر شخصیت تأثیر می گذارد تغییر می کند. Cast Shadows خاموش است زیرا رندر از روش blob استفاده می کند. Receive Shadows نیز خاموش است، زیرا صحنه پخته شده است و سایههای بیدرنگ وجود ندارد.
شکل 14. تنظیمات Mesh Renderer برای رندر شکل 13.
نورهای بیدرنگ و انواع نور
توصیه میکنیم نور خود را با نورپردازی پخته ، پروبهای نور ، و تکنیکهای نورپردازی تقلبی مانند بافتهای نوری رنگشده یا جلوههای مواد سایهزن کنترل کنید. با این حال، اگر به نور بلادرنگ نیاز دارید، باید نوع نور مورد استفاده را در نظر بگیرید.
هر نوع نور هزینه متفاوتی برای محاسبه روشنایی دارد. لیست زیر جزئیات هر نوع نور را نشان می دهد:
- جهت دار: این چراغ جهت یکنواخت و بدون ریزش دارد. نور جهت دار ارزان ترین نور بلادرنگ است. شما اغلب فقط به یک نور جهت در هر صحنه نیاز دارید. با رندر رو به جلو، مسیر رندر پیشنهادی برای موبایل، یونیتی یک نور جهتدار پیشفرض را در صورت عدم وجود نور جهتدار در صحنه، شامل میشود.
- نقطه: نورهای نقطه ای اجسام خارج از مخروط خود را از بین می برند و آنها را روشن نمی کنند. این باعث می شود نورهای نقطه ای از نظر محاسباتی کمتر از نورهای نقطه کروی هزینه داشته باشند. برای به دست آوردن بهترین عملکرد، عرض مخروط را محکم نگه دارید و فقط به اشیاء مورد نظر ضربه بزنید.
- نقطه: اینها نور را در همه جهات می تابانند. نور ریخته شده در هر جهت مفید است اما بسیار گران است. چراغ های نقطه ای در مناطق وسیعی گران هستند. علاوه بر این، محاسبه سایه می تواند گران ترین بخش نورپردازی باشد. اگر نور را در همه جهات بتابانید، سایههای بیشتر و محاسبات بیشتری وجود دارد.
نورپردازی یکی از مهمترین جنبه های بازی است. می تواند خلق و خو را تنظیم کند، بازیکن را هدایت کند، تهدیدها یا اهداف را شناسایی کند و موارد دیگر. نورپردازی می تواند جلوه های بصری یک بازی را بسازد یا آن را خراب کند. به عنوان مثال، نور خوب می تواند یک مدل بد را در بازی بهتر به نظر برساند، در حالی که نور بد می تواند یک مدل عالی را بدتر کند.
این راهنما اطلاعاتی را برای عملکرد بهتر نور در یک بازی موبایل ارائه می دهد. نحوه تصمیم گیری شما برای استفاده از نور بر عملکرد بازی موبایل شما تأثیر می گذارد. مهم است که از نورپردازی به طور موثر استفاده کنید تا مطمئن شوید که بازی شما تا حد امکان روان اجرا می شود.
بخشهایی از این مقاله بر اساس آثار ارائهشده و دارای حق چاپ توسط Arm Limited است.
رندر گزینه های خط لوله
خط لوله رندر Legacy Unity شامل مسیرهای رندر زیر است:
- ارائه به جلو
- سایه زنی معوق
ارائه به جلو
با رندر جلو، نورهای بلادرنگ بسیار گران هستند. اگر تعداد نورهای موجود در هر پیکسل را کاهش دهید، می توانید این هزینه را جبران کنید.
سایه زنی معوق
سایهزنی معوق نیاز به پشتیبانی GPU دارد. در سختافزار سازگار، سایهزنی معوق میتواند تعداد زیادی نور در زمان واقعی را با سطح بالایی از وفاداری نور ارائه کند. متأسفانه، سایهزنی معوق در پردازندههای گرافیکی موبایل عملکرد خوبی ندارد زیرا پهنای باند کمتری دارند.
هنگامی که عنوانی برای موبایل می سازید، مهم است که بازی شما تا حد امکان بر روی دستگاه های زیادی اجرا شود.
خط لوله رندر جهانی
یونیتی خط لوله رندر جهانی (URP) را توسعه داده است. ما به شدت توصیه می کنیم که از URP برای بازی های موبایل خود استفاده کنید.
حالت های نور
حالت های مختلف نور بر اساس نحوه حرکت نور یا استفاده از آن در یک صحنه استفاده می شود. انواع حالت نور ویژگی های عملکرد متفاوتی دارند. هنگام اجرای چراغ ها، موارد زیر را در نظر بگیرید:
- برای روشنایی استاتیک از پخته استفاده کنید. این برای اشیایی که نور خود را در طول زمان اجرا تغییر نمی دهند بهترین است. Baking lights فرآیند پیش محاسبه و ذخیره داده های روشنایی در نقشه های بافتی است که به آنها lightmaps می گویند.
- روشنایی پخته را نمی توان در زمان اجرا تغییر داد. نور و سایه ها در لایت مپ ها ثابت هستند. از آنجایی که تمام نورپردازی در Unity از قبل پردازش شده است، هیچ محاسباتی در زمان اجرا وجود ندارد که بر عملکرد تأثیر بگذارد.
- سایه های پویا را نمی توان با نور پخته ایجاد کرد. این ممکن است در مورد اجسام پویا یا متحرک عجیب به نظر برسد.
- برای نورهای ثابتی که قصد دارید با اجسام متحرک تعامل داشته باشید، از مخلوط استفاده کنید. به عنوان مثال، مشعلی که بر روی بازیکن نور می اندازد و در حین حرکت بازیکن سایه ایجاد می کند.
- نور ترکیبی نور و سایه مستقیم پویا ایجاد می کند.
- می توانید نور ترکیبی را در محاسبات نقشه نوری برای اجسام ساکن بگنجانید.
- می توانید شدت را در زمان اجرا تغییر دهید. فقط نور مستقیم به روز می شود.
- گران است.
- از زمان واقعی برای نورهای پویا یا متحرک استفاده کنید، مانند نوری که از یک گلوله آتشین که از زمین بلند می شود و منفجر می شود.
- ویژگی های نور و سایه پویا را می توان در زمان اجرا تغییر داد.
- نورهای بلادرنگ در نقشه های نوری پخته نمی شوند.
- خیلی گرونه
برای اطلاعات بیشتر، خط لوله روشنایی یونیتی را بخوانید.
در صورت امکان، از نور ساکن استفاده کنید و از نور دینامیک خودداری کنید
نورپردازی پویا یا بلادرنگ در هر فریم محاسبه و به روز می شود. این برای اجسام متحرک، تعامل و ایجاد احساسات عالی است.
در مقابل، اطلاعات نور استاتیک در نقشه های نوری پخته می شود. استفاده از بافت نوری به یک شی امکان می دهد از محاسبات گران قیمت نورپردازی در هر رأس یا هر پیکسل اجتناب کند. هزینه رندر یک بافت لایت مپ همیشه بسیار ارزان تر از نورپردازی پویا است. توصیه می کنیم که نورپردازی پخته اولین انتخاب شما برای پیاده سازی در یک بازی موبایل باشد.
پخت لایت مپ
پیش محاسبه اثرات نور به پخت نور نقشه معروف است. اثر نور در یک بافت جداگانه ذخیره می شود که به آن نقشه نوری می گویند. از لایت مپ می توان برای تقویت ظاهر اجسام استفاده کرد. پخت Lightmap فقط باید یک بار در هر تکرار صحنه شما انجام شود. اگر هندسه صحنه خود را تغییر دهید، یا پارامترهای چراغ های پخته شده را تغییر دهید، باید نقشه های نور را دوباره بسازید. به جز سربار بافت lightmap، هیچ هزینه عملکرد اضافی در زمان اجرا وجود ندارد. این بهترین رویکرد اولیه برای روشنایی در یک پلت فرم تلفن همراه است.
نور پخته تحت تأثیر هیچ یک از جنبه های پویا یا متحرک صحنه شما قرار نمی گیرد. روشنایی پخته شامل روشنایی جهانی پخته برای همه عناصر استاتیک می شود. این به این معنی است که محاسبات نقشه نوری شامل نور غیرمستقیم است که از سایر اجسام ثابت منعکس شده است و همچنین نورهای پخته شده ای که مستقیماً به جسم برخورد می کنند.
شکل 1. راه اندازی روشنایی تمام پخته شده مورد استفاده در دمو فناوری ارتش.
برای پخت چراغ های خود، سه مرحله زیر را انجام دهید.
مرحله 1: چراغ ها را روی Mixed یا Baked تنظیم کنید
حالت چراغ ها را روی مخلوط یا پخته تنظیم کنید. برای عناوین موبایل، بهتر است از Baked lights روی Mixed استفاده کنید. پخته شده کم هزینه ترین راه برای ارائه نور است.
شکل 2. تنظیم حالت نور در Unity.
مرحله 2. اشیاء را ثابت کنید
هر جسمی را که تحت تأثیر چراغ های پخته قرار می گیرد ثابت کنید. بهینه سازی های زیادی برای یک شی که به عنوان ثابت علامت گذاری شده است وجود دارد، اما معمولاً بهتر است همه چیز را در لیست کشویی Static انتخاب کنید. با علامت گذاری شده به عنوان Static ، Unity می داند که آن را در پخت سبک قرار دهد.
شکل 3. نمونه ای از منوی ثابت.
مرحله 3. پخت چراغ های خود را
می توانید با منوی Lighting که در Window > Rendering > Lighting Settings یافت می شود، چراغ های خود را بپزید.
وقتی چراغها را پخت میکنید، دادههای ذخیرهشده بر اساس هر صحنهای است که هنگام شروع پخت فعال بود. پوشه ای با همان نام صحنه پخته شده ایجاد می شود. این پوشه تمام اجزای مربوط به داده های روشنایی را ذخیره می کند. اگر پروژه شما چندین صحنه را در یک زمان بارگذاری می کند، باید چراغ های هر صحنه را بپزید. اگر صحنه خود را تنظیم کنید، باید چراغ ها را دوباره بپزید.
شکل 4. نمونه ای از نقشه های نوری پخته شده.
بهینه سازی نقشه های نوری
پس از تنظیم چراغ ها برای پخت، مطمئن شوید که نقشه های پخته شده بهینه شده اند. اندازه لایت مپ ها بر اساس تنظیماتشان در زمان پخت متفاوت است. شما باید مصرف حافظه را در موبایل پایین نگه دارید، بنابراین اندازه lightmap باید نظارت شود.
در مثال زیر از نسخه ی نمایشی Armies، هفت لایت مپ پیکسل 1024x1024 وجود دارد. در پیشنمایش نقشه، میتوانید مشهایی را که روی لایت مپ گذاشته شدهاند، مشاهده کنید. مش های انتخاب شده برجسته می شوند.
شکل 5. این نمونه ای از یک نقشه نوری است. بخش های آبی مش های انتخاب شده هستند.
تنظیمات زیادی در تنظیمات Lightmapping به همراه اندازه نقشه ها وجود دارد که تعیین می کند هر نقشه چه مقدار حافظه و فضای ذخیره سازی استفاده می کند. بخشهای زیر چند تنظیمات مهم را برجسته میکنند.
نورپردازان
یونیتی سه روش زیر را برای پختن چراغ ها در صحنه ارائه می دهد:
- Enlighten : فقط تا انتشار پشتیبانی بلند مدت (LTS) در سال 2020 پشتیبانی می شود. از این برای پروژه های جدید استفاده نکنید.
- CPU پیشرو : در زمان زیادی صرفه جویی می کند زیرا به صورت تدریجی نقشه های سبک ایجاد می کند. اگر نمایش اولویت انتخاب شده باشد، مناطق در نمای صحنه اولویت بندی می شوند. این می تواند زمان تکرار برای تنظیم نور صحنه شما را کاهش دهد.
- پردازشگر گرافیکی پیشرو : این پردازنده مانند پردازنده پیشرو عمل می کند، اما به جای پردازنده، نقشه نور را روی GPU ایجاد می کند. در سخت افزار پشتیبانی شده، این روش می تواند زمان پخت را در مقایسه با استفاده از CPU بسیار کاهش دهد. برای راه اندازی GPU Progressive نیازمندی های اضافی وجود دارد. در صفحه The Progressive GPU Lightmapper درباره الزامات بیشتر بدانید.
شکل 6. تنظیمات Lightmapper به شما امکان می دهد روش پخت را برای صحنه خود تغییر دهید.
تکلز
یک تکسل یا بافت پیکسل، یک پیکسل مجزا در یک نقشه بافت است. Texels اطلاعات نور را در یک نقشه نوری برای هر نقطه نوری که به یک جسم برخورد می کند ذخیره می کند. هرچه تعداد تکسل های بیشتری در واحد فضا استفاده شود، بر کیفیت نورپردازی، زمان محاسبه پخت، هزینه های ذخیره سازی دیسک و هزینه VRAM نقشه های نوری شما تأثیر می گذارد.
برای کاهش مقدار داده های مورد نیاز نقشه نور، تعداد تکل ها در هر واحد پخت را در تنظیمات Lightmapping تنظیم کنید.
شکل 7. تنظیمات موجود برای lightmaps.
در Lightmapping Settings ، پارامتر Lightmap Resolution کنترل می کند که چند تکل در هر واحد در lightmap استفاده می شود. در زیر نمونه ای از یک مکعب با تنظیمات مختلف Lightmap Resolution آورده شده است. می توانید ببینید که چگونه وضوح بالاتر میزان کار مورد نیاز را به سرعت افزایش می دهد.
شکل 8. اولین مکعب دارای وضوح نقشه نور 1
است. مکعب دوم دارای رزولوشن Lightmap 2
است. مکعب سوم دارای رزولوشن Lightmap 5
است.
برای مشاهده نحوه چیدمان تکل ها در صحنه، لیست کشویی حالت ترسیم را در نمای صحنه انتخاب کنید و Baked Lightmap را انتخاب کنید.
اشیای پخته شده با روکش شطرنجی پوشانده شده اند. الگوی شطرنجی نشان میدهد که وقتی چراغها را میپزید، تکسلهای شما چگونه توزیع میشوند.
در مثال زیر، کاهش رزولوشن Lightmap از 15
به 12
در دمو Armies، تعداد لایت مپ های مورد نیاز را از 7 به 4 کاهش می دهد.
شکل 9. نسخه ی نمایشی ارتش با وضوح نقشه 12
.
استفاده از Texel
در حالی که میتوانید تعداد تکسلها در هر واحد را در کل صحنه تنظیم کنید، اغلب برخی از اشیاء هستند که به تعداد زیادی تکسل نیاز ندارند.
Unity به شما این امکان را می دهد که کنترل کنید هر شی از چند تکل استفاده می کند. در Inspector > Mesh Renderer برای یک شی، مقدار پارامتر Scale In Lightmap تعداد تکسلهایی را که شی در لایت مپ استفاده میکند، کنترل میکند.
در مثال زیر، مکعب سمت چپ دارای پنج تکسل اطلاعات نور در هر واحد پخت است. در کادر سمت راست، Scale In Lightmap روی 0.5 تنظیم شده است. این تنظیم، تکسل های نور را به 2.5 کاهش می دهد، که نسبت به کادر سمت چپ، فضای کمتری در نقشه نوری نیاز دارد.
شکل 10. دو مکعب با وضوح های مختلف نقشه نور.
شکل 11. می توانید تنظیمات Scale In Lightmap را طوری تغییر دهید که یک شی تعداد تکسل های کمتری داشته باشد.
سعی کنید از صرف تکسل برای موارد زیر اجتناب کنید:
- سطوح و اشیایی که بازیکن نمی بیند. این از هدر رفتن حافظه در نقشه های نوری برای جزئیاتی که روی صفحه نیستند جلوگیری می کند.
- سطوحی که تغییرات نوری کمی روی آنها وجود دارد. به عنوان مثال، اشیاء در سایه یا لمس شده توسط یک منبع نور.
- اجسام کوچک یا نازک. میزان نوری که اینها دریافت می کنند، چیز زیادی به رندر نهایی صحنه اضافه نمی کند.
نورپردازی تقلبی تا حد امکان
برای کاهش نیازهای پردازش، می توانید برخی از عناصر را جعل کنید. این می تواند باعث شود که محتوای شما سبک به نظر برسد، اما در واقع از روش های کارآمدتری استفاده کنید.
سایه های جعلی
سایه های بلادرنگ گران هستند. آنها با تکنیکی به نام نقشه سایه تولید می شوند. هزینه ارائه هندسه صحنه به نقشه سایه متناسب با تعداد رئوس رسم شده با سایه های فعال است. توصیه می کنیم مقدار هندسه ای که سایه می اندازد و تعداد نورهای سایه افکن بلادرنگ را محدود کنید.
شما می توانید سایه های جعلی را برای سایه ها بر روی اشیاء پویا بدون نورهای پویا پیاده سازی کنید. این هزینه های رندرینگ را پایین نگه می دارد و می تواند اثری مشابه سایه های پویا داشته باشد. در زیر چند راه برای اجرای سایه های تقلبی وجود دارد:
- از یک مش سه بعدی مانند صفحه یا چهارتایی که در زیر کاراکتر قرار داده شده استفاده کنید و یک بافت تار روی آن اعمال کنید.
- شما می توانید سایه بان سفارشی خود را برای سایه های حباب پیچیده تر بنویسید.
اگر از مش سه بعدی برای سایه استفاده کنید، مثال زیر نتیجه را نشان می دهد:
شکل 12. اجرای سایه در نسخه ی نمایشی فناوری ارتش.
اطلاعات نور را مستقیماً روی بافت ها رنگ کنید
اگر مقداری از سایه را در بافت ها رنگ کنید، محاسبات لازم برای نورهای اضافی را کاهش می دهید. این باعث صرفهجویی در حافظه میشود، زیرا به دادههای نقشه نوری کمتری نیاز دارد.
پروب های نور
هنگامی که از اشیاء پویا با نورپردازی پخته استفاده می کنید، آنها تحت تأثیر نقشه های نوری قرار نخواهند گرفت. این ممکن است باعث شود آنها احساس کنند که بخشی از صحنه نیستند.
می توانید با Light Probes این مشکل را حل کنید. کاوشگرهای نور مزایای مشابهی با نقشه های نوری دارند. آنها داده های سبکی را ذخیره می کنند که می توانند قبل از زمان محاسبه شوند و برای استفاده در زمان اجرا ذخیره شوند. این امر بسیاری از هزینه های محاسباتی را به زمان ویرایش منتقل می کند.
در حالی که یک نقشه نوری نور دریافت شده در یک تکسل را برای سطوح رمزگذاری می کند، یک نور پروب نوری را که از فضای خالی عبور می کند ذخیره می کند. می توانید از این داده ها برای نور دادن به اجسامی که حرکت می کنند استفاده کنید. کاوشگرهای نوری به ادغام اشیاء پویا به صورت بصری با اشیاء دارای نقشه نوری در سراسر صحنه شما کمک می کنند.
کاوشگرهای نور بهتر است برای نور دادن به اجسامی که در صحنه شما حرکت می کنند استفاده شود. کاوشگرها از نورهای پخته شما استفاده می کنند، که به اشیاء متحرک شما اجازه می دهد نوری مشابه صحنه داشته باشند. نورپردازی اجسام دینامیک با نور پروب نسبت به نورهای بلادرنگ هزینه کمتری دارد.
میتوانید درباره صفحات نورپردازی استاتیک با پروبهای نور و پروبهای نور بیشتر بدانید.
شکل 13. کاوشگرهای نوری که برای روشن کردن جمعیت پویا در دمو فناوری ارتش ها قرار داده شده اند.
تنظیمات Mesh Renderer
صرف نظر از نوع نوری که Scene شما استفاده می کند، مهم است که تنظیمات Mesh Renderer شما درست باشد.
هر چیزی را که استفاده نمی کنید خاموش کنید. تنظیماتی مانند Cast Shadows وقتی صحنه را رندر میکنید، حتی اگر شی روشن نباشد، هزینه اضافه میکند. مثال زیر از تنظیمات Mesh Renderer برای کاراکتری است که در شکل 13 نشان داده شده است. این کاراکتر از داده های پروب نور استفاده می کند، اما از پروب های بازتاب استفاده نمی کند.
تنظیم Blend Probes برای Light Probes اطلاعات نور را از نزدیکترین پروب نور به کاراکتر ترکیب می کند. همانطور که شخصیت در اطراف صحنه حرکت می کند، کاوشگرهای نوری که بر شخصیت تأثیر می گذارد تغییر می کند. Cast Shadows خاموش است زیرا رندر از روش blob استفاده می کند. Receive Shadows نیز خاموش است، زیرا صحنه پخته شده است و سایههای بیدرنگ وجود ندارد.
شکل 14. تنظیمات Mesh Renderer برای رندر شکل 13.
نورهای بیدرنگ و انواع نور
توصیه میکنیم نور خود را با نورپردازی پخته ، پروبهای نور ، و تکنیکهای نورپردازی تقلبی مانند بافتهای نوری رنگشده یا جلوههای مواد سایهزن کنترل کنید. با این حال، اگر به نور بلادرنگ نیاز دارید، باید نوع نور مورد استفاده را در نظر بگیرید.
هر نوع نور هزینه متفاوتی برای محاسبه روشنایی دارد. لیست زیر جزئیات هر نوع نور را نشان می دهد:
- جهت دار: این چراغ جهت یکنواخت و بدون ریزش دارد. نور جهت دار ارزان ترین نور بلادرنگ است. شما اغلب فقط به یک نور جهت در هر صحنه نیاز دارید. با رندر رو به جلو، مسیر رندر پیشنهادی برای موبایل، یونیتی یک نور جهتدار پیشفرض را در صورت عدم وجود نور جهتدار در صحنه، شامل میشود.
- نقطه: نورهای نقطه ای اجسام خارج از مخروط خود را از بین می برند و آنها را روشن نمی کنند. این باعث می شود نورهای نقطه ای از نظر محاسباتی کمتر از نورهای نقطه کروی هزینه داشته باشند. برای به دست آوردن بهترین عملکرد، عرض مخروط را محکم نگه دارید و فقط به اشیاء مورد نظر ضربه بزنید.
- نقطه: اینها نور را در همه جهات می تابانند. نور ریخته شده در هر جهت مفید است اما بسیار گران است. چراغ های نقطه ای در مناطق وسیعی گران هستند. علاوه بر این، محاسبه سایه می تواند گران ترین بخش نورپردازی باشد. اگر نور را در همه جهات بتابانید، سایههای بیشتر و محاسبات بیشتری وجود دارد.
نورپردازی یکی از مهمترین جنبه های بازی است. می تواند خلق و خو را تنظیم کند، بازیکن را هدایت کند، تهدیدها یا اهداف را شناسایی کند و موارد دیگر. نورپردازی می تواند جلوه های بصری یک بازی را بسازد یا آن را خراب کند. به عنوان مثال، نور خوب می تواند یک مدل بد را در بازی بهتر به نظر برساند، در حالی که نور بد می تواند یک مدل عالی را بدتر کند.
این راهنما اطلاعاتی را برای عملکرد بهتر نور در یک بازی موبایل ارائه می دهد. نحوه تصمیم گیری شما برای استفاده از نور بر عملکرد بازی موبایل شما تأثیر می گذارد. مهم است که از نورپردازی به طور موثر استفاده کنید تا مطمئن شوید که بازی شما تا حد امکان روان اجرا می شود.
بخشهایی از این مقاله بر اساس آثار ارائهشده و دارای حق چاپ توسط Arm Limited است.
رندر گزینه های خط لوله
خط لوله رندر Legacy Unity شامل مسیرهای رندر زیر است:
- ارائه به جلو
- سایه زنی معوق
ارائه به جلو
با رندر جلو، نورهای بلادرنگ بسیار گران هستند. اگر تعداد نورهای موجود در هر پیکسل را کاهش دهید، می توانید این هزینه را جبران کنید.
سایه زنی معوق
سایهزنی معوق نیاز به پشتیبانی GPU دارد. در سختافزار سازگار، سایهزنی معوق میتواند تعداد زیادی نور در زمان واقعی را با سطح بالایی از وفاداری نور ارائه کند. متأسفانه، سایهزنی معوق در پردازندههای گرافیکی موبایل عملکرد خوبی ندارد زیرا پهنای باند کمتری دارند.
هنگامی که عنوانی برای موبایل می سازید، مهم است که بازی شما تا حد امکان بر روی دستگاه های زیادی اجرا شود.
خط لوله رندر جهانی
یونیتی خط لوله رندر جهانی (URP) را توسعه داده است. ما به شدت توصیه می کنیم که از URP برای بازی های موبایل خود استفاده کنید.
حالت های نور
حالت های مختلف نور بر اساس نحوه حرکت نور یا استفاده از آن در یک صحنه استفاده می شود. انواع حالت نور ویژگی های عملکرد متفاوتی دارند. هنگام اجرای چراغ ها، موارد زیر را در نظر بگیرید:
- برای روشنایی استاتیک از پخته استفاده کنید. این برای اشیایی که نور خود را در طول زمان اجرا تغییر نمی دهند بهترین است. Baking lights فرآیند پیش محاسبه و ذخیره داده های روشنایی در نقشه های بافتی است که به آنها lightmaps می گویند.
- روشنایی پخته را نمی توان در زمان اجرا تغییر داد. نور و سایه ها در لایت مپ ها ثابت هستند. از آنجایی که تمام نورپردازی در Unity از قبل پردازش شده است، هیچ محاسباتی در زمان اجرا وجود ندارد که بر عملکرد تأثیر بگذارد.
- سایه های پویا را نمی توان با نور پخته ایجاد کرد. این ممکن است در مورد اجسام پویا یا متحرک عجیب به نظر برسد.
- برای نورهای ثابتی که قصد دارید با اجسام متحرک تعامل داشته باشید، از مخلوط استفاده کنید. به عنوان مثال، مشعلی که بر روی بازیکن نور می اندازد و در حین حرکت بازیکن سایه ایجاد می کند.
- نور ترکیبی نور و سایه مستقیم پویا ایجاد می کند.
- می توانید نور ترکیبی را در محاسبات نقشه نوری برای اجسام ساکن بگنجانید.
- می توانید شدت را در زمان اجرا تغییر دهید. فقط نور مستقیم به روز می شود.
- گران است.
- از زمان واقعی برای نورهای پویا یا متحرک استفاده کنید، مانند نوری که از یک گلوله آتشین که از زمین بلند می شود و منفجر می شود.
- ویژگی های نور و سایه پویا را می توان در زمان اجرا تغییر داد.
- نورهای بلادرنگ در نقشه های نوری پخته نمی شوند.
- خیلی گرونه
برای اطلاعات بیشتر، خط لوله روشنایی یونیتی را بخوانید.
در صورت امکان، از نور ساکن استفاده کنید و از نور دینامیک خودداری کنید
نورپردازی پویا یا بلادرنگ در هر فریم محاسبه و به روز می شود. این برای اجسام متحرک، تعامل و ایجاد احساسات عالی است.
در مقابل، اطلاعات نور استاتیک در نقشه های نوری پخته می شود. استفاده از بافت نوری به یک شی امکان می دهد از محاسبات گران قیمت نورپردازی در هر رأس یا هر پیکسل اجتناب کند. هزینه رندر یک بافت لایت مپ همیشه بسیار ارزان تر از نورپردازی پویا است. توصیه می کنیم که نورپردازی پخته اولین انتخاب شما برای پیاده سازی در یک بازی موبایل باشد.
پخت لایت مپ
پیش محاسبه اثرات نور به پخت نور نقشه معروف است. اثر نور در یک بافت جداگانه ذخیره می شود که به آن نقشه نوری می گویند. از لایت مپ می توان برای تقویت ظاهر اجسام استفاده کرد. پخت Lightmap فقط باید یک بار در هر تکرار صحنه شما انجام شود. اگر هندسه صحنه خود را تغییر دهید، یا پارامترهای چراغ های پخته شده را تغییر دهید، باید نقشه های نور را دوباره بسازید. به جز سربار بافت lightmap، هیچ هزینه عملکرد اضافی در زمان اجرا وجود ندارد. این بهترین رویکرد اولیه برای روشنایی در یک پلت فرم تلفن همراه است.
نور پخته تحت تأثیر هیچ یک از جنبه های پویا یا متحرک صحنه شما قرار نمی گیرد. روشنایی پخته شامل روشنایی جهانی پخته برای همه عناصر استاتیک می شود. این به این معنی است که محاسبات نقشه نوری شامل نور غیرمستقیم است که از سایر اجسام ثابت منعکس شده است و همچنین نورهای پخته شده ای که مستقیماً به جسم برخورد می کنند.
شکل 1. راه اندازی روشنایی تمام پخته شده مورد استفاده در دمو فناوری ارتش.
برای پخت چراغ های خود، سه مرحله زیر را انجام دهید.
مرحله 1: چراغ ها را روی Mixed یا Baked تنظیم کنید
حالت چراغ ها را روی مخلوط یا پخته تنظیم کنید. برای عناوین موبایل، بهتر است از Baked lights روی Mixed استفاده کنید. پخته شده کم هزینه ترین راه برای ارائه نور است.
شکل 2. تنظیم حالت نور در Unity.
مرحله 2. اشیاء را ثابت کنید
هر جسمی را که تحت تأثیر چراغ های پخته قرار می گیرد ثابت کنید. بهینه سازی های زیادی برای یک شی که به عنوان ثابت علامت گذاری شده است وجود دارد، اما معمولاً بهتر است همه چیز را در لیست کشویی Static انتخاب کنید. با علامت گذاری شده به عنوان Static ، Unity می داند که آن را در پخت سبک قرار دهد.
شکل 3. نمونه ای از منوی ثابت.
مرحله 3. پخت چراغ های خود را
می توانید با منوی Lighting که در Window > Rendering > Lighting Settings یافت می شود، چراغ های خود را بپزید.
وقتی چراغها را پخت میکنید، دادههای ذخیرهشده بر اساس هر صحنهای است که هنگام شروع پخت فعال بود. پوشه ای با همان نام صحنه پخته شده ایجاد می شود. این پوشه تمام اجزای مربوط به داده های روشنایی را ذخیره می کند. اگر پروژه شما چندین صحنه را در یک زمان بارگذاری می کند، باید چراغ های هر صحنه را بپزید. اگر صحنه خود را تنظیم کنید، باید چراغ ها را دوباره بپزید.
شکل 4. نمونه ای از نقشه های نوری پخته شده.
بهینه سازی نقشه های نوری
پس از تنظیم چراغ ها برای پخت، مطمئن شوید که نقشه های پخته شده بهینه شده اند. اندازه لایت مپ ها بر اساس تنظیماتشان در زمان پخت متفاوت است. شما باید مصرف حافظه را در موبایل پایین نگه دارید، بنابراین اندازه lightmap باید نظارت شود.
در مثال زیر از نسخه ی نمایشی Armies، هفت لایت مپ پیکسل 1024x1024 وجود دارد. در پیشنمایش نقشه، میتوانید مشهایی را که روی لایت مپ گذاشته شدهاند، مشاهده کنید. مش های انتخاب شده برجسته می شوند.
شکل 5. این نمونه ای از یک نقشه نوری است. بخش های آبی مش های انتخاب شده هستند.
تنظیمات زیادی در تنظیمات Lightmapping به همراه اندازه نقشه ها وجود دارد که تعیین می کند هر نقشه چه مقدار حافظه و فضای ذخیره سازی استفاده می کند. بخشهای زیر چند تنظیمات مهم را برجسته میکنند.
نورپردازان
یونیتی سه روش زیر را برای پختن چراغ ها در صحنه ارائه می دهد:
- Enlighten : فقط تا انتشار پشتیبانی بلند مدت (LTS) در سال 2020 پشتیبانی می شود. از این برای پروژه های جدید استفاده نکنید.
- CPU پیشرو : در زمان زیادی صرفه جویی می کند زیرا به صورت تدریجی نقشه های سبک ایجاد می کند. اگر نمایش اولویت انتخاب شده باشد، مناطق در نمای صحنه اولویت بندی می شوند. این می تواند زمان تکرار برای تنظیم نور صحنه شما را کاهش دهد.
- پردازشگر گرافیکی پیشرو : این پردازنده مانند پردازنده پیشرو عمل می کند، اما به جای پردازنده، نقشه نور را روی GPU ایجاد می کند. در سخت افزار پشتیبانی شده، این روش می تواند زمان پخت را در مقایسه با استفاده از CPU بسیار کاهش دهد. برای راه اندازی GPU Progressive نیازمندی های اضافی وجود دارد. در صفحه The Progressive GPU Lightmapper درباره الزامات بیشتر بدانید.
شکل 6. تنظیمات Lightmapper به شما امکان می دهد روش پخت را برای صحنه خود تغییر دهید.
تکلز
یک تکسل یا بافت پیکسل، یک پیکسل مجزا در یک نقشه بافت است. Texels اطلاعات نور را در یک نقشه نوری برای هر نقطه نوری که به یک جسم برخورد می کند ذخیره می کند. هرچه تعداد تکسل های بیشتری در واحد فضا استفاده شود، بر کیفیت نورپردازی، زمان محاسبه پخت، هزینه های ذخیره سازی دیسک و هزینه VRAM نقشه های نوری شما تأثیر می گذارد.
برای کاهش مقدار داده های مورد نیاز نقشه نور، تعداد تکل ها در هر واحد پخت را در تنظیمات Lightmapping تنظیم کنید.
شکل 7. تنظیمات موجود برای lightmaps.
در Lightmapping Settings ، پارامتر Lightmap Resolution کنترل می کند که چند تکل در هر واحد در lightmap استفاده می شود. در زیر نمونه ای از یک مکعب با تنظیمات مختلف Lightmap Resolution آورده شده است. می توانید ببینید که چگونه وضوح بالاتر میزان کار مورد نیاز را به سرعت افزایش می دهد.
شکل 8. اولین مکعب دارای وضوح نقشه نور 1
است. مکعب دوم دارای رزولوشن Lightmap 2
است. مکعب سوم دارای رزولوشن Lightmap 5
است.
برای مشاهده نحوه چیدمان تکل ها در صحنه، لیست کشویی حالت ترسیم را در نمای صحنه انتخاب کنید و Baked Lightmap را انتخاب کنید.
اشیای پخته شده با روکش شطرنجی پوشانده شده اند. الگوی شطرنجی نشان میدهد که وقتی چراغها را میپزید، تکسلهای شما چگونه توزیع میشوند.
در مثال زیر، کاهش رزولوشن Lightmap از 15
به 12
در دمو Armies، تعداد لایت مپ های مورد نیاز را از 7 به 4 کاهش می دهد.
شکل 9. نسخه ی نمایشی ارتش با وضوح نقشه 12
.
استفاده از Texel
در حالی که میتوانید تعداد تکسلها در هر واحد را در کل صحنه تنظیم کنید، اغلب برخی از اشیاء هستند که به تعداد زیادی تکسل نیاز ندارند.
Unity به شما این امکان را می دهد که کنترل کنید هر شی از چند تکل استفاده می کند. در Inspector > Mesh Renderer برای یک شی، مقدار پارامتر Scale In Lightmap تعداد تکسلهایی را که شی در لایت مپ استفاده میکند، کنترل میکند.
در مثال زیر، مکعب سمت چپ دارای پنج تکسل اطلاعات نور در هر واحد پخت است. در کادر سمت راست، Scale In Lightmap روی 0.5 تنظیم شده است. این تنظیم، تکسل های نور را به 2.5 کاهش می دهد، که نسبت به کادر سمت چپ، فضای کمتری در نقشه نوری نیاز دارد.
شکل 10. دو مکعب با وضوح های مختلف نقشه نور.
شکل 11. می توانید تنظیمات Scale In Lightmap را طوری تغییر دهید که یک شی تعداد تکسل های کمتری داشته باشد.
سعی کنید از صرف تکسل برای موارد زیر اجتناب کنید:
- سطوح و اشیایی که بازیکن نمی بیند. این از هدر رفتن حافظه در نقشه های نوری برای جزئیاتی که روی صفحه نیستند جلوگیری می کند.
- سطوحی که تغییرات نوری کمی روی آنها وجود دارد. به عنوان مثال، اشیاء در سایه یا لمس شده توسط یک منبع نور.
- اجسام کوچک یا نازک. میزان نوری که اینها دریافت می کنند، چیز زیادی به رندر نهایی صحنه اضافه نمی کند.
نورپردازی تقلبی تا حد امکان
برای کاهش نیازهای پردازش، می توانید برخی از عناصر را جعل کنید. این می تواند باعث شود که محتوای شما سبک به نظر برسد، اما در واقع از روش های کارآمدتری استفاده کنید.
سایه های جعلی
سایه های بلادرنگ گران هستند. آنها با تکنیکی به نام نقشه سایه تولید می شوند. هزینه ارائه هندسه صحنه به نقشه سایه متناسب با تعداد رئوس رسم شده با سایه های فعال است. توصیه می کنیم مقدار هندسه ای که سایه می اندازد و تعداد نورهای سایه افکن بلادرنگ را محدود کنید.
شما می توانید سایه های جعلی را برای سایه ها بر روی اشیاء پویا بدون نورهای پویا پیاده سازی کنید. این هزینه های رندرینگ را پایین نگه می دارد و می تواند اثری مشابه سایه های پویا داشته باشد. در زیر چند راه برای اجرای سایه های تقلبی وجود دارد:
- از یک مش سه بعدی مانند صفحه یا چهارتایی که در زیر کاراکتر قرار داده شده استفاده کنید و یک بافت تار روی آن اعمال کنید.
- شما می توانید سایه بان سفارشی خود را برای سایه های حباب پیچیده تر بنویسید.
اگر از مش سه بعدی برای سایه استفاده کنید، مثال زیر نتیجه را نشان می دهد:
شکل 12. اجرای سایه در نسخه ی نمایشی فناوری ارتش.
اطلاعات نور را مستقیماً روی بافت ها رنگ کنید
اگر مقداری از سایه را در بافت ها رنگ کنید، محاسبات لازم برای نورهای اضافی را کاهش می دهید. این باعث صرفهجویی در حافظه میشود، زیرا به دادههای نقشه نوری کمتری نیاز دارد.
پروب های نور
هنگامی که از اشیاء پویا با نورپردازی پخته استفاده می کنید، آنها تحت تأثیر نقشه های نوری قرار نخواهند گرفت. این ممکن است باعث شود آنها احساس کنند که بخشی از صحنه نیستند.
می توانید با Light Probes این مشکل را حل کنید. کاوشگرهای نور مزایای مشابهی با نقشه های نوری دارند. آنها داده های سبکی را ذخیره می کنند که می توانند قبل از زمان محاسبه شوند و برای استفاده در زمان اجرا ذخیره شوند. این امر بسیاری از هزینه های محاسباتی را به زمان ویرایش منتقل می کند.
در حالی که یک نقشه نوری نور دریافت شده در یک تکسل را برای سطوح رمزگذاری می کند، یک نور پروب نوری را که از فضای خالی عبور می کند ذخیره می کند. می توانید از این داده ها برای نور دادن به اجسامی که حرکت می کنند استفاده کنید. کاوشگرهای نوری به ادغام اشیاء پویا به صورت بصری با اشیاء دارای نقشه نوری در سراسر صحنه شما کمک می کنند.
کاوشگرهای نور بهتر است برای نور دادن به اجسامی که در صحنه شما حرکت می کنند استفاده شود. کاوشگرها از نورهای پخته شما استفاده می کنند، که به اشیاء متحرک شما اجازه می دهد نوری مشابه صحنه داشته باشند. نورپردازی اجسام دینامیک با نور پروب نسبت به نورهای بلادرنگ هزینه کمتری دارد.
میتوانید درباره صفحات نورپردازی استاتیک با پروبهای نور و پروبهای نور بیشتر بدانید.
شکل 13. کاوشگرهای نوری که برای روشن کردن جمعیت پویا در دمو فناوری ارتش ها قرار داده شده اند.
تنظیمات Mesh Renderer
صرف نظر از نوع نوری که Scene شما استفاده می کند، مهم است که تنظیمات Mesh Renderer شما درست باشد.
هر چیزی را که استفاده نمی کنید خاموش کنید. تنظیماتی مانند Cast Shadows وقتی صحنه را رندر میکنید، حتی اگر شی روشن نباشد، هزینه اضافه میکند. مثال زیر از تنظیمات Mesh Renderer برای کاراکتری است که در شکل 13 نشان داده شده است. این کاراکتر از داده های پروب نور استفاده می کند، اما از پروب های بازتاب استفاده نمی کند.
تنظیم Blend Probes برای Light Probes اطلاعات نور را از نزدیکترین پروب نور به کاراکتر ترکیب می کند. همانطور که شخصیت در اطراف صحنه حرکت می کند، کاوشگرهای نوری که بر شخصیت تأثیر می گذارد تغییر می کند. Cast Shadows خاموش است زیرا رندر از روش blob استفاده می کند. Receive Shadows نیز خاموش است، زیرا صحنه پخته شده است و سایههای بیدرنگ وجود ندارد.
شکل 14. تنظیمات Mesh Renderer برای رندر شکل 13.
نورهای بیدرنگ و انواع نور
توصیه میکنیم نور خود را با نورپردازی پخته ، پروبهای نور ، و تکنیکهای نورپردازی تقلبی مانند بافتهای نوری رنگشده یا جلوههای مواد سایهزن کنترل کنید. با این حال، اگر به نور بلادرنگ نیاز دارید، باید نوع نور مورد استفاده را در نظر بگیرید.
هر نوع نور هزینه متفاوتی برای محاسبه روشنایی دارد. لیست زیر جزئیات هر نوع نور را نشان می دهد:
- جهت دار: این چراغ جهت یکنواخت و بدون ریزش دارد. نور جهت دار ارزان ترین نور بلادرنگ است. شما اغلب فقط به یک نور جهت در هر صحنه نیاز دارید. با رندر رو به جلو، مسیر رندر پیشنهادی برای موبایل، یونیتی یک نور جهتدار پیشفرض را در صورت عدم وجود نور جهتدار در صحنه، شامل میشود.
- نقطه: نورهای نقطه ای اجسام خارج از مخروط خود را از بین می برند و آنها را روشن نمی کنند. این باعث می شود نورهای نقطه ای از نظر محاسباتی کمتر از نورهای نقطه کروی هزینه داشته باشند. برای به دست آوردن بهترین عملکرد، عرض مخروط را محکم نگه دارید و فقط به اشیاء مورد نظر ضربه بزنید.
- نقطه: اینها نور را در همه جهات می تابانند. نور ریخته شده در هر جهت مفید است اما بسیار گران است. چراغ های نقطه ای در مناطق وسیعی گران هستند. علاوه بر این، محاسبه سایه می تواند گران ترین بخش نورپردازی باشد. اگر نور را در همه جهات بتابانید، سایههای بیشتر و محاسبات بیشتری وجود دارد.