Trình kết xuất Forward Shading cho VR trong Unreal Engine 5
Theo mặc định, Unreal Engine sử dụng Deferred Renderer vì nó mang lại tính linh hoạt cao nhất và cấp quyền truy cập vào nhiều tính năng hơn. Tuy nhiên, điểm bất lợi của trình kết xuất này là nó có thể không phù hợp với tất cả các trải nghiệm thực tế ảo (VR). Thay vào đó, trình kết xuất Forward Shading mang lại tốc độ render nhiều lượt nhanh hơn và từ đó có thể dẫn đến hiệu suất tốt hơn trên nền tảng VR. Không những nhanh hơn, Forward Shading còn cung cấp các tùy chọn khử răng cưa tốt hơn so với Deferred Renderer để có thể tạo ra hình ảnh đẹp hơn.
Hãy cùng iRender tìm hiểu về Forward Shading cho thực tế ảo trong Unreal Engine 5.
1. Trình render Forward Shading cho thực tế ảo trong Unreal Engine 5
1.1 Kích hoạt Forward Shading
Để kích hoạt Forward Shading trong Unreal Engine, bạn thực hiện các bước sau:
-
-
-
- Trong menu Edit, mở Project Settings
- Chọn tab Rendering ở bên trái và tìm mục Forward Shading
- Kích hoạt Forward Shading
-
-
Sau đó, bạn sẽ cần phải khởi động lại Editor. Sau khi khởi động lại Editor, bạn có thể bắt đầu sử dụng các tùy chọn và tính năng của Forward Shading.
1.2 Kích hoạt tính năng khử răng cưa - Multisample Anti-Aliasing
Thực hiện các thao tác sau để sử dụng tính năng Multisample Anti-Aliasing (MSAA) – Khử răng cưa nhiều mẫu:
-
-
-
- Trong menu Edit, mở Project Settings
- Chọn tab Rendering ở bên trái và tìm mục Default Settings
- Đặt Anti-Aliasing Method thành MSAA
-
-
Trình kết xuất Forward Shading hỗ trợ cả Khử răng cưa nhiều mẫu (MSAA) và Khử răng cưa tạm thời (TAA). Trong hầu hết các trường hợp, TAA được ưa chuộng hơn vì nó loại bỏ cả răng cưa hình học và răng cưa đặc trưng. Tuy nhiên, trong VR, chuyển động liên tục của pixel phụ do tính năng theo dõi đầu tạo ra độ mờ không mong muốn, khiến MSAA trở thành lựa chọn tốt hơn. Các dự án sử dụng MSAA sẽ muốn xây dựng nội dung để giảm thiểu răng cưa cụ thể. Ngoài ra, tính năng Normal to Roughness có thể giúp giảm răng cưa đặc trưng từ bản đồ bình thường chi tiết và tạo LOD tự động cho các mesh tĩnh có thể làm phẳng các tính năng trên các mesh ở xa, giúp giảm răng cưa từ các hình tam giác nhỏ.
Dựa trên các trải nghiệm thực tế, việc sử dụng MSAA thay vì TAA sẽ tăng thời gian frame của GPU lên khoảng 25%. Thời gian thực tế sẽ phụ thuộc vào từng nội dung dự án.
Dưới đây là một ví dụ so sánh giữa khi dùng Temporal AA với khi dùng 4X MSAA.
Nguồn: unrealengine.com
Lưu ý: Bạn có thể sử dụng biến console r.MSAACount để kiểm soát số lượng mẫu MSAA được tính cho mỗi pixel. Thiết lập r.MSAACount 1 sẽ vô hiệu hóa MSAA. Thiết lập r.MSAACount 0 sẽ quay trở lại sử dụng Temporal AA, cho phép chuyển đổi thuận tiện giữa các phương pháp khử răng cưa.
1.3 Hiệu suất và tính năng của Foward Shading
Hiệu Suất
Việc chuyển từ trình kết xuất Deferred Renderer sang Forward Shading có thể giúp bạn tăng hiệu suất cho dự án.
Forward Shading có thể nhanh hơn Deferred Renderer đối với một số nội dung. Hầu hết các cải tiến hiệu suất đến từ các tính năng có thể bị vô hiệu hóa trên mỗi vật liệu. Theo mặc định, chỉ ảnh chụp phản chiếu gần nhất mới được áp dụng mà không cần hiệu chỉnh thị sai, trừ khi vật liệu chọn tham gia High Quality Reflections – phản chiếu chất lượng cao, height fog được tính toán trên mỗi vertex và phản xạ phẳng chỉ được áp dụng cho các vật liệu kích hoạt tính năng này.
Tận dụng các tùy chọn này trong trò chơi VR mới của Epic, Robo Recall, trình kết xuất forward shading nhanh hơn khoảng 22% so với deferred renderer trên NVIDIA GTX 970.
Forward Shading hoạt động bằng cách loại bỏ ánh sáng và ảnh chụp phản chiếu – Reflection Captures vào lưới frustum-space. Sau đó, mỗi pixel trong quá trình chuyển tiếp sẽ lặp lại qua các đèn và ảnh chụp phản chiếu ảnh hưởng đến nó, chia sẻ vật liệu với chúng. Các bóng chuyển động – Dynamic Shadows cho Đèn cố định – Stationary Lights được tính toán trước và thêm vào các kênh của mặt nạ shadow screen-space, tận dụng giới hạn hiện tại là 4 đèn cố định chồng lên nhau.
Bạn hãy đảm bảo sử dụng công cụ [Profiling]() của Unreal Engine để đánh giá hiệu suất trò chơi của bạn khi chuyển từ trình kết xuất Deferred Renderer sang Forward Shading. Bạn sẽ cần đặc biệt chú ý đến [Profiling GPU]() để xem chi phí GPU đang tăng đến mức nào, cũng như sử dụng [Stat Commands]() để hỗ trợ profiling.
Tính năng
Dưới đây là danh sách các tính năng hiện được hỗ trợ của Forward Shading:
-
-
-
- Hỗ trợ đầy đủ cho Stationary Light, bao gồm Dynamic Shadows từ các đối tượng có thể di chuyển kết hợp với bóng môi trường được tính toán trước
- Nhiều ảnh chụp phản chiếu được kết hợp với hiệu chỉnh thị sai
- Hình ảnh phản chiếu phẳng của một phần scene được tổng hợp thành Ảnh chụp hình ảnh phản chiếu – Reflection Captures
- Đề can DBuffer
- Lighting and Sky Lights được tính toán trước
- Bất kỳ số lượng đèn di chuyển không bị che khuất nào
- Bóng Capsule
- Alpha-to-coverage cho Vật liệu che phủ
- Tương thích âm thanh nổi ngay lập tức
- Có đến 4 đèn Shadow Casting chồng lên nhau
- Chức năng ánh sáng trên đèn đổ bóng
-
-
1.4 Các sự cố và câu hỏi liên quan
Các tính năng sau không được hỗ trợ khi sử dụng Forward Shading Renderer:
-
-
-
- Kỹ thuật không gian màn hình (SSR, SSAO, Contact Shadows)
- Dynamically Shadowed Translucency
- Độ mờ Translucency nhận bóng môi trường từ Stationary Light
- MSAA trên D-Buffer Decals và Motion Blur
-
-
Dưới đây là một số câu hỏi/sự cố phổ biến có thể phát sinh khi sử dụng Forward Shading trong Unreal Engine:
Q1: Vật liệu bị hỏng khi chuyển sang Forward Shading. Liệu có lỗi gì đó với texture của scene GBuffer?
-
-
- Bạn không có quyền truy cập vào GBuffer để lấy mẫu texture trong Forward Shading vì nó chỉ khả dụng với Deferred Renderer.
-
Q2: Forward Shading có cho phép ít mẫu texture hơn Deferred Render không?
-
-
- Forward Shading gói tất cả các tính năng vào một shader, vì vậy có ít bộ lấy mẫu texture hơn cho vật liệu của bạn.
- Bạn có thể giải quyết vấn đề này bằng cách sử dụng Shared Samplers.
-
Q3: Tại sao bạn gặp sự cố MSAA không thể tìm thấy các sample cho Atmospheric Fog?
-
-
- Atmospheric Fog chưa thể xử lý MSAA đúng cách.
- Đối với Height Fog, bạn có thể sử dụng Vertex Fogging (được bật theo mặc định khi bật Forward Shading).
- Điều này có nghĩa là nó được tính toán trong Forward BasePass và do đó khử răng cưa một cách chính xác.
- Atmosphere vẫn được tính toán trong Deferred Pass ngoài độ sâu scene đã phân giải để nó không khử răng cưa chính xác.
-
2. iRender - Render farm tốt nhất cho Unreal Engine
iRender là nhà cung cấp dịch vụ kết xuất đám mây tăng tốc GPU chuyên nghiệp cho kết xuất 3D và train AI với hơn 30.000 khách hàng. Chúng tôi được đánh giá cao trên nhiều bảng xếp hạng toàn cầu như CGDirector, Lumion Official, Radarrender, InspirationTuts CAD, All3DP, BlenderBaseCamp, VFX Rendering.
iRender cung cấp dịch vụ cho thuê máy chủ server, cụ thể là server chuyên dụng cấu hình cao (RTX 3090 và RTX 4090) để bạn điều khiển thông qua ứng dụng Microsoft Remote Desktop. Bạn sẽ thiết lập môi trường làm việc sáng tạo của mình trên các server này và render các dự án bất cứ khi nào bạn muốn.
Dịch vụ render của chúng tôi cho Unreal Engine
Unreal Engine chủ yếu sử dụng GPU để hiển thị các yếu tố đồ họa trên màn hình. Một GPU mạnh và nhanh sẽ cung cấp cho người dùng FPS cao hơn trong viewport hoặc trong một trò chơi độc lập. iRender có server 1 GPU RTX 4090, là gói máy phù hợp nhất cho render Unreal Engine. Cấu hình chi tiết của gói máy này được thể hiện ở hình dưới đây:
-
-
- Một GPU – NVIDIA GeForce RTX 4090 24GB: Với 24GB VRAM và hiệu suất tuyệt vời, RTX 4090 là một trong những GPU tốt nhất được sử dụng để phát triển trò chơi, sản xuất các nội dung ảo, diễn họa kiến trúc và thậm chí cả nội dung VR.
- Một CPU – AMD Ryzen™ Threadripper™ PRO 3955WX 3,9 GHz: Bộ xử lý 16 nhân mạnh mẽ dành cho các tác vụ nặng.
- 256GB RAM: Dung lượng RAM lớn hơn nhiều so với dung lượng cần thiết cho Unreal Editor. Nó cho phép bạn thực hiện các tác vụ sử dụng nhiều RAM và làm việc với các chương trình khác ngoài Unreal Engine cùng một lúc.
- 1 Ổ SSD với dung lượng lưu trữ 2T: Ổ SSD NVMe tốc độ cao và dung lượng lớn cho hệ điều hành và các ứng dụng, đáp ứng nhiều dự án render lớn nhỏ.
-
Đối với các dự án có deadline gần và cần render nhanh, bạn có thể sử dụng đồng thời nhiều server. iRender cho phép người dùng sử dụng nhiều server trên một tài khoản cùng lúc để đẩy nhanh tiến độ render. Việc cài đặt cũng rất đơn giản: Chỉ cần thiết lập Unreal Engine trên một máy và clone máy này ra thành nhiều máy khác (khi đó, môi trường làm việc của bạn sẽ y nguyên máy gốc, bạn không cần cài đặt lại bất kỳ thứ gì.)
Cùng theo dõi video chúng tôi test hiệu suất render của máy 1 card RTX 4090 này trong Unreal Engine:
Let’s get started!
Hãy tạo TÀI KHOẢN ngay để dùng thử server RTX 4090 của chúng tôi cho render Unreal Engine! Để biết thêm thông tin, xin vui lòng liên hệ với chúng tôi qua email [email protected] hoặc số điện thoại +84 915 875 500.
iRender – Happy Rendering!
Nguồn tham khảo: unrealengine.com