DirectX 10 , những điều cần biết

Bất kì khi nào việc nâng cấp công nghệ đồ hoạ sẽ đưa cho người tiêu dùng tiến thoái lưỡng nan : chọn những sản phẩm rẻ hơn nhưng thế hệ cũ , hoặc những sản phẩm thế hệ mới nhưng lại đắt tiền ?
  1. DirectX 10 sẽ mang lại cho chúng ta những gì ?

 Bất kì khi nào việc nâng cấp công nghệ đồ hoạ sẽ đưa cho người tiêu dùng tiến thoái lưỡng nan : chọn những sản phẩm rẻ hơn nhưng thế hệ cũ , hoặc những sản phẩm thế hệ mới nhưng lại đắt tiền ?

 Người tiêu dùng ngờ vực bởi vì họ không hiểu sâu sắc những tính năng sáng tạo của những sản phẩm thế hệ mới , và hôm nay , chúng tôi sẽ giải thích những điều khoản của mức độ công nghệ , đánh giá những hình ảnh trong Game và những kiểm tra hiệu suất Game để chứng minh những công nghệ mới và những tính năng ưu việt của DirectX 10 .

 Bây giờ những Card màn hình có tốc độ đáng kinh ngạc , nhưng Microsofts DirectX API còn lâu mới bước kịp điều này . Nhìn lại lịch sử , thời gian mở rộng DirectX 9 (DX9) API được coi như rất dài . Nó cũng trải qua DX9b và đi tới DX9c  , thêm vào Shadow Model 3.0 và HDR cũng để mở rộng thời gian tồn tại của DX9.

 Tuy nhiên , nhiều đặc điểm mới kết hợp trong trào lưu công nghệ ngày càng tăng , cấu trúc DX9 truyền thống đã gặp nhiều “nút thắt cổ chai” và không thể cải thiện thực chất về chất lượng của Game hoặc nhiều hiệu suất cao siêu , do đó DX10 xuất hiện . DX10 không chỉ củng cố mà nó cũng làm thay đổi đột ngột từ khi DX7 bắt đầu dần dần xây dựng cùng với cấu trúc đồ hoạ phức tạp tăng lên và điều đó có thể được nói chính là thay đổi hòn đá chắn lỗi trong sự phát triển của Card màn hình .

 Để sử dụng Microsofts DX10 API , có hai nhà sản xuất Card màn hình chính đó là nVidia và AMD/ATI . Họ đều theo đuổi những kế hoạch riêng của mình , từ những tình hình hiện tại , dòng sản phẩm nVidia đang chiếm ưu thế bởi vì họ có một loạt sản phẩm từ mức High-End , Mid-End và Low-End đã được bán hớn sáu tháng nay .

  \"/\"

 Hình 1 : Những dòng cao cấp Card màn hình của nVidia GeForce 8800 Ultra , GTX và GTS

 

\"/\"

Những Card màn hình mức trung bình và mức thấp của nVidia GeForce 8600/8500

 Những sản phẩm AMD/ATI phát hành chậm hơn 03 dòng với 05 sản phẩm và giá của nó từ mức cao cấp , mức trung và mức thấp . Sản phẩm cao cấp HD 2900XT đã được bán , và mức trung cùng với mức thấp cũng đã được phát hành .

 

\"/\"

Hình 2: Những Card màn hình DX10  của AMD/ATI 2900XT , dòng 2600 và 2400

 

