Câu hỏi hiện nay đang được đặt ra bởi rất nhiều người quan tâm đến dòng sản phẩm card đồ họa GeForce RTX 20xx mới của NVIDIA, thậm chí là fan của AMD đi chăng nữa. Kiến trúc Turing cùng với Ray Tracing vẫn đang là một dấu chấm hỏi lớn, được kì vọng là bước ngoặt mang tính cách mạng của thị trường GPU, những sản phẩm như vậy có khả năng diện kiến trong đa số PC ở tương lai hay không, hay giá cao ngút trời khiến ít ai có thể sở hữu và sử dụng?
Rất khó để trả lời, vì mặc dù đã có những bài viết, những bài review cho 2 dòng GeForce RTX 2080 FE và GeForce RTX 2080 Ti FE, chúng ta vẫn phải đợi, thậm chí là cả những tựa game hỗ trợ công nghệ cao của card, ở đây là ray tracing.
Tạo ra một bản mô phỏng thế giới thực là một công việc rất phức tạp. Nó bao gồm nhiều yếu tố, như một số lượng vô hạn các chùm ánh sáng, phản chiếu các bề mặt, truyền qua các đối tượng, tất cả đều dựa trên các đặc tính phân tử của từng đối tượng, đấy là chưa kể đến trọng lực và tương tác vật lý. Việc mô phỏng thứ mang tính chất "vô hạn" như vậy nhưng lại chỉ sử dụng tài nguyên hữu hạn của máy tính hiện tại là hoàn toàn không cân xứng và bất khả thi.
Ta gọi một hướng giải quyết cho vấn đề nêu trên là "rasterization", thay vì giải quyết vô hạn các hạt photon, việc xử lý bắt đầu bằng những hình đa giác. Càng nhiều đa giác tức tốc độ xử lý càng nhanh, và rasterization ở đây để biến hàng triệu đa giác kia thành một hình ảnh cụ thể. Nói ngắn gọn, nó tạo ra một bản mẫu 2D và tái hiện chúng trên thế giới 3D đã dựng sẵn. Trong đó, những hình ảnh 2D được tạo nên từ đa giác có thể bao phủ toàn màn hình khi nhìn gần, nhưng có thể chỉ bao phủ một vài pixel khi nhìn xa, từ đó tạo nên các điểm ảnh, kết cấu và nguyên tắc ánh sáng. Tất nhiên một kỹ thuật thì không thể bao quát được toàn bộ công việc. Các kỹ thuật khác nhau như bộ đệm Z (bộ đệm thứ cấp theo dõi độ sâu của mỗi pixel) giúp tăng tốc quá trình, tạo ra một công cụ giúp hàng triệu đa giác đã tạo ra có thể thấy, có thể sắp xếp và xử lý hiệu quả nhất có thể. Điều này có thể yêu cầu hàng triệu, thậm chí hàng tỷ phép tính cho mỗi khung hình mà chỉ GPU hiện đại với tốc độ xử lý teraflops mới có thể xử lý được.
Ray tracing, tiếp cận vấn đề nêu trên khác với rasterization, về mặt lịch sử, nó đã tồn tại trong khoảng 50 năm nay. Turner Whitted hiện đang làm việc cho NVIDIA, trong quá khứ đã phác thảo cách tính toán theo dõi đệ quy, đem lại hình ảnh ấn tượng bao gồm bóng, ánh phản xạ và nhiều thứ hơn nữa. Tất nhiên, nó sẽ phức tạp hơn rasterization cực kỳ nhiều.
Ray tracing liên quan đến việc dò hướng đi của một tia (thường là tia sáng) khi chiếu nó vào thế giới 3D. Giả sử muốn xây dựng một vật thể, việc đầu tiên là xác định các tia sáng theo dõi đa giác tạo nên vật thể đó, sau đó tính đến các nguồn ánh sáng có thể tác động, đặc tính của đa giác như vật liệu, bề mặt phẳng hay cong, nói ngắn gọn là thêm bớt tia sáng. Quá trình này sau đó được lặp lại cho bất kỳ nguồn ánh sáng nào khác, bao gồm cả ánh sáng phản chiếu từ các vật thể có trong khung cảnh. Nó phức tạp đến nỗi, cần nhiều công thức để có thể dò được tia, cho cả các bề mặt trong suốt, bán trong suốt, ví dụ như thủy tinh hoặc nước. Tất cả mọi thứ phải có giới hạn phản chiếu nhân tạo, vì dù là tia đi chăng nữa cũng không thể dò được toàn bộ vô hạn số photon kia.
Thuật toán cho ray tracing được sử dụng phổ biến nhất, theo NVIDIA, đó là BVH Traversal: Bounding Volume Hierarchy Traversal giúp tăng tốc quá trình bằng cách khoanh vùng các đối tượng để xử lý, nói một cách khác là "chia để trị". Bạn có thể tham khảo mô hình con thỏ của NVIDIA sử dụng thuật toán BVH, chúng khoanh vùng từng cấp, chia các bộ phận vào từng khối hộp, nhỏ hơn và nhỏ hơn cho đến khi thuật toán có kết quả là một danh sách ngắn các đa giác, rồi sau đó mới đến công việc của ray tracing. Tuy nhiên khối lượng công việc phải đảm nhận khi thực hiện công việc này bằng phần mềm trên CPU hoặc GPU là quá cao. Một giải pháp thay thế là lõi RT, mỗi lõi RT đều có sẵn thuật toán cấu trúc BVH, giúp nó có khả năng xử lý công việc nhanh hơn gấp 10 lần so với lõi CUDA.
Ngoài ra, cũng phải nói đến việc có bao nhiêu tia sáng dò trên một pixel, chỉ một tia thôi cũng dẫn đến hàng chục, hàng trăm phép tính, nhưng càng nhiều tia theo dõi thì công việc sẽ nhẹ đi, năng suất lại cao hơn. Các công ty như Pixar, cũng sử dụng công nghệ ray tracing để tạo ra hình hoạt. Một bộ phim dài 90 phút với tốc độ khung hình là 60 FPS cần đến 324,000 hình ảnh, mỗi hình ảnh lại mất vài giờ tính toán các tia đang theo dõi từng pixel một. NVIDIA sẽ làm như thế nào để đạt hiệu quả tương đương với thời gian thực như vậy? Ở trên đã đề cập đến sự xuất hiện của lõi RT, nhưng nếu như thế vẫn không đủ, câu trả lời là lõi Tensor chỉ có ở riêng kiến trúc Turing. Ví dụ đơn giản thôi, lấy khối lượng công việc là FP16, lõi Tensor đạt 114 TFLOPS trong khi FP32 thì CUDA chỉ có 14,2 TFLOPS.
Nhưng tại sao lõi Tensor mới đủ trong việc ray tracing? Đó là AI và khả năng tự học, nói cách khác đó là tính năng Deep Learning Super Sampling cho phép trò chơi hiển thị ở độ phân giải thấp hơn mà không cần AA, sau đó lõi Tensor sẽ kế thừa và tác động đến khung hình, khử răng cưa để đem lại độ phân giải cao hơn.
Lời kết, những tên tuổi lớn trong ngành render đã bước chân vào ray tracing như Epic, UE, Unity 3D, EA Frostbite. Thậm chí Microsoft còn tạo ra hẳn DirectX Ray dành riêng cho ray tracing. Với RTX, đây thực sự là một bước nhảy lớn trong ngành đồ họa máy tính, tất nhiên việc nó vẫn chưa hoàn thiện và việc trong vòng mười năm tới để có thể đặt RTX 2080 Ti tại thị trường như một dòng mainstream là hoàn toàn có thể. Hãy cùng xem qua một đoạn video ngắn, giới thiệu khả năng tuyệt vời của ray tracing đến từ NVIDIA:
Project Sol: A Real-Time Ray-Tracing Cinematic Scene Powered by NVIDIA RTX