January 30, 2024 Hana Trieu

Tìm hiểu về Ray Tracing và Lumen trong Unreal Engine 5

Unreal Engine của Epic là một trong những game engine phổ biến nhất. Nó đã được sử dụng rộng rãi bởi những gã khổng lồ AAA như EA, Ubisoft, Microsoft, cũng như rất nhiều studio độc lập. Với Unreal Engine 5 cùng các công nghệ Lumen và Nanite, Epic Games đang tìm cách mở rộng sự thống trị của mình trong ngành trò chơi điện tử. Trong bài viết hôm nay, iRender sẽ tìm hiểu về Ray Tracing và Lumen (giải pháp chiếu sáng toàn cảnh được Unreal Engine 5 sử dụng) xem chúng hoạt động như thế nào. 

1. Global Illumination - Chiếu sáng toàn cảnh là gì?

Chiếu sáng toàn cảnh là quá trình thắp sáng hoặc chiếu sáng một cảnh bằng cách tính toán ánh sáng phát ra từ các nguồn sáng trong và ngoài màn hình (bằng phép tính gần đúng hoặc dò đường đi của nó). Với tính năng dò tia (ray tracing) và dò đường (path tracing), các tia sáng được truyền từ các nguồn này, tới các vật thể khác nhau trong cảnh và chiếu sáng chúng.

Các tia hoạt động khác nhau tùy thuộc vào bản chất của vật thể chúng gặp phải. Ví dụ, các vật thể bóng (sáng bóng) sẽ phản chiếu tia sáng, trong khi các vật thể mờ đục sẽ chỉ chặn tia sáng và chuyển hướng nó đi nơi khác. Sự chuyển hướng tia sáng bởi các vật thể theo các hướng khác nhau được gọi là gián tiếp hoặc ánh sáng khuếch tán, trong khi các tia chuyển hướng được gọi là tia khuếch tán.

2. Chiếu sáng toàn cảnh Ray Traced (RTGI)

Các tia khuếch tán (gián tiếp) này hoạt động như các tia mới được chiếu, tiếp tục đi xuyên vào các vật thể khác và chiếu sáng chúng trong quá trình đó, vật thể chuyển hướng chúng giờ hoạt động như một nguồn sáng. Khi tia cuối cùng đến được camera (màn hình), thông tin mà nó thu thập được sẽ được sử dụng để tính toán ánh sáng của cảnh.

Trong hầu hết các trường hợp, màu sắc của tia được xác định bởi màu sắc của điểm ảnh (pixel) phản ánh nó. Để tiết kiệm hiệu suất, các tia sáng (dữ liệu như màu sắc, cường độ, v.v.) chiếu trực tiếp vào màn hình được tính toán bằng các thuật toán phức tạp, trong khi các tia khuếch tán còn lại được tính bằng các phương trình đơn giản hơn.

Việc xác định số lượng tia và cách các tia được truyền ra được xử lý bởi các mẫu dò (là những nguồn ánh sáng được đặt khắp khung cảnh trong thời gian chạy). Chúng hoạt động như các nguồn sáng điểm (point sources), phát ra tia sáng và chiếu sáng môi trường xung quanh. Mỗi mẫu dò có thể chiếu một hoặc nhiều tia một cách triệt để.

Các tia phát ra từ các mẫu dò này được dò và tô bóng. Các dữ liệu, như độ chiếu xạ và khoảng cách tới hình học, được sử dụng để tính toán ánh sáng cuối cùng cho cảnh. Trong các tựa game dò tia đầu tiên, hầu hết các nhà phát triển đều sử dụng một (hoặc hai) mẫu dò ánh sáng để tính toán ánh sáng khuếch tán. Trong Metro Exodus, mẫu dò được sử dụng là mặt trời và kết cấu bầu trời. 

Phiên bản nâng cao đã tăng số lượng mẫu dò lên 256 nguồn sáng. Do đó, về tổng thể, bạn có 256 nguồn sáng, cộng với các tia từ mặt trời và bầu trời đều được sử dụng để tính toán độ sáng của từng pixel. Màn hình 1080p có 2 triệu pixels, 1440p có 4 triệu và 4K có 8 triệu pixels. 

Để đảm bảo rằng phần cứng hiện đại có thể chạy trò chơi một cách mượt mà, các nhà phát triển đã sử dụng grid cells (lưới các ô vuông) hay clusters để phân vùng các cảnh. Sau đó, tương tự như hiệu ứng Không gian màn hình (Screen Space), các mẫu dò ánh sáng trong phạm vi (trong lưới) được gọi để tính toán ánh sáng. Sự khác biệt chính là không gian màn hình được chia thành các phần (tùy thuộc vào vị trí của chúng trong bộ đệm Z).