Tôi sẽ minh hoạ sự tốt hơn của những sản phẩm thế hệ mới trong Game DX10 . Chỉ có những Game DX10 có thể chạy thực sự với những Card màn hình có tính năng kỹ thuật của DX10 . Do vậy chúng ta sẽ dùng những Game chạy thử để minh hoạ những kết luận .

 

  1. Công nghệ DX10 : từ DX7 tới DX10 , sự phát triển làm kinh ngạc của Card màn hình

 Trong thế kỉ trước , công nghiệp đồ hoạ đã vào thời kì hoàng kim , với sự nâng cấp liên tục của bộ vi xử lí , phần cứng của tất cả hệ thống làm so hiệu suất của hệ thống ngày càng tăng lên , đơn giản nhất chúng ta thấy đó là sự sản xuất thiết bị tăng tốc độ của hệ thống . Và công nghiệp đồ hoạ trong thời gian đó tìm ra cơ hội phát triển truy cập tốc độ cao . Các nhà phát triển Game tiếp tục dựa theo những thiết kế mới về phần cứng cũng liên tục đưa ra những phiên bản cho Game , nâng cao chất lượng hình ảnh và hiệu suất trong khi chơi .

 nVidia và ATI dần dần lớn lên để trở thành những công ty đồ hoạ lớn nhất . Sự cạnh tranh dữ dội là nguyên nhân làm cho chu kì của Định luật Moores với nền công nghiệp đồ hoạ ngày càng ngắn . Chip đồ hoạ 3D tạo ra những bước tiến nhanh chóng trong sự phát triển của thời kì này . Hai võ sỹ hạng nặng đã thúc đẩy quá trình cập nhật công nghệ . Trong vài năm trước , Microsofts DirectX API được nâng cấp , cấu trúc phần cứng nhân đồ hoạ cũng làm phát triển vài cuộc cách mạng . Dưới đây chúng tôi tóm tắt quá trình phát triển của cấu trúc nhân đồ hoạ .

  

\"/\"

Hình 3 : Phần cứng tích hợp công cụ T&L đầu tiên của GeForce256 tạo thành khái niệm GPU

 GeForce256 là nhân đồ hoạ đầu tiên làm cuộc cách mạng . Nó trang bị phương tiện phần cứng T&L . Phần cứng T&L với những chức năng của nó để giải phóng một số công việc khỏi CPU , cho phép số lượng tái tạo hình ảnh nhiều hơn và tạo ra nhiều hiệu ứng giống như thật hơn . Từ đó bắt đầu cho khái niệm GPU ( Graphics Processor Unit ) - Bộ vi xử lí đồ hoạ - trong khi những nhân đồ hoạ trước đó chỉ được gọi đơn giản là "3D acceleration chip." – Chip tăng tốc 3D . GPU của GeForce256 có thể cung cấp sự chuyển đổi , ánh sáng , và trình diễn hình ảnh , về thực chất là tăng độ phức tạp của hình ảnh , những thuộc tính của hình ảnh cho sống động hơn . Nó lấy nhiều dữ liệu của CPU để xử lí công việc bên trong GPU với mục đích giải phóng cho CPU thực hiện công việc khác và đó cũng chính là xu thế chung cho tương lai .

 Mỗi cuộc cách mạng lớn trong đồ hoạ sẽ mang lại sự giải phóng cho CPU và gánh nặng  cho GPU hơn nữa và cải tiến độ sự linh hoạt trong lập trình .

 

 

\"/\"

Hình 4 : DX8 hỗ trợ GeForce3 giới thiệu những phần cứng Pixel Shader (PS) và Vertex Shader (VS)

 Trong phần cứng DX8 phần cứng T&L được thay thế bằng hai kẻ lạ mặt đó là Vertex Shader ( VS ) và Pixel Shader ( PS ).

 Phần cứng T&L chỉ dùng được để chuyển đổi những tính toán ánh sáng cố định , trong khi đó những phần cứng VS và PS linh hoạt hơn . Nó cho phép GPU thực sự trở thành bộ xử lí có khả năng lập trình được . Điều đó có nghĩa là những nhà lập trình có thể giảm sự khó khăn khi tạo những cảnh 3D lớn của mình . VS và PS trong Game mang lại sự thay đổi lớn nhất để tạo những hiệu ứng của bề mặt và chúng tôi tin rằng những cảnh ảo đầu tiên với 3DMark 2001SE tái tạo cảnh thiên nhiên nhìn trông như thật với những hiệu ứng bề mặt .

 Những phần cứng DX8 Shader đơn giản chỉ là thử nghiệm , thì DirectX 9 Shader đã trở thành cấu hình chuẩn . Tách rời từ phiên bản nâng cấp lên 2.0 , những phần cứng DX9 Pixel Shader đã tính toán những bài toán dấu phảy động chính xác , những phần cứng T&L truyền thống bị huỷ bỏ . Chương trình Vertex Shader mới có độ trình diễn những tính toán phức tạp hơn trước kia . Những chuẩn Vertex Shader mới thêm điều khiển luồng dữ liệu , nhiều hằng số và mọi thủ tục thêm tới 1024 lệnh Shader.

 

 

