Đừng cố SPAM, sẽ cấm vĩnh viễn ngay và luôn

Toàn quốc Công nghệ đồ họa NVIDIA RTX Neural Rendering -3D graphics pipeline

phamhoa218

Thành viên cấp 1
Tham gia
23/5/20
Bài viết
693
Thích
0
Điểm
16
#1
Tìm hiểu công nghệ đồ họa RTX Neural Rendering của NVIDIA, khi có những thứ này, một ngày nào đó GPU sẽ không "vẽ" ra frame nữa, mà chúng sẽ "mơ thấy" frame...

Bạn đang dùng GPU gì?

Mọi khi đây có thể là câu hỏi đùa. Vì bình thường mọi người thường nghĩ GPU như card đồ hoạ rời, chip rời (DGP), do không phải ai cũng "may mắn" có điều kiện để sắm thứ như vậy. Nhưng hôm nay, đó là câu hỏi nghiêm túc - bạn đang dùng GPU gì?

Dù ít ai để ý tới, nhưng thực tế mọi thiết bị công nghệ có-dính-tới-màn-hình-hiển-thị hôm nay, từ PC cho tới tablet, smartphone, wearable... đều có GPU. Đơn giản thôi, không có GPU thì chả có cả con chữ đang chình ình trước mắt cho bạn đọc. IGP dù "cùi bắp" tới mức nào thì nó vẫn là GPU. Tất nhiên từng có giai đoạn trong quá khứ việc hiển thị hình ảnh, con chữ không do GPU đảm nhiệm (Direct2D đời đầu) nhưng đó là thời Napoleon rồi. Nên những gì bạn đang thấy trên một màn hình hôm nay (không tính TV hay điện tử gia dụng) dù là 1 inch, 2 inch hay 5.5 inch hay 32 inch, đều là kết quả làm việc của GPU.

Uh thì ai cũng đang dùng GPU để đọc bài viết này. Nhưng nó có can hệ gì tới RTX Neural Rendering (tạm gọi NR) của NVIDIA?

Can hệ ở chỗ kể cả bạn có đang dùng GPU rời xịn xò để đọc bài này thì tương lai chưa chắc nó đã chơi được một số game 3D. Và đừng nghĩ chỉ có game PC mới ảnh hưởng. Game console hay mobile đều có thể bị "liên đới" nếu NR trở thành tiêu chuẩn chính thức để render hình ảnh 3D. Chiếc Nintendo, PlayStation hay Xbox mới sắm của bạn rất có thể sẽ "bó tay" với NR.

Vậy NR là gì? Nói cho gọn đây là phương pháp render hình ảnh mới dựa trên Cooperative Vector (CoopVec) vốn là thành phần mới trong bộ DirectX (DX) 12 mà Microsoft (MS) vừa công bố hồi đầu năm nay. Về mặt chính thức cả AMD và Intel cũng hỗ trợ CoopVec/NR, nhưng thực tế NVIDIA là đơn vị đề xuất ra bộ API này và họ đã "xúi giục" MS "chuẩn hoá" phương pháp trên. Do vậy bài viết này sẽ chủ yếu nói về NR của NVIDIA và những thay đổi nó có thể dẫn đến.

* PS : đợt ra mắt dòng card Blackwell RTX 50 mới đây của NVIDIA bị xem là "thảm hoạ" do hàng loạt sự cố xảy ra. Nó đã dẫn tới một tâm lý tương đối tiêu cực với công ty này lẫn các công nghệ của họ. Cá nhân mình cũng không ưa cái cách NVIDIA đang "đối xử" với PC gamer nhưng "ignorance is bliss". Nếu cứ tâm lý anti mãi đôi khi chúng ta sẽ bỏ lỡ những điều thực sự hay ho. Nên trong bài viết này, mình sẽ cố giữ quan điểm trung lập về NR nói riêng và đồ hoạ 3D nói chung *

>>> Xem thêm: dell t560



Cơ bản về render hình ảnh và rasterization