Một sự tối ưu hóa khác là tích tụ các tia từ các khung hình trước đó và sử dụng chúng để có thêm ánh sáng khuếch tán, tương tự như nâng cấp theo thời gian. Điều này được sử dụng để tạo ra lưới chiếu sáng, sau đó có thể được tái sử dụng trên các khung hình liên tiếp, cho phép các tia sáng phản xạ gần như vô hạn. Về cơ bản, bạn đang truyền các tia khuếch tán theo thời gian trên nhiều khung hình để giảm tác động đến hiệu suất và làm cho phương pháp này trở nên khả thi hơn khi sử dụng trong thời gian thực.

3. Ray Tracing và Lumen trong Unreal Engine 5

Lumen là một dạng ray-tracing (dò tia). Đây là dạng được tối ưu hóa và linh hoạt hơn để cho phép áp dụng rộng rãi hơn, trên các kiến ​​trúc đồ họa khác nhau mà không cần phải sở hữu các card đồ họa đắt tiền. 

Theo mặc định, Lumen sử dụng software ray tracing (dò tia phần mềm), không sử dụng lõi RT/Bộ tăng tốc tia Ray Accelerators. Nó tận dụng nhiều hình thức dò tia song song bao gồm dò tia màn hình (screen-tracing – SSRT), hàm SDF (Signed Distance Fields) và MDF (Mesh Distance Fields) để tính toán độ chiếu sáng tổng thể của cảnh tùy thuộc vào các đối tượng, khoảng cách của chúng với màn hình, và một số yếu tố khác.

3.1 SDF (Signed Distance Fields) và MDF (Mesh Distance Fields) là gì?

Signed Distance Fields (hay SDF) đơn giản là các vectơ khoảng cách theo một hướng cụ thể. Hãy lấy ví dụ dưới đây để minh họa điều này:

Một tia phát ra từ camera đi qua màn hình và sau đó tiếp cận bề mặt hình tròn. Với phương pháp dò tia, phần quan trọng nhất là tìm ra tia nào chiếu vào các vật thể trong cảnh và tia nào không chiếu vào chúng. SDF được sử dụng cụ thể hơn để tìm ra (đối với một tia bắt đầu theo một hướng cụ thể) điểm gần nhất trên bề mặt của vật thể nơi có giao điểm.

Diễu tia (ray-marching)

Vòng tròn màu xanh lá đại diện cho SDF. Tính toán SDF liên quan đến việc tìm hiểu xem chúng có thể đi được tối thiểu là bao xa theo hướng của nó tính từ một điểm trên tia. Khoảng cách đó được bao phủ và SDF được đánh giá lại. Toàn bộ quá trình này được gọi là diễu tia (ray-marching). Trong trường hợp này, tia không chiếu đến vật thể nên quá trình diễu tia kết thúc sau một số bước nhất định. Trong trường hợp tia chiếu đến vật thể, SDF sẽ được sử dụng để tính toán ánh sáng.

Lumen sử dụng Global Distance Fields, Mesh Distance Fields, và Screen Traces để tính toán ánh sáng trong phần mềm/quy trình Hybrid tracing.

3.2 Global Distance Fields, Mesh Distance Fields, và Screen Tracing

Quy trình Hybrid tracing

Global Distance Fields tính toán hanh nhất nhưng kém chính xác nhất. Lợi ích của nó được sử dụng cho bộ khung ngoài trừu tượng của cảnh, ví dụ như tường, sàn và các khối kết cấu lớn (nhưng đơn giản) như đệm. Mesh Distance Field nhiều chi tiết hơn nhưng chỉ giữ được những chi tiết thưa thớt ở gần bề mặt vật thể. Các SDF này được sử dụng với mipmap tùy thuộc vào khoảng cách của vật thể với máy ảnh.

Screen tracing (dò tia không gian màn hình) là bước đầu tiên trong quy trình Lumen. Nó được tiến hành dựa trên hình học/đối tượng trong bộ đệm độ sâu – depth buffer (hiển thị trên màn hình). Nó thường được tận dụng để các cạnh và kẽ hở, về cơ bản là hình học nơi bóng không gian màn hình (SSAO) được tạo ra. Sau quá trình screen tracing, các SDF được sử dụng. Đầu tiên, Mesh Distance Field được sử dụng cho các đối tượng ở gần, tiếp đến là Global Distance Fields cho phần còn lại của cảnh.