\"/\"

Hình 5 : DX9 tăng cường những chức năng Vertex Shader và Pixel Shader

 Tính năng chính của DX9 là 64bit màu RGBA ( mỗi kênh màu 16-bit ) và tính toán dấu phảy động 128-bit ( mỗi kênh màu là 32-bit dấu phảy động ) . Độ chính xác về màu sắc tăng lên sẽ mang lại nhiều hiệu ứng hình ảnh tốt hơn và chất lượng hình ảnh cao hơn .

 Ở trên là giới thiệu tóm tắt DX và quá trình phát triển những thế hệ Card màn hình gần đây và DX10 sẽ đẩy mạnh hơn nữa sự phát triển của GPU , sự thay đổi này là rất lớn . Nhưng sản phẩm của nVidia rất toàn diện , do vậy chúng tôi sẽ giải thích dựa trên thông tin kỹ thuật của nVidia .

 

  1. Công nghệ DX10 : Cấu trúc hợp nhất và BatchRender

 Cải tiến quan trọng của DX10 chính là giới thiệu Cấu trúc Shader hợp nhất .

 Bên dưới là xử lí Shader thông tường với đồ hoạ DX9 , đầu tiên là Vertex Shader hình học , và sau đó tạo ra những thành phần cơ bản của hình học , bao gồm những điểm , những đường và những góc . Và sau đó vào những Modul Pixel Shader để xử lí Pixel , sau đó tới xử lí ROP ( pha màu , bộ đệm Z-Buffer , Anti-Aliasing ... ) tạo ra hình ảnh trình diễn kết quả cuối cùng . Những dữ liệu này được đưa tới bộ nhớ Video và đi tới những tín hiệu đầu ra .

  

\"/\"

Hình 6 :  Quá trình xử lí Shader trong DX9

 Những GPU hiện nay vẫn còn quy định ranh giới rõ ràng của hai vùng để cung cấp Vertex Shader và Pixel Shader và GPU sẽ điều khiển cả hai dữ liệu này . Tuy theo những bức hình thể hiện mà có thể dẫn đến tình trạng Vertex Shader và Pixel Shader làm việc không đều nhau , lúc đó có thể Vertex Shader là việc hết công suất trong khi đó Pixel Shader lại có quá nhiều tài nguyên nhà rỗi hoặc ngược lại . Như vậy sẽ phung  phí tài nguyên cũng như sẽ làm giảm hiệu suất công việc .

 

\"/\"

 

Hình 7

 

\"/\"

Hình 8

 Hình 7 mô phỏng hai màn hình Game thông thường , bên trái là trạng thái làm việc của phần cứng Pixel Shader và Vertex Shader , màu Xanh chỉ tình trạng làm việc , màu Xám cho trạng thái nghỉ .  Đầu tiên nhìn vào hình trên của màn hình Game là những cảnh hình học phức tạp . Như vậy GPU cần điều khiển nhiều những dữ liệu Vertex hình học và điều khiển tương đối ít với những Pixel . Tại thời điểm đó Vertex Shader của GPU truyền thống làm việc hết công suất , trong khi đó những Module phần cứng của Pixel Shader lại ở trạng thái nghỉ .

