Cách bake lightmap cho map rộng 16km2 trong Unity 2022
Thông tin dự án:
- Unity version: 2022.3.10f1
- Diện tích vòng ngoài map: 4000×4000
Setup Lighting & Lightmap trên model
Lighting:
- LOD0:
- Cast Shadow: On
- Static Shadow Caster: On
- Contribute Global Illumination: On
- LOD1
- Cast Shadow: On
- Static Shadow Caster: On
- Contribute Global Illumination: Off
- LOD2
- Cast Shadow: Off
- Static Shadow Caster: Off
- Contribute Global Illumination: Off
Lightmapping
- LOD0:
- Scale in Lightmap: 1
- Stitch Seams: On
- Lightmap Parameters: High
- LOD1:
- Scale in Lightmap: 0.5
- Stitch Seams: On
- Lightmap Parameters: Medium
- LOD2:
- Scale in Lightmap: Off
- Stitch Seams: Off
- Lightmap Parameters: Off
Light Probes have two main uses:
- The primary use of light probes is to provide high quality lighting (including indirect bounced light) on moving objects in your scene.
- The secondary use of light probes is to provide the lighting information for static scenery when that scenery is using Unity’s LOD system.
When using light probes for either of these two distinct purposes, many of the techniques you need to use are the same. It’s important to understand how light probes work so that you can choose where to place your probes in the scene.
Setup Light Settings
- Skybox
- xxx
Ngăn chặn tình trạng chậm tốc độ bake do lightmapper tiling
Lightmapper GPU lũy tiến bao gồm một tính năng gọi là lightmapper tiling. Lightmapper tiling ngăn không cho Progressive GPU Lightmapper quay trở lại Progressive CPU Lightmapper khi Unity đã sử dụng hết phân bổ bộ nhớ GPU. Thay vào đó, Unity phân bổ một số bộ nhớ tạm thời trên CPU, sau đó sắp xếp ánh sáng của bạn theo các ô có kích thước phù hợp với dung lượng bộ nhớ GPU có sẵn. Lightmapper tiling chỉ hoạt động khi Unity không thể truy cập đủ bộ nhớ GPU để xử lý toàn bộ bản đồ ánh sáng. Progressive GPU Lightmapper không bao gồm tính năng tiling.
Khi lightmapper tiling được kích hoạt, các cập nhật lũy tiến sẽ dừng trong chế độ Scene view và quá trình baking. Tuy nhiên, cài đặt Progressive updates trong cửa sổ Lighting không bị vô hiệu hóa rõ ràng. Việc bake một scene khi lightmapper tiling đang hoạt động sẽ chậm hơn so với việc thực hiện cùng một scene mà không tiling.
Không thể vô hiệu hóa tiling. Tuy nhiên, bạn có thể giảm khả năng kích hoạt nó bằng cách sử dụng các chiến lược sau:
- Tăng dung lượng bộ nhớ GPU có sẵn để Unity sử dụng.
- Tắt ambient occlusion. Mở cửa sổ Lighting (menu: Window > Rendering > Lighting). Trong giao diện Lightmapping Settings, hãy tắt Ambient Occlusion.
- Chỉ bake indirect light. Đặt tất cả các nguồn sáng của bạn thành Realtime hoặc Mixed. Đảm bảo rằng không có nguồn sáng nào được đặt thành Baked. Nếu bạn sử dụng phương pháp Mixed, hãy đặt chế độ Lighting > Mixed Lighting > Lighting mode thành Baked Indirect.
- Giảm mức độ khử răng cưa (anti-aliasing) trong dự án của bạn. Điều hướng đến Project Settings > Quality và chọn tùy chọn lấy ít mẫu hơn. Ví dụ: bạn có thể chuyển từ Lấy mẫu nhiều lần 8x sang Lấy mẫu nhiều lần 2x.
- Giảm chất lượng của lightmap trong Lightmap Parameters Asset của bạn. Mở Lighting window, mở rộng Lightmapping settings và chọn tùy chọn độ phân giải thấp hơn cho các Lightmap parameters.
- Giảm độ phân giải lightmap của bạn.
- Sử dụng bộ khử nhiễu dựa trên CPU. Để chọn bộ khử nhiễu, hãy mở cửa sổ Lighting, mở rộng Lightmapping settings, đặt Filtering thành Advanced, sau đó chọn bộ khử nhiễu cho từng loại mục tiêu lightmap (Direct và Indirect). Chỉ OpenImageDenoise là dựa trên CPU. RadeonPro và Optix đều dựa trên GPU, nhưng RadeonPro sử dụng nhiều bộ nhớ GPU hơn.
Cách optimize tốc độ bake
Có một số cách để bạn có thể giảm thời gian xử lý và tránh các tình huống trong đó quá trình xử lý vượt quá VRAM có sẵn cho GPU.
- Đóng các ứng dụng tăng tốc GPU khác. Phần mềm tạo mô hình 3D và chỉnh sửa hình ảnh 2D được tăng tốc GPU sử dụng VRAM. Tắt chức năng đồ họa tăng tốc hoặc thoát các ứng dụng này.
- Chuyển sang bộ khử nhiễu (denoiser) dựa trên CPU. Bộ khử nhiễu dựa trên GPU cũng sử dụng dung lượng VRAM. Chuyển sang tùy chọn dựa trên CPU, như Intel Open Image, thay vào đó sử dụng RAM hệ thống.
- Sử dụng Light Probes cho GameObject nhỏ hơn
GameObject chẳng hạn như mảnh vụn hoặc các props nhỏ sử dụng không gian trong bản đồ ánh sáng nhưng có thể không đóng góp đáng kể vào hình thức của cảnh. Để tối ưu hóa tốc độ nướng, hãy tắt Contribute Global Illumination cho các Mesh Renderers của GameObjects này và thay vào đó chiếu sáng chúng bằng Light Probes. - Chỉ định các GPU riêng biệt để kết xuất và nướng. Nếu máy tính của bạn có nhiều GPU, bạn có thể chỉ định một GPU để rendering và một GPU để baking.
- Sử dụng số lượng mẫu khử răng cưa thấp hơn. Giá trị mặc định cho cài đặt này trong Lightmap Parameters Asset là 8. Khi bạn tăng giá trị này, Unity sẽ sử dụng nhiều VRAM hơn. Khi bạn đang sử dụng kích thước bản đồ ánh sáng từ 4096 trở lên, điều này có thể nhanh chóng vượt quá bộ nhớ của nhiều GPU tiêu dùng.
A word of warning is that GI cache is shared between projects of the same editor version
clear it only if you know it’s okay to do so.
This brings us to the looping bug: if a 2020.3 project GI bake crashed at some point, it is possible that the cache could affect all 2020.3 projects.
To clear your editor version GI Cache
- Open a project in the version you want
- Edit
- Preferences
- GI Cache
- Clean Cache
- Restart project
- Bake again
Notes
- Nếu như gặp khó khăn trong việc bake lightmap cho terrain thì cân nhắc dùng real-time cho terrain thay vì bake.
- Nếu bake hết VRAM/RAM thì giảm size của lightmap xuống (512×512 chẳng hạn).