March 12, 2024 Hana Trieu

Tìm hiểu về Real-time Ray Tracing trong Unreal Engine

Bạn có thể đã nghe nhiều về Real-time Ray Tracing và luôn muốn sắm cho mình một chiếc card đồ họa NVIDIA RTX mạnh mẽ cho Unreal Engine. Vậy Real-time Ray Tracing trong Unreal thực chất là gì và tại sao chúng ta lại cần card đồ họa RTX cho nó? iRender sẽ giải đáp cho bạn trong bài viết hôm nay. 

Ray Tracing là gì?

Chúng ta sẽ đi sâu để tìm hiểu về Ray Tracing, xem xét sự khác biệt của nó với Rasterization (công nghệ mà Ray Tracing đã thay thế trong nhiều trường hợp). 

Cả Rasterization và Ray Tracing đều là các phương pháp render được sử dụng trong đồ họa máy tính để xác định màu của các pixel tạo nên hình ảnh hiển thị trên màn hình của bạn, hoặc được tạo trên ổ cứng khi bạn nhấn nút Render.

Rasterization hoạt động bằng cách vẽ các đối tượng trong cảnh từ sau ra trước, ánh xạ các đối tượng 3D sang mặt phẳng 2D thông qua ma trận biến đổi. Nó xác định màu sắc của từng pixel dựa trên các thông tin (màu sắc, texture, normal) được lưu trữ trên lưới (model), kết hợp với ánh sáng trong cảnh. Nhìn chung, phương pháp này nhanh hơn nhiều so với ray tracing, nhưng không thể mô phỏng các hiệu ứng dựa vào ánh sáng phản xạ, như phản xạ chân thực, độ mờ và sự các che khuất xung quanh.

Mặt khác, Ray Tracing hoạt động bằng cách truyền một tia ra khỏi tầm nhìn của máy ảnh và dò theo đường đi của nó khi nó chiếu đến các vật thể xung quanh trong cảnh, cho đến khi chạm tới nguồn sáng, sau đó thu thập các màu khi nó di chuyển. Bởi vì nó bắt chước hành vi vật lý của các tia sáng, nên nó mang lại hình ảnh chất lượng cao hơn, chân thực hơn nhiều so với rasterization, như các chi tiết, đổ bóng, che khuất xung quanh cũng như khúc xạ và phản xạ chính xác. Tuy nhiên, phương pháp này phải đánh đổi tốc độ để mang lại kết quả chân thực đó. 

Real-time rendering là gì?

Khi bạn xem một bộ phim tại rạp, cho dù là một bộ phim do người thật đóng với các diễn viên và môi trường thực hay một bộ phim mô phỏng hình ảnh bằng máy tính, thứ mà não bạn cảm nhận là chuyển động liên tục thực chất chỉ là 24 khung hình riêng biệt được phát liên tiếp trong mỗi giây của cảnh quay.

Đối với phim mô phỏng hình ảnh bằng máy tính, từng khung hình đó phải được render ra, nghĩa là máy tính phải tính toán từng pixel tạo nên khung hình sẽ trông như thế nào. Trong quy trình đồ họa máy tính (CG) truyền thống, việc này được thực hiện thông qua trình render ngoại tuyến, và không có gì lạ khi một khung hình phải mất hàng giờ hoặc thậm chí vài ngày để render ra được độ phân giải và chất lượng mong muốn.

Tuy nhiên, đối với các trò chơi hoặc ứng dụng tương tác khác (nơi mà không có cách nào biết trước máy ảnh sẽ nhìn thấy gì tại mỗi thời điểm), các khung hình phải được render ở cùng tốc độ mà chúng sẽ được phát lại, tức là trong thời gian thực (real-time). Hiện nay, các trò chơi điện tử yêu cầu 60 hoặc thậm chí 120 khung hình được hiển thị mỗi cho mỗi giây, tính ra mỗi khung hình chỉ hiện thị trong vài mili giây.

Rasterization đủ nhanh để có thể được sử dụng để render real-time trong trò chơi trong nhiều thập kỷ, mặc dù vẫn cần nhiều thủ thuật. Ray tracing cũng từng chỉ được sử dụng để render ngoại tuyến. Công dụng duy nhất của nó trong trò chơi là cho phim ảnh (còn được gọi là đoạn cắt cảnh), giống như phim, được render trước và sau đó chỉ phát lại trong trò chơi (bạn không thể tương tác với chúng).

Điều gì đã hiện thực hóa Real-time Ray Tracing?

Năm 2018, hai xúc tác công nghệ đồng thời xuất hiện: DirectX Raytracing – hệ thống DXR của Microsoft, và RTX – nền tảng RTX của NVIDIA. Epic Games đã làm việc với NVIDIA và ILMxLAB, ra mắt tính năng real-time ray tracing đầu tiên tại GDC vào tháng 3 năm 2018 với bản demo công nghệ Reflections, trong đó có các nhân vật từ Star Wars: The Last Jedi.

Tác phẩm đã thể hiện được ánh sáng vùng có kết cấu, bóng sáng vùng dò tia, phản xạ dò tia, che khuất môi trường xung quanh dò ​​tia, độ sâu trường ảnh điện ảnh và Bộ khử nhiễu real-time của NVIDIA – tất cả đều chạy trong thời gian thực.

Trong những ngày đầu đó, code Unreal Engine nguyên mẫu không công khai cho người dùng. Phần cứng để chạy bản demo trong thời gian thực gồm một NVIDIA DGX Station với bốn GPU NVIDIA Volta, với mức giá khoảng 70.000 USD. Tại thời điểm đó, cả phần mềm lẫn phần cứng đều là những thứ khó có thể truy cập được đối với người dùng bình thường. 