Ngược lại với hình bên dưới trong hình 7 , Shader bề mặt cần xử lí hình học ít , trong khi đó cần xử lí màu sắc lại yêu cầu cao , do đó phần cứng Pixel Shader trong GPU lại làm việc hết công suất và phần cứng Vertex Shader lại ở trạng thái nghỉ ít làm việc .

 GPU truyền thống dùng cấu trúc Shader riêng biệt do đó việc phân bổ dữ liệu có nhiều vấn đề ảnh hưởng nhiều tới hiệu suất những Shader .

 Cải tiến lớn nhất của DX10 chính là giới thiệu Cấu trúc Shader hợp nhất , dễ dàng để hiểu những phần cứng Shader không riêng biệt với nhau .

 Hình 8 giải thích một cách trong sáng dễ hiểu , nó khác với hình 7 khi Pixel Shader và Vertex Shader riêng biệt nhau nên quá trình làm việc khác nhau và tài nguyên bị hoang phí . Với hình 8 cho thấy toàn bộ Shader đều làm việc và không một bộ phận nào ở trạng thái nghỉ .

 Những nhân đồ hoạ G80 dựa trên cấu trúc DX10 tích hợp Vertex Shader và Pixel Shader thành những SP ( Stream Processor ) có khả năng lập trình tích hợp ánh sáng và xử lí hình ảnh cùng một lúc . GPU mới sẽ tính toán mà hình Game theo những kiểu dữ liệu Shader để cải tiến hiệu suất của GPU và nâng cao hơn nữa chất lượng hình ảnh .

 Cải tiến quan trọng DX10 là BatchRender

 Trong những phiên bản DX trước kia , CPU quản lí trạng thái Shader . Chỉ một lần dùng chức năng DX , nó sẽ chiếm lĩnh khả năng tính toán của CPU và hạn chế hiệu suất làm việc của Shader . Để cho phép những điều khiển này hoạt động đồng loạt cùng một lúc , DX10 giới thiệu State ObjectConstant Buffer mới .

 Chức năng của State Object tương đối đơn giản , trước khi dùng chức năng DX không đều đặn , tuỳ theo nhiệm vụ , như là những công việc màn tính chất lặp lại mà những ứng dụng không cần sử dụng chức năng DX  , mà Card màn hình có thể thực hiện việc đó .

 

 

\"/\"

Hình 9 : Tái tạo hình ảnh trùng lặp nhau thì những hình sau do Card màn hình thực hiện mà CPU không phải can thiệp vào .

 Constant Buffer có nhiều ý nghĩa lớn lao . Trước khi quá trình chuẩn bị làm việc , trạng thái Shader thiết lập chỉ một phần nhỏ làm việc . Những thông báo như vậy được lưu trữ trong thanh ghi Constant Pool Register (CR) . Mỗi thanh ghi này chỉ lưu trữ 04 Vector tính toán dấu phảy động . Trong những phiên bản DX trước , số của thanh ghi này được ưu tiên mức cao nhất . Sau những thời gian nâng cấp dữ liệu CR , phải được gọi bằng hàm DX API , và được đưa vào bộ đệm Constant Buffer , có sự thay đổi hoàn toàn trong tình huống này - DirectX 10 Constant Buffer có thể cung cấp 40% công việc chỉ bằng một hàm để gọi thông tin cập nhật .

4. Công nghệ DX10 : Dự đoán trước Shader và Mảng kết cấu và những công nghệ khác

 Cải tiến quan trọng trong DX10 : Dự đoán trước Shader

 Trong nhiều cảnh 3D , một số vật thể bị chặn bởi những vật thể khác , những Shader bị chặn này làm tiêu tốn tài nguyên . Trong những Chip của nVidia và ATI , cả hai đều qua một số thuật toán đều không tính toán phần Shader bị chặn . Tuy nhiên , chúng cũng vẫn sẽ sử dụng nhiều tài nguyên Shader có giá trị .

 DX10 giới thiệu trong Dự đoán trước Shader để giải quyết vấn đề trên . Dự đoán trước Shader có thể dùng những vật thể phức tạp mà ở đó một phần của nó bị những vật thể khác chắn mất . Dùng Shader số lượng nhỏ để xác định Shader số lượng lớn có độ phức tạp cao với khả năng xảy ra cao nhất .

 

 

