Header ads

Header ads
» »

Công nghệ đồ họa NVIDIA RTX Neural Rendering - Ray tracing, path tracing và rasterization

Tiếp tục câu chuyện về cấu tạo cơ bản của GPU, 2 loại nhân đặc biệt là RT core và Tensor core, đồng thời so sánh giữa khung hình thật - khung hình ảo. Trong nội dung bài viết này sẽ nhắc tới ray tracing, path tracing và rasterization, những thuật ngữ này là gì và có vai trò thế nào trong đồ họa.

Ray tracing và path tracing


Nếu để so sánh cái gì "chuẩn" đồ hoạ hơn, thì RT là thứ thực tế hơn tensor core. Vì AI suy cho cùng mới bắt đầu bùng nổ khoảng 1 thập kỷ trở lại đây. Còn ray trace là thứ đã được đề cập từ hàng thập niên trước, với mục đích tạo ra những hình ảnh chân thực nhất có thể (đúng hơn là path tracing, nhưng dù sao cũng là bản cao cấp của ray trace).

light interaction.webp
Sự tương tác của ánh sáng với vật chất là điều kiện cơ bản cho sinh vật phát triển thị giác

Bạn có thể cũng đã biết ray trace là gì. Nói cho đúng, mọi thứ mà chúng ta "thấy" đều là kết quả của phản ứng quang điện khi mà tia bức xạ khả kiến từ môi trường xung quanh đập vào tế bào hình nón nằm trong đáy mắt mỗi người, từ đó chuyển thành tín hiệu điện gửi lên vỏ não. Hay nói cho gọn, bức xạ khả kiến (hay tia sáng) là "ngôn ngữ" để mắt "đọc" thế giới. Và khi chúng ta có thể "tính" được tia sáng thì chúng ta mô phỏng được thế giới.


Vấn đề ở chỗ nếu nhớ phần quang học trong SGK Lý, bạn sẽ biết khi 1 tia xạ tiếp xúc 1 bề mặt vật chất, sẽ xảy ra 3 hiện tượng - phản xạ, khúc xạ và hấp thụ bức xạ. Trong đó tuỳ theo bản chất vật liệu, mà tỷ lệ % của từng hiện tượng sẽ khác nhau. Có vật liệu sẽ phản xạ mạnh (gương bóng), khúc xạ mạnh (lăng kính, chất lỏng), hấp thu mạnh (bề mặt đục nhám). Và khi tất cả các nguồn xạ này giao thoa lẫn nhau thì... việc tính toán chúng quả thực là ác mộng!

Plan-de-travail-9ray-vs-path copy.jpg
Plan-de-travail-10ray-vs-path copy.jpg
Path tracing mô tả chính xác nhất cách ánh sáng tương tác với tất cả mọi vật thể gồm cả phản xạ, khúc xạ, hấp thụ

Plan-de-travail-8raytracing-illustration copy.jpg
Còn ray tracing là phiên bản "giản hoá" của path tracing với số lần va chạm thấp hơn

Nhưng điều không thể phủ nhận là chúng ta có thể tính toán chi tiết từng tia sáng tới mức nào thì hình ảnh chúng ta có được sẽ càng thật từng ấy. Đến đây, chúng ta có 2 phương hướng để mô phỏng tia sáng là ray tracing và path tracing. Và những gì mình vừa trình bày thực chất là path tracing - bạn cần tính toán tất cả mọi nguồn sáng cả từ trực tiếp, gián tiếp, xuyên thấu, bị hấp thụ... Mỗi khi 1 tia sáng tiếp xúc 1 bề mặt, 1 bài toán mới phát sinh và cứ thế cho tới khi nó bị hấp thụ hoàn toàn hoặc "đâm vào" camera.

Do path tracing quá nặng nề về mặt tính toán nguồn sáng như thế, chúng ta có phương hướng "nhẹ nhàng" hơn là ray tracing. Tuy cũng là "dò tia" nhưng thay vì bắt đầu từ nguồn sáng như path tracing thì ray tracing "dò ngược" tia sáng từ camera tới vật thể, rồi từ vật thể đi ngược lại nguồn sáng (thứ cấp). Do đặc trưng này, ray tracing bị thiếu yếu tố nguồn sáng toàn cục (global illumination), cũng như không tính được trọn vẹn số lượng tia sáng thực tế phải có. Bù lại thì "chi phí" điện toán của ray tracing thấp hơn và chúng ta có thể chủ động chọn số lần phản xạ để GPU vẫn có thể đáp ứng được lượng fps tối thiểu.

path-tracing-ray-tracing-rasterization.webp

Quảng cáo


So sánh chất lượng hình ảnh giữa path tracing, ray tracing và chiếu sáng truyền thống