Ai cũng có thể sử dụng Real-time Ray Tracing?

Trở lại tháng 8 năm 2018 tại Gamescom, nơi NVIDIA trình diễn Reflections chạy trong thời gian thực chỉ trên một trong những GPU GeForce RTX 2080 Ti $1.200.

Tại GDC vào tháng 3 năm 2019, Epic Games đã cung cấp công nghệ real-time ray tracing dưới dạng bản Beta trong Unreal Engine 4.22. Nó sử dụng một phương pháp kết hợp khả năng dò tia cho những render pass hưởng lợi từ chúng với các kỹ thuật raster truyền thống dành cho những render pass không được hưởng lợi, cho phép đạt được render trong thời gian thực. 

Ngày nay, với Unreal Engine 5, phần mềm real-time ray tracing của Epic đã được nâng cấp về hiệu suất, độ ổn định và tính hoàn thiện của tính năng, đồng thời có thể mua các card đồ họa RTX có khả năng chạy phần mềm này với giá dưới 500 USD. 

Lợi ích của ray tracing là gì?

Ray tracing có những lợi ích nhất định, dù là trong thời gian thực hay ngoại tuyến.

Đầu tiên, sự phản chiếu chính xác làm tăng thêm độ tin cậy của cảnh. Phản xạ (reflections) dò tia có thể hỗ trợ nhiều lần chiếu, nghĩa là chúng có thể tạo ra phản xạ giao thoa cho các bề mặt phản chiếu, giống như trong thế giới thực. Chúng cũng phản chiếu các vật thể bên ngoài trường nhìn. Đối với các nhà thiết kế và tiếp thị ô tô, cách ánh sáng phản chiếu trên bề mặt rất quan trọng; phương pháp dò tia cho phép họ trực quan hóa điều đó trước khi chế tạo ra chiếc ô tô. 

Các bóng (shadows) dò tia có thể mô phỏng hiệu ứng ánh sángcho các vật thể trong môi trường. Điều này có nghĩa là dựa trên kích thước nguồn hoặc góc nguồn của ánh sáng, bóng của vật thể sẽ có bóng sắc nét hơn ở gần bề mặt tiếp xúc so với ở xa hơn, nơi bóng mờ hơn và mở rộng hơn. Cùng với việc tiếp đất cho các vật thể trong khung cảnh, bóng dò tia ghi lại các chi tiết tinh tế ở các khu vực như vải bọc, khiến nội thất trở nên chân thực hơn.

Chiếu sáng toàn cảnh (global illumination) mô phỏng cách tương tác tự nhiên của ánh sáng với các vật thể ảnh hưởng đến màu sắc của các vật thể khác trong cảnh. Nó làm tăng đáng kể tính chân thực của cảnh. Với ray tracing, độ chiếu sáng tổng thể được tính toán cho từng khung hình, thay vì được bake trước, nghĩa là ánh sáng có thể thay đổi theo thời gian, chẳng hạn như đèn được bật hoặc tắt, mặt trời mọc hoặc ai đó mở cửa. Lumen trong Unreal Engine là một hệ thống chiếu sáng và phản xạ toàn cảnh sử dụng nhiều phương pháp dò tia.

Ambient occlusion là bóng của các khu vực chặn ánh sáng xung quanh một cách tự nhiên (ánh sáng không đến trực tiếp từ nguồn sáng), ví dụ như các góc và cạnh nơi các bức tường tiếp xúc nhau hoặc các kẽ hở và nếp nhăn trên da. Ambient occlusion được dò tia chính xác hơn nhiều, do đó đáng tin cậy hơn so với ambient occlusion không gian màn hình.

Đối với các kết xuất ngoại thất hoặc nội thất có cửa sổ lớn, việc khắc họa chính xác ánh sáng từ bầu trời là điều cần thiết để tạo ra một khung cảnh đáng tin cậy. Với tính năng ray tracing, bạn có thể sử dụng hình ảnh dải động cao (HDR) để chiếu sáng cảnh, tạo ra các hiệu ứng tinh tế, mềm mại giúp mô phỏng thế giới thực một cách hiệu quả.

Ngoài tất cả những lợi ích kể trên, ray tracing nhìn chung dễ thiết lập và sử dụng hơn nhiều so với các phương pháp được sử dụng để ước tính một số hiệu ứng này trong trình kết xuất raster, chẳng hạn như bóng bản đồ độ sâu, chiếu sáng tổng thể được bake và đầu dò hoặc mặt phẳng phản chiếu.

Ai có thể sử dụng Real-time Ray Tracing?

Mục tiêu của nhiều nhà phát triển trò chơi là làm tăng tính trải nghiệm cho người dùng. Vì vậy, đối với họ, real-time ray tracing là một yêu cầu cấn thiết, đồng thời là một sự phù hợp tự nhiên. 

Real-time ray tracing trong Unreal Engine còn được sử dụng để trực quan hóa kiến ​​trúc, trực quan hóa ô tô, sản xuất ảo cho phim và truyền hình, và các ứng dụng thời gian thực khác. Bất kỳ ứng dụng tương tác nào hướng tới chủ nghĩa hiện thực đều có thể tận dụng phương pháp Real-time ray tracing. Bằng cách mô phỏng ánh sáng tự nhiên, trải nghiệm dò tia theo thời gian thực trở nên sống động và đáng tin cậy hơn nhiều.

Tăng tốc render 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!

Nguồn tham khảo: unrealengine.com
, , , , , , , , , , , , , , , , , , , , , ,

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