\"/\"

Hình 10 : Công nghệ  Early Z có thể xác định những Pixel không dùng sớm hơn để không cần tính toán đến nó

 nVidia dùng công nghệ  Early Z để gặp những dự đoán trước Shader . Nó sẽ xác định giá trị những Pixel trước khi chúng được đưa tới phần cứng Pixel Shader . Nếu chúng là những Pixel không dùng đến thì chúng có thể không được đưa vào Pixel Shader . Như vậy sẽ tiết kiệm được tài nguyên tính toán Shader và tăng hiệu suất làm việc .

 GeForce 8800 GTX với công nghệ Early Z có thể nâng tốc độ lên 04 lần chọn những Pixel không muốn dùng khi so sánh với 7900 GTX .

 Cải tiến quan trọng trong DX10 : Mảng kết cấu

 Kể cả trong DX9c , hoạt động chuyển đổi nhiều kết cấu trong phạm vi nào đó làm tăng độ phức tạp hoạt động của CPU , và nguyên nhân vô cùng đơn giản đó là mỗi lần chuyển đổi cần gọi hàm DirectX , và những vật thể có Texture Mapping mới sẽ yêu cầu hoạt động chuyển đổi , hoặc thậm trí cần một số hiệu ứng của những vật liệu đặc biệt có thể yêu cầu nhiều chuyển đổi . Do đó một số Game liên kết những kết cấu nhỏ thành kết cấu lớn . Trong cách như vậy hiệu ứng đạt được tốt nhưng thực hiện lại phức tạp . Kết cấu của DX9 có hạn chế kích thước kết cấu , chỉ 4096x4096 , và nếu cung cấp nhiều kết cấu khác nhau kết quả là hiệu suất hoạt động giảm đi đáng kể .

 Trong DX10 , Microsoft giới thiệu Mảng kết cấu mới . DX10 cho phép những Chip đồ hoạ duy trì 512 kết cấu cùng một lúc và Shader có thể dùng những chỉ dẫn mới , có nghĩa là DX10 sẽ thay đổi công việc kết cấu được chuyển tới GPU và GPU có nhiệm vụ chuyển đổi hoạt động . Trong DX10 hiện tại , ứng dụng chỉ cần đưa ra tất cả kết cấu bằng chỉ số kết cấu , và GPU đảm nhận lựa chọn chúng cho kết cấu .

  

\"/\"

Hình11 : Mảng kết cấu làm thanh kết cấu vật thể có nhiều độ phức tạp và những phương án khác nhau .

 Trong DX10 mỗi đồ hoạ kết cấu được cải tiến tới kích thước 8192x8192 . Mỗi Shader được tăng thêm tới 128-bit , do đó trong DX 10 các kết cấu được chi tiết hơn và đa dạng hơn .

 Nâng cấp Shader Model 4.0 ( SM 4.0 )

 Trong DX10 , Shader Model 4.0 sẽ thay thế SM3.0 trong DX9

  

\"/\"

Hình 12 : Thế hệ DX gần đây

 Đặc điểm kĩ thuật của SM4.0 cho phép những nhà phát triển Game có nhiều thứ để lựa chọn , nó có nhiều cải tiến so với Shader Model 3.0 ban đầu . Nhất là số lệnh Shader tăng lên từ 512 lên tới 64K , số thanh ghi ban đầu là 32 thì nay lên tới 4096 ...

  

\"/\"