Mesh Distance Field (được gọi là dò chi tiết) được dò đối với các đối tượng cách camera tối đa 2 mét, trong khi phần còn lại được dò bằng cách sử dụng Global Distance Fields (được gọi dò toàn cảnh). Mỗi phương pháp đều có voxel 2D của mỗi cảnh, như bạn có thể thấy ở trên. GDF kém chính xác hơn khi bạn dò chúng dựa trên bóng của đối tượng nhưng nhanh hơn MDF. Bản chất và khoảng cách của các vật thể với máy ảnh sẽ bổ sung cho chúng. Mặt khác, MDF dò các phiên bản có độ poly tương đối thấp của các vật thể khác nhau trong cảnh để tính toán ánh sáng.

Surface Cache

Để tăng tốc quá trình hơn nữa, Lumen sử dụng Surface Cache. Surface Cache ghi lại các đặc tính hình học của các đối tượng từ mọi góc độ và lưu trữ chúng ngoại tuyến dưới dạng tập bản đồ (cache). Việc ghi lại diễn ra khi người chơi di chuyển xung quanh, ở độ phân giải cao hơn khi bạn di chuyển đến gần hơn và ở độ phân giải thấp hơn khi bạn di chuyển ra xa một vật thể.

Tuy nhiên, cáchnày sẽ chỉ hoạt động đối với các lưới có nội thất đơn giản. Quá trình caching diễn ra đối với số lượng đa giác đối tượng có giới hạn (vài trăm MB VRAM) và yêu cầu LOD cho các đối tượng/phần khác nhau để sử dụng hiệu quả.

3.3 Hạn chế của Lumen

Một trong những nhược điểm chính quy trình RT của phần mềm Lumen là nó không hoạt động với lưới da (chủ yếu là các bộ xương), vì chúng di chuyển và thay đổi hình dạng theo mọi khung hình (biến dạng/chuyển động, v.v.). Cấu trúc BVH cho các đối tượng này cần được tạo cho mọi khung hình, điều này không thể thực hiện được bằng phần mềm dò tia của Lumen. Lumen chỉ tạo các đối tượng BVH cho lưới tĩnh một lần trong thời gian chạy, tăng tốc quá trình nhưng khiến nó trở nên vô dụng đối với lưới động.

Lumen cũng đi kèm với dò tia phần cứng (hardware ray-tracing), nhưng hầu hết các nhà phát triển sẽ sử dụng dò tia phần mềm vì dò tia phần cứng chậm hơn 50% so với việc triển khai phần mềm, ngay cả với phần cứng chuyên dụng như lõi RT. Hơn nữa, bạn không thể có các lưới chồng chéo với các lưới dò tia phần cứng hoặc lưới bị che vì chúng làm chậm đáng kể quá trình truyền tia. Dò tia phần mềm hợp nhất tất cả các lưới xen kẽ vào một trường khoảng cách duy nhất như đã giải thích ở trên.

Nhìn chung, Lumen là một công nghệ rất ấn tượng. Nhưng nhược điểm chính của nó là nó giới hạn ở Unreal Engine 5. Điều này có nghĩa là nó sẽ không bao giờ được áp dụng nhiều như các kỹ thuật nguồn mở khác (như FXAA, SMAA hoặc thậm chí TAA). Nhược điểm này rõ ràng hơn khi trong các bản phát hành gần đây, các trò chơi tận dụng Unreal Engine 5 và các công nghệ của nó chạy rất kém ngay cả trên phần cứng cao cấp.

4. Render nhanh hơn trong Unreal Engine với iRender

iRender cung cấp máy chủ (server) cấu hình cao với 1x RTX 4090 cho render Unreal Engine. Với CPU khỏe là AMD Ryzen™ Threadripper™ PRO 3955WX @ 3.9 – 4.2GHz, bộ nhớ RAM 256GB và dung lượng ổ cứng NVMe SSD 2T, server của chúng tôi có thể xử lý hầu hết mọi mức độ phức tạp của các dự án Unreal Engine.

Đố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: 

Nhận ưu đãi 100% cho khoản nạp đầu tiên trong vòng 24 giờ đăng ký từ chương trình ưu đãi đặc biệt của chúng tôi.

Để 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 +84915875500.

 

iRender – Happy Rendering!



		
, , , , , , , , , , , , , , , , , , , , , , ,

Hana Trieu

iRender - Happy Rendering!
Contact

INTEGRATIONS

Autodesk Maya
Autodesk 3DS Max
Blender
Cinema 4D
Houdini
Maxwell
Nvidia Iray
Lumion
KeyShot
UE4
Twinmotion
Redshift
Octane
And many more…

iRENDER TEAM

MONDAY – SUNDAY
9:00 AM – 8:00 PM
Hotline: 0916 806 116
Zalo: 0916 806 116
Skype: iRender Support
Email: [email protected]
CÔNG TY CỔ PHẦN CÔNG NGHỆ IRENDER VIỆT NAM
MST: 0108787752
Office: 5/82 Dịch Vọng Hậu, Cầu Giấy, Hà Nội.

Contact
0916806116