[JUSTIFY]GSM.vn - Ở phần trước, chúng ta đã nói về Rasterizer Ordered Views. Trong phần này, chúng ta điểm qua nốt 3 tính năng còn lại gồm Typed UAV Load, Volume Tiled Resources và Conservative Rasterization.[/JUSTIFY] [JUSTIFY] [/JUSTIFY] [JUSTIFY]Typed UAV Load[/JUSTIFY] [JUSTIFY] [/JUSTIFY] [JUSTIFY]Tạm dịch - Tải UAV có phân loại.[/JUSTIFY] [JUSTIFY]Đọc thêm 14 thiết bị công nghệ ấn tượng sẽ xuất hiện trong năm 2015[/JUSTIFY] [JUSTIFY]UAV hay Unordered Access Views (tạm dịch Chế độ xem ảnh không có thứ tự) mặc dù có những nhược điểm như đã nêu ở phần trước, song nó vẫn là phương pháp vẽ hình chính hiện nay. Và tất cả các game hiện có trên thị trường đều sử dụng UAV, thế nên dù "thích" hay "không thích", Microsoft (MS) vẫn phải hỗ trợ nó (nếu không thì sao DX 12 có thể chạy được các tựa game cũ). Nhưng hơn cả mức hỗ trợ, nhà khổng lồ phần mềm còn giúp cải thiện phương pháp UAV thêm nữa.[/JUSTIFY] [JUSTIFY]Trong quá trình toán đồ hoạ, thực tế có rất nhiều đối tượng được vẽ đi vẽ lại nhiều lần. Và để tiết kiệm tài nguyên, DX cho phép tạo ra các bộ nhớ đệm (buffer) giúp giữ lại thông tin về quá trình vẽ ra các đối tượng này. Các luồng xử lý (thread) khác nhau có thể truy cập lại các bộ nhớ đệm trên để tiết giảm công sức tính toán lại chúng, nhưng chỉ sau khi luồng trước truy cập xong thì luồng sau mới được phép truy cập tiếp. Lấy ví dụ như việc bạn xếp hàng để... đi toilet nếu như văn phòng của bạn chỉ có 1 toilet duy nhất.[/JUSTIFY] [JUSTIFY] [/JUSTIFY] [JUSTIFY]Tải UAV có phân loại mà MS đề ra trên DX 12 giúp loại bỏ việc các luồng xử lý phải chờ tới lượt của mình. Điều này tương tự như văn phòng bạn có 3 - 4 toilet riêng mà bạn sẽ không phải chờ đợi quá lâu để "xả tâm sự". Nhưng dù sao, như cái tên của nó, loại bộ nhớ đệm này chỉ có thể cho phép nhiều luồng truy cập cùng lúc chỉ khi dữ liệu chứa trong nó đã được phân loại rõ. Nôm na như toilet nam và nữ, bạn không thể "ào ào" chạy vô được.[/JUSTIFY] [JUSTIFY] [/JUSTIFY] [JUSTIFY]Volume Tiled Resources (VTR)[/JUSTIFY] [JUSTIFY] [/JUSTIFY] [JUSTIFY]Tạm dịch - Các ô tài nguyên không gian hoặc các khối tài nguyên 3D.[/JUSTIFY] [JUSTIFY] [/JUSTIFY] [JUSTIFY]Tính năng mới thứ 3 của DX 12 là một giải pháp nhằm tiết kiệm tài nguyên bộ nhớ DRAM trong bối cảnh độ phân giải của màn hình ngày càng tăng (màn hình 4K, AMD Eyefinity, NVIDIA 3D Surround). Con số này càng cao thì lượng dữ liệu texture và pixel ngày càng nhiều.[/JUSTIFY] [JUSTIFY] [/JUSTIFY] [JUSTIFY]Trong đồ hoạ máy tính, texture hay còn gọi là vân bề mặt, vân vật liệu, vật liệu... Khi một mô hình 2D hoặc 3D được vẽ lên, thường chúng chỉ là các khối hình trụ, lục lăng hoặc cầu nhưng không hề có màu sắc hay văn hoa hay các đặc tính để phân biệt chất liệu làm nên chúng (gỗ, nhựa, kim loại hay thứ khác). Texture là thứ sẽ được "sơn" lên bề mặt của những khối này để chúng ta phân biệt đâu là cục gỗ còn đâu là khối sắt (vân vật liệu)[/JUSTIFY][JUSTIFY]Chúng ta bắt đầu có khái niệm megatexture vốn là giải pháp sử dụng một khối texture có diện tích lớn để thay thế việc ghép nhiều khối texture diện tích nhỏ lại với nhau. Ưu điểm của megatexture là đối với trình quản lý bộ nhớ của GPU, nó không cần phải nhớ quá nhiều cái tên của từng khối texture nhỏ (ví dụ txt_1, txt_2, txt_3, txt_4...) và vị trí của chúng trên màn ảnh (ví dụ x100_y203, x111_y207, x123_y357...), mà chỉ cần nhớ một vài cái tên texture lớn. Megatexture đồng thời còn dùng ít bộ nhớ GPU hơn do có những khu vực "trống" vốn không chứa dữ liệu trong chúng. Khi nào game cần những texture nhỏ hơn, chúng sẽ thu nhỏ các megatexture lại cho phù hợp với kích thước yêu cầu.[/JUSTIFY] [JUSTIFY]Để vấn đề này bớt hàn lâm hơn, bạn hãy thử hình dung tới trò chơi xếp hình jigsaw với hàng chục mảnh ghép khác nhau như trên đây, có tới 10 x 11 = 110 mảnh nhỏ. Bạn sẽ phải nhớ chính xác vị trí cũng như mã số của từng mảnh để cho được bản ghép hoàn chỉnh. Việc này sẽ khiến bạn phải nhớ rât nhiều, và đôi khi sẽ phát sinh lỗi "nhớ nhầm" vị trí của mảnh này qua mảnh khác. Nhưng nếu chia bản ghép ra chỉ còn 2 x 5 = 10 mảnh lớn thì không quá khó để nhớ chính xác vị trí từng mảnh như trước. 10 mảnh lớn đấy chính là megatexture.[/JUSTIFY] [JUSTIFY]Và ý niệm đó hình thành nên VTR hay megatexture3D (3 chiều). Nếu ở tấm hình jigsaw là một mặt phẳng 2D và các texture có 2 cạnh dài & rộng thì trong mô hình 3D, chúng ta có thêm cạnh thứ 3 là chiều sâu (texture3D). Trong hình 3D minh hoạ ở trên, bạn có thể thấy có những vị trí "rỗng" (empty), những vị trí đó nếu áp dụng texture3D một cách máy móc sẽ cực kỳ hao bộ nhớ của GPU (tới 1,6 GB). Song nếu nhà phát triển game sử dụng VTR, chỉ áp dụng texture3D cho những vị trí "không rỗng" (non-empty), thì dung lượng bộ nhớ GPU cần dùng sẽ cực thấp (156 MB). VTR chính là megatexture khi được bổ sung thêm chiều sâu.[/JUSTIFY] [JUSTIFY]Đọc thêm Những sản phẩm công nghệ tốt nhất 2014[/JUSTIFY] [JUSTIFY]Conservative Rasterization[/JUSTIFY] [JUSTIFY] [/JUSTIFY] [JUSTIFY]Tạm dịch - Vẽ lại không mất nét.[/JUSTIFY] [JUSTIFY]Quá trình vẽ lại (raster, xem ở phần 1) vốn phụ thuộc vào độ phân giải của game. Nếu độ phân giải càng cao thì số lượng chi tiết cần vẽ lại sẽ càng nhiều. Nhưng ở độ phân giải thấp, một số chi tiết sẽ mất đi. Ví dụ như khi chúng ta chụp hình bằng máy ảnh rồi thu nhỏ tấm ảnh lại (từ 3000 x 1500 pixel xuống 1500 x 750 pixel chẳng hạn), sẽ có rất nhiều thứ bị loại bỏ. Như ở tấm ảnh chụp thành phố sau khi được thu nhỏ dưới đây, sẽ có những thứ không còn nhìn rõ ví như người đang đi trên phố, xe đang chạy. Bất kể là bạn phóng to bức hình trở lại như kích thước ban đầu, các chi tiết trên vẫn mất.[/JUSTIFY] [JUSTIFY]Lẽ tất nhiên, chúng ta không hề muốn mất đi các chi tiết khi vẽ lại một khung cảnh nào đấy. Ví dụ trong một game phiêu lưu tìm đường, việc thiếu hụt chi tiết ở độ phân giải 720p so với 1080p sẽ gây thiệt thòi cho những người chơi game trên máy có cấu hình thấp, vì có thể đường đi ở ngay đó nhưng họ lại không thấy do hình ảnh bị thu nhỏ đi.[/JUSTIFY] [JUSTIFY] [/JUSTIFY] [JUSTIFY]Nhưng làm sao để giảm thiểu tình trạng mất nét? Điều đó tuỳ thuộc vào thuật toán vẽ lại mà game áp dụng. Trong thuật toán vẽ lại tiêu chuẩn hiện nay, một pixel được xem là "tồn tại" nếu như các đường nét của đối tượng cắt qua điểm trung tâm của pixel đó (tức phần diện tích nằm đè lên pixel >= 50%). Nếu không cắt qua tâm điểm, pixel đó bị xem là "không tồn tại" và sẽ không được vẽ lại. Nói cách khác, đối tượng mà chúng ta muốn xem bị "cắt xén" các nét trên màn hình.[/JUSTIFY] [JUSTIFY]Như hình minh hoạ trên đây, ở bên trái là thuật toán vẽ lại hiện nay. Tam giác màu đỏ hoàn toàn không đi qua tâm điểm của một pixel nào. GPU sẽ không tái hiện lại nó trên màn hình mặc dù trong mô hình thật, nó vẫn có mặt! Tương tự với tam giác màu xanh bên cạnh, số pixel thể hiện nó sẽ ít đi.[/JUSTIFY] [JUSTIFY] [/JUSTIFY] [JUSTIFY]Và vẽ lại không mất nét - tính năng mới của DX 12 - nhằm khắc phục tình trạng "có mà bị bỏ lơ" trên. Chỉ cần các nét vẽ đối tượng có "chạm" vào bất kỳ cạnh nào của pixel, thì pixel đó "tồn tại". Như ở hình bên phải, tam giác đỏ sẽ xuất hiện còn tam giác xanh sẽ được mô tả bằng nhiều pixel hơn.[/JUSTIFY] [JUSTIFY]Có lẽ bạn đang thắc mắc - vậy tại sao không dùng phương pháp vẽ lại ngay từ trước mà bây giờ mới dùng? Chính là vấn đề tốc độ xử lý của GPU. Ở phương pháp cũ, GPU chỉ cần tính toán 1 lần xem phần chồng lên pixel có chiếm >= 50% diện tích pixel hay không. Còn với phương pháp mới, GPU sẽ phải tính toán tới 2 lần rằng có phần diện tích nào của pixel bị chiếm hay không, nếu có, thì pixel đó "nên" thuộc vào đối tượng nào trong trường hợp nếu cả 2 đối tượng đều cùng "đè lên" 1 pixel. Do vậy, tốc độ tính toán của GPU sẽ bị giảm đi một chút vì phát sinh thêm nhiều phép kiểm tra khác.[/JUSTIFY] [JUSTIFY] [/JUSTIFY] [JUSTIFY]Sơ kết[/JUSTIFY] [JUSTIFY] [/JUSTIFY] [JUSTIFY]Các tính năng mới mà MS làm ra cho DX 12 không có tác dụng "làm đẹp" thêm cho game. Ngược lại, chúng nhằm mục đích giúp nhà phát triển game quản lý các tài nguyên đồ hoạ tốt hơn, vận hành chính xác và hợp lý hơn. Bạn sẽ không thấy game DX 12 đẹp đẽ hơn DX 11 ở chi tiết nào.[/JUSTIFY] [JUSTIFY]Đọc thêm Chủ tịch Google: Đừng sợ trí thông minh nhân tạo[/JUSTIFY] [JUSTIFY]Nhưng bù lại, nhờ việc sử dụng tài nguyên hợp lý hơn, các tựa game mà chúng ta chơi sẽ mượt mà hơn, đạt được mức fps (frame per second) cao hơn. Nói cách khác, DX 12 sẽ giúp những người sở hữu những chiếc máy cũ chơi game tốt hơn so với trước, thay vì ở mức 20 fps trên DX 11 thì bạn sẽ có được 25 - 30 fps khi chạy trên DX 12. Và như thế, là ít "lag" hơn rồi![/JUSTIFY] Tham khảo AnandTech, Microsoft