Hình 13 : Chương trình SM4.0 thông minh sẽ thực hiện những hình ảnh như trong cuộc sống thực

 Đối với kích thước kết cấu 2D , DX10 cũng cải tiến nhiều , kết cấu lớn nhất là 8192x8192 cao hơn nhiều so với kết cấu ban đầu 2048x2048 . Đáng chú ý nhất là DX10 không dùng phép tính dấu phảy động 16-bit dữ liệu mà thay thế bằng 32-bit dữ liệu nên cho phép những hình ảnh thể hiện được chính xác hơn .

 Nhiều mục tiêu Shader hơn

 Những hiệu ứng đồ hoạ ngày càng tăng và yêu cầu số lượng mục tiêu cần quan tâm cũng ngày càng tăng lên nhiều nữa . Mục tiêu tái tạo hình ảnh ( Render Target ) có thể cần những thông tin như : vị trí vật thể , Pixel .... Khi mục tiêu tái tạo tăng thì hiệu suất lại giảm đi . Để tăng hiệu suất làm việc , nhiều Card màn hình có thể hỗ trợ điều này và sau đó Shader thực hiện sau cùng , những thông tin khác nhau thành những Mục tiêu tái tạo khác nhau . Trong DX9 Render Target chỉ là 4 và DX10 nâng số lượng này lên gấp đôi đó là 8 .

 Luồng dữ liệu ra

 Luồng dữ liệu ra là một đặc tính quan trọng của DX10 . Nó cho phép Vertex Shader hoặc Shader hình học của GPU ghi dữ liệu trực tiếp tới bộ nhớ Video . Trong khi những phiên bản DX trước , Vertex Shader chỉ có thể đọc Shader mà không có thể ghi Shader .

 Thêm bộ phận phần cứng cho Shader hình học

 DX10 đã giới thiệu loại Shader mới đó là Shader hình học ( Geometry Shader – GS ) . Nó sẽ xử lí trước Module Vertex Shader và Module Pixel Shader khó khăn thực hiện trọn vẹn những nhiệm vụ Shader . Bởi vì quá trình xử lí theo thứ tự , Module Vertex Shader và Module Pixel Shader vào và ra tương ứng một một , và sẽ không tạo vật thể hình học mới , nhưng bộ phận GS lại làm khác . Nó cho phép GPU tạo vật thể hình học mới khi có cơ hội .

 \"/\"Hình 14 : Shader hình học ( GS ) có thể xử lí nhiều đồ hoạ hình học phức tạp

 

 Khi có nhiều đồ hoạ hình học thì những Vertex Shader và Pixel Shader của GPU cũ sẽ bắt buộc CPU phải thực hiện nhiều công việc . Những bây giờ trong DX10 với Shader hình học có thể xử lí những việc này thay cho Pixel Shader và Vertex Shader .

  

\"/\"

Hình 15 : GS có thể xử lí tốt hơn mà không cần sự can thiệp của CPU

 Trong lõi G80 của nVidia , GS với VS và PS có thể đạt hiệu quả tốt hơn từ cấu trúc hợp nhất .

 Kiểu màu HDR ( High Dynamic Range ) mới

 HDR là kỹ thuật chụp ảnh trong đó vài kiểu ảnh của cùng một cảnh có độ tương phản cao tại những tình trạng khác nhau . Những hình ảnh sáng nhất và bóng tối phủ lên những bức hình được trộn lại với nhau để tạo bức ảnh trông thực hơn

  

\"/\"

Hình 16 : HDR

 Trong DX10 , Microsoft giới thiệu hai kiểu HDR mới : R11G11B10 và R9G9B9 .

  

Hình 16

 Hai định dạng HDR mới có thể cung cấp phạm vi động tính toán dấu phảy động 16-bit và bảo đảm chỉ dùng một nửa thông tin lưu trữ .

 Định dạng R11G11B10 mới tối ưu hoá bộ nhớ kết cấu , nó dùng dữ liệu 11-bit cho màu Đỏ và màu Xanh lá cây , trong khi đó màu Xanh nước biển là 10-bit . Định dạng dấu phảy động thứ hai được thiết kế cho mục tiêu Shader . Hai định dạng này cho phép hình ảnh trong như thật nhưng dung lượng lưu trữ lại giảm và băng thông sử dụng ít hơn .

 Ngoài ra DX10 cũng có một số cải tiến khác nữa nhưng chúng tôi không đề cập tại đây .

 \"\"

\"/\"