Nhìn chung, khung hình do path tracing tạo ra thường có độ sáng cao nhất (vì tính tất cả mọi nguồn sáng), ray tracing ít sáng hơn (do không tính toàn bộ mọi nguồn sáng) còn raster cho độ thật thấp nhất (do ánh sáng được giả lập chứ không tính tới đường đi đúng của chúng).

Ray tracing so với Rasterization


Thành thật mà nói, những game gắn mác ray tracing đang có hiện nay không hoàn toàn là ray tracing. Phần lớn chúng vẫn được dựng hình bằng cách "truyền thống". Ray tracing được đưa vào như một giải pháp xử lý hậu kỳ để cải thiện chất lượng ánh sáng. Nguyên nhân chủ yếu vì mọi GPU đang có trên thị trường đều có shader core để xử lý raster, nhưng không phải GPU nào cũng có nhân xử lý ray tracing để phục vụ chức năng trên. Thế nên "mác" game thì thế nhưng cái "ruột" vẫn không thay đổi nhiều lắm.

Vậy thế nào là ray tracing/path tracing "chuẩn"?

Ray tracing and Rasterization pipeline.jpg
So sánh ống lệnh raster và ray tracing

Quảng cáo


Như đã nói, raster là quá trình tạo ra ảnh 2D từ mô hình 3D, có nghĩa quá trình tạo frame sẽ kết thúc ở công đoạn hoàn tất từng pixel. Song ray/path tracing thì ngược lại, mọi thứ khởi đầu từ từng pixel. Cụ thể khi bạn đã chọn độ phân giải, thì mỗi pixel sẽ có một tia dò đi qua. Khi những tia này chạm bề mặt vật thể, giá trị pixel sẽ thay đổi với cái màu mà nó nhận được. Tất nhiên số lần va chạm càng nhiều thì giá trị pixel cũng sẽ thay đổi liên tục. Nói cách khác, mục đích sau cùng của ray tracing chính là xác định giá trị cuối của pixel sau bao nhiêu lần va chạm đó. Với độ phân giải 1080p thì chúng ta cần tính toán giá trị của 1920 x 1080 = 2.073.600 tức hơn 2 triệu pixel. Với 1440p thì khoảng 3,7 triệu pixel và 2160p vào khoảng 8,3 triệu pixel.

Nghe có vẻ nhiều quá nhỉ?

Thực tế nhiều hay ít thì độ phân giải mới chỉ là một phần. Vì ở raster thì mục đích cũng là định lượng từng pixel có giá trị bao nhiêu. Và thực tế với số lượng shader core, tensor core, RT core nhiều như hiện nay, mỗi giây chúng đều có thể thực hiện được hàng tỷ phép tính, thì vài triệu pixel cũng không phải quá nhiều với GPU hiện đại (tất nhiên GPU đời cũ thì không mạnh như này được).


Điểm qua chất lượng hình ảnh 1 số game ray tracing hiện có. Có thể thấy game nào đặt ray tracing là trọng tâm thì khác biệt rất rõ ràng. Nhưng những game vẫn lấy raster làm nền móng thì gần như không phân biệt được. Cái gì tốt hơn thực tế dựa trên lựa chọn của nhà làm game

Và suy cho cùng ống lệnh 3D truyền thống hiện tại cực kỳ phức tạp. Những gì mình viết ở phần trước chỉ là cơ bản nhất. Còn để tạo ra một game "giống thật" nhất có thể, nhà phát triển phải nhồi nhét vô đó hàng chục tính năng để tạo ra đủ hiệu ứng cháy nổ, vật lý, cinematic, DOF... Một số đôi khi chồng lấn lên nhau và nghiễm nhiên làm cho khối lượng công việc cần tính toán nhiều gấp bội. Có những thứ khi đã raster chán chê nhưng qua xử lý hậu kỳ bị cắt bớt...

Thế nên tuy raster về cơ bản là "nhanh lẹ" hơn ray tracing song khi áp dụng vô thực tế, mỗi một hiệu ứng được thêm vào là thêm một gánh nặng cho GPU. Từ đây dẫn tới chuyện nếu một game ray tracing 100% thì có khi nó lại "mượt" hơn game raster full hiệu ứng. Dĩ nhiên số lượng RT core mà GPU đó có cũng là yếu tố then chốt để tính ray tracing nhanh hay chậm. Nhưng bạn có thể hình dung được con đường nào cũng có những hạn chế của riêng mình.

Khóa học Machine Learning cơ bản- Khoa học dữ liệu - AI
==***==

Khoá học Quản trị Chiến lược Dành cho Lãnh đạo Doanh nghiệp

Nhấn vào đây để bắt đầu khóa học

==***==
Nơi hội tụ Tinh Hoa Tri Thức - Khơi nguồn Sáng tạo
Để tham gia khóa học công nghệ truy cập link: http://thuvien.hocviendaotao.com
Mọi hỗ trợ về công nghệ email: dinhanhtuan68@gmail.com
--- 

Khóa học Hacker và Marketing từ A-Z trên ZALO!

Khóa học Hacker và Marketing từ A-Z trên Facebook!

Khóa đào tạo Power BI phân tích báo cáo để bán hàng thành công

Bảo mật và tấn công Website - Hacker mũ trắng
Hacker mũ trắng
KHÓA HỌC LẬP TRÌNH PYTHON TỪ CƠ BẢN ĐẾN CHUYÊN NGHIỆP

Khóa học Lập trình Visual Foxpro 9 - Dành cho nhà quản lý và kế toán

Khóa học hướng dẫn về Moodle chuyên nghiệp và hay
Xây dựng hệ thống đào tạo trực tuyến chuyên nghiệp tốt nhất hiện nay.



Khóa học AutoIt dành cho dân IT và Marketing chuyên nghiệp

Khoá học Word từ cơ bản tới nâng cao, học nhanh, hiểu sâu


Khóa học hướng dẫn sử dụng Powerpoint từ đơn giản đến phức tạp HIỆU QUẢ
Khóa học Thiết kế, quản lý dữ liệu dự án chuyên nghiệp cho doanh nghiệp bằng Bizagi
Khoa hoc hay
Khóa học Phân tích dữ liệu sử dụng Power Query trong Excel

Khóa học Lập trình WEB bằng PHP từ cơ bản đến nâng cao

Khóa học Phân tích dữ liệu sử dụng TableAU - Chìa khóa thành công!
Nhấn vào đây để bắt đầu khóa học


Khóa học Phân tích dữ liệu sử dụng SPSS - Chìa khóa thành công!


Khóa học "Thiết kế bài giảng điện tử", Video, hoạt hình 
kiếm tiền Youtube bằng phần mềm Camtasia Studio
Khóa học HƯỚNG DẪN THIẾT KẾ VIDEO CLIP CHO DÂN MARKETING CHUYÊN NGHIỆP
Xây dựng website​​​​
HƯỚNG DẪN THIẾT KẾ QUẢNG CÁO VÀ ĐỒ HỌA CHUYÊN NGHIỆP VỚI CANVA
Hãy tham gia khóa học để trở thành người chuyên nghiệp. Tuyệt HAY!😲👍
Khoa hoc hay
MICROSOFT ACCESS



GOOGLE SPREADSHEETS phê không tưởng
Khoa hoc hay
Khóa hoc lập trình bằng Python tại đây

Hãy tham gia khóa học để biết mọi thứ

Để tham gia tất cả các bài học, Bạn nhấn vào đây 

Khóa học lập trình cho bé MSWLogo
Nhấn vào đây để bắt đầu học
Nhấn vào đây để bắt đầu học


Khóa học Ba, Mẹ và Bé - Cùng bé lập trình  TUYỆT VỜI

Khoa hoc hay

Khóa học sử dụng Adobe Presenter-Tạo bài giảng điện tử
Khoa hoc hay
Design Website

Để thành thạo Wordpress bạn hãy tham gia khóa học 
Khóa học sử dụng Edmodo để dạy và học hiện đại để thành công
==***==
Bảo hiểm nhân thọ - Bảo vệ người trụ cột
Cập nhật công nghệ từ Youtube tại link: congnghe.hocviendaotao.com
Tham gia nhóm Facebook
Để tham gia khóa học công nghệ truy cập link: http://thuvien.hocviendaotao.com
Mọi hỗ trợ về công nghệ email: dinhanhtuan68@gmail.com

Nguồn: Tinh Tế

About Học viện đào tạo trực tuyến

Xinh chào bạn. Tôi là Đinh Anh Tuấn - Thạc sĩ CNTT. Email: dinhanhtuan68@gmail.com .
- Nhận đào tạo trực tuyến lập trình dành cho nhà quản lý, kế toán bằng Foxpro, Access 2010, Excel, Macro Excel, Macro Word, chứng chỉ MOS cao cấp, IC3, tiếng anh, phần mềm, phần cứng .
- Nhận thiết kế phần mềm quản lý, Web, Web ứng dụng, quản lý, bán hàng,... Nhận Thiết kế bài giảng điện tử, số hóa tài liệu...
HỌC VIỆN ĐÀO TẠO TRỰC TUYẾN:TẬN TÂM-CHẤT LƯỢNG.
«
Next
Bài đăng Mới hơn
»
Previous
Bài đăng Cũ hơn