Trước khi nói về NR và tại sao nó có thể thay đổi cách game 3D làm việc, chúng ta cần nắm rõ một vài vấn đề cơ bản, cụ thể là cách GPU làm việc bao lâu nay và rasterization. Bởi vì theo NVIDIA, game của tương lai sẽ không cần rasterization nữa, tất cả có thể thay bằng ray tracing (thậm chí là path tracing) để tạo ra hình ảnh.

Nhưng cái gì là vector, cái gì là bitmap? Thực tế khi bạn dùng một camera kỹ thuật số (số, không phải phim nhé) để lưu giữ một khoảnh khắc nào đó trong đời sống, là bạn đang thực hiện raster-hoá một chủ thể vector. Bạn biến thứ không-có-độ-phân-giải thành dữ liệu có-độ-phân-giải. Những tấm ảnh 2 MP, 5 MP, 10 MP hoặc hơn đều là dữ liệu bitmap. Chúng có giới hạn về chiều rộng, chiều dài, mỗi chiều có bao nhiêu pixel. Ngoài ra, chủ thể vector ban đầu là chủ thể 3D. Nhưng khi bị raster-hoá, chúng trở thành đối tượng nằm trong mặt phẳng 2D, cụ thể chính là cái màn hình bạn đang đọc chữ/xem ảnh.

Quay lại GPU, mọi hình ảnh mà bạn đang thấy thực chất là ảnh 2D, bất kể bạn đang mở desktop, xem youtube hay chơi game 3D. Cái font chữ mà bạn dùng trong file Word hay HTML ban đầu đều là dữ liệu vector, nhưng khi bạn chọn một màn hình có một độ phân giải cụ thể, thì những gì bạn thấy trên màn hình chính là dạng bitmap của nó. Nói cách khác, mọi thứ được raster-hoá để chuyển thành ảnh 2D có kích thước cụ thể.





Dĩ nhiên, những dữ liệu đã là bitmap sẵn (ảnh chụp camera, màn hình...) thì chúng không cần raster-hoá nữa. Trừ phi bạn thay đổi tỷ lệ thể hiện trên màn ảnh (phóng to, thu nhỏ), thay đổi thuộc tính của chúng (biên tập, chỉnh sửa) thì xuất hiện thêm quá trình raster-hoá thứ cấp. Ở đây, do bản chất hiển thị dữ liệu 2D không phải chủ đề chính, nên mình sẽ tập trung vào hình ảnh/đồ hoạ 3D.

>>> Xem thêm: dell r660



Ống lệnh đồ hoạ 3D

Về khái quát, để tạo ra một ảnh đồ hoạ 3D cơ bản có 3 bước - (1) ứng dụng gửi yêu cầu, (2) lập mô hình 3D (dạng vector), (3) raster-hoá mô hình 3D thành ảnh 2D. Ngoài ra có thể tính thêm bước (4) nữa là xuất ảnh ra màn hình nhưng thường sau rasterization là hình ảnh đã tạo ra xong nên bước này thường không được nhắc tới.




Trong đó bước (1) thực hiện trên CPU nên mình bỏ qua. Chỉ bước (2) và (3) là quan trọng.

Cơ bản mà nói, bước (3) y hệt cách chúng ta dùng camera để chụp hình một chủ thể nào đó đã nêu ở trên. Nhưng trước khi "chụp hình" thì phải tồn tại chủ thể. Bước (2) chính là quá trình tạo ra chủ thể.

Đầu tiên GPU sẽ vẽ ra các điểm (vertex). Bạn có thể mở lại SGK môn Hình học để hình dung rõ hơn. Từ các điểm này, GPU nối chúng lại thành đoạn/đường thẳng (line). Nối nhiều đường lại, chúng ta có mặt phẳng (plane). Trên mặt phẳng sẽ có đa giác (polygon). Số lượng đa giác càng nhiều thì mô hình sẽ càng chi tiết cũng như sẽ tốn nhiều công sức để vẽ hơn. Đây là lý do tại sao có meme về Lara Croft đời đầu có những khu vực mà-ai-cũng-biết đều là khối tam giác thô kệch, trong khi phiên bản sau này tròn-đều hơn rất nhiều. Đó chính là sự khác biệt giữa số lượng đa giác dùng để tạo mô hình 3D (dĩ nhiên còn vì GPU ngày xưa yếu hơn rất nhiều).

Nói thêm trong quá trình vẽ đa giác, bắt đầu từ DX 11 trở đi bổ sung thêm một thành phần gọi là tessellator. Bạn có thể đọc là bộ rạn hoá (tessellate) hoặc bộ tăng cường đa giác cũng được. Mục đích là GPU sẽ tự động vẽ thêm đa giác vào mô hình gốc mà designer tạo ra từ trước, thông qua hệ số TessFactor. Lý do chủ yếu để tiết kiệm thời gian mà designer cần bỏ ra cho một chủ thể nào đó. Nếu game có vài chục ngàn vật thể thì thiết kế chi tiết toàn bộ rất tốn công. Với tessellator, những chủ thể vô định hình như hòn đá, cành cây... có thể được vẽ chi tiết hơn một cách tự động.

Sau giai đoạn dựng hình khối (geometry) sẽ là giai đoạn chuyển đổi góc camera. Nó tương ứng như khi chụp ảnh ngoài đời, bạn di chuyển camera đến vị trí nào đó để có góc nhìn (viewport) ưng ý nhất. Ở đây, ngoài yếu tố chiều rộng (x), chiều cao (y) vốn có trên một ảnh 2D ra thì còn chiều sâu (z) tuy chúng ta không thấy được nhưng nó sẽ đóng vai trò quan trọng trong việc thể hiện độ xa gần của chủ thể cũng như dùng trong xử lý hậu kỳ. Mục đích của giai đoạn này là định hình những yếu tố nào sẽ được render tiếp ở các bước sau (thứ không có trong khung hình không cần render).

Giai đoạn tiếp theo là chiếu sáng (lightning). Bản chất các đa giác vốn dĩ không có màu sắc hay ánh sáng. Chỉ tới khi được chiếu sáng thì chúng mới "hiện nguyên hình". Khu vực bề mặt nào gần nguồn sáng hơn thì nó... sáng lên và khu vực bề mặt xa hơn (nếu không có nguồn sáng khác) sẽ tối đi. Ở đây cần phân biệt thuật toán chiếu sáng này không phải là dò tia (raytrace/pathtrace). Chúng ta sẽ nói rõ hơn ở khúc sau.

Sau khi các chủ thể đã "hiện hình" rồi thì cần làm gì? Vì bản chất khung hình là 2D, sẽ có những chi tiết bị che khuất. Chủ thể nào "đứng sau" (dựa trên thông số chiều sâu Z) sẽ bị "cắt" (clipping/culling) khỏi khung hình. Chỉ phần nào "thấy được" thì dữ liệu của nó mới được gửi tiếp qua công đoạn sau.

Thực tế mà nói, chúng ta vẫn còn phát sinh nhiều cái khác nhưng để giữ cho mọi thứ đơn giản nhất có thể, bạn chỉ cần nhớ một ống lệnh đồ hoạ 3D gồm các bước dựng mô hình - chiếu sáng - đổ vật liệu - dựng pixel. Và từ các bước này hình thành ra các đơn vị chức năng như vertex shader, geometry shader, pixel shader, texture mapping unit (TMU)...

Công ty cổ phần thương mại Máy Chủ Hà Nội

Trụ sở Hà Nội: Tầng 1,2,4 - Tòa nhà PmaxLand số 32 ngõ 133 Thái Hà - Q. Đống Đa

- Hotline: 0979 83 84 84

- Tel: 024 6296 6644

Chi nhánh HCM: Lầu 1- Tòa nhà 666/46/29 Đường 3/2- Phường 14 - Quận 10

- Hotline: 0945 92 96 96

- Tel: 028 2244 9399

- Email: kinhdoanhhn@maychuhanoi.vn
 

Đối tác

Top