• Thứ Tư, 03/12/2008 07:21 (GMT+7)

    Công nghệ PhysX

    Những hiệu ứng vật lý hứa hẹn sẽ mang lại những hình ảnh sống động và thực hơn nữa cho những game 3D. Nhưng khi nào điều đó sẽ trở thành hiện thực, và làm cách nào để game hỗ trợ được điều đó?

    Giới thiệu GeForce PhysX

    Sự việc bắt đầu từ lúc công ty Ageia xuất hiện trên thị trường đồ họa 3D. Đã có nhiều luồng dư luận nói rằng công ty này sẽ mang nhiều tính toán vật lý vào trong game. Những hiệu ứng vật lý hứa hẹn sẽ mang lại những hình ảnh sống động và hiện thực hơn nữa cho những game 3D. Nhưng khi nào điều đó sẽ trở thành hiện thực, và làm cách nào để game hỗ trợ được điều đó?

    Khi bạn làm nổ tung một vật thể, bạn có thể nhìn thấy những mảnh vỡ vụn của vật thể đó văng tung tóe hoặc thử tưởng tượng khi một cô gái đang đi, váy của cô ta không bất động mà sẽ chuyển động nhịp nhàng theo hướng di chuyển của cô ta... Đó chính là những hiệu ứng vật lý mà game sẽ mang lại cho bạn. Ý tưởng của công ty Ageia rất tuyệt diệu nhưng vì họ là người tiên phong trong lĩnh vực còn khá mới mẻ này nên đã gặp không ít bất lợi. Card vật lý của họ thì quá đắt và ngành công nghiệp game thì lại thờ ơ. Họ đã cố gắng rất nhiều nhưng cuối cùng đã thất bại.

    Muốn PhysX được chấp nhận rộng rãi, cần phải có sự hỗ trợ của những nhà phát triển phần mềm, phần cứng và nVIDIA nhà sản xuất phần cứng card đồ họa lớn nhất thế giới đã làm điều đó. Công ty này đã đầu tư rất nhiều để phát triển phần mềm mở tên CUDA, cho phép chuyển tất cả những cải tiến của hàm API PhysX vào CUDA. Và lúc này ưu thế của PhysX đã bắt đầu được bộc lộ.

    nVIDIA đã chi khoản tiền 30 triệu USD để mua lại công ty Ageia, nhằm mục đích tích hợp hàm API PhysX vào CUDA để cuối cùng có thể giúp GPU xử lý được các hiệu ứng vật lý. Điểu hấp dẫn nhất ở đây là bắt đầu từ ngày 12/8/2008 tất cả các card đồ họa từ dòng GeForce 8 trở đi đều có thể thực hiện xử lý các hiệu ứng vật lý mà không cần phải trang bị thêm card vật lý chuyên dụng. Từ bây giờ GPU trên chiếc máy tính của bạn có thể thực hiện các tính toán PhysX và để nó làm được điều đó, các bạn chỉ phải cài các phiên bản driver PhysX mới từ giữa tháng 8/2008 và thêm vài "click" chuột đơn giản.

    Tương tác vật lý

    Có thể nói "nôm na" vật lý là ngành khoa học nghiên cứu các vấn đề liên quan về năng lượng, sự chuyển động và lực tác động... Như vậy câu hỏi được đặt ra, làm thế nào để tính toán được tác động vật lý trong game? Vật lý trong game là tất cả những thứ liên quan đến sự chuyển động và tác động qua lại của các vật thể. Về cơ bản GPU dựng hình game còn những tính toán vật lý thì chuyển cho CPU xử lý. Với những thiết kế hiện nay bạn cần phải hiểu rằng, PhysX không dựng hình đồ họa nó nằm ở mức thấp hơn trong pipeline. Sự chuyển động phức tạp của vật thể, dòng chảy... dựa trên sự tác động biến thiên của trong lực, tỉ trọng, gió.....

    Những thành phần trên sẽ được tính toán từ đó sẽ vạch ra hướng chuyển động thực tế của vật thể, quần áo, dòng chảy....Công ty Ageia thực sự đã có phần mềm dựa trên hàm API có sẵn dùng CPU xử lý. Havok là một ví dụ điển hình khác của engine vật lý dùng với CPU.

    Những tính toán vật lý chung thì do CPU thực hiện, với những game hiện nay bộ vi xử lý càng ngày càng phải làm việc nhiều hơn do các game càng lúc càng tích hợp nhiều trí thông minh nhân tạo, suy luận logic. Với những tính toán vật lý phức tạp GPU có thể xử lý nhanh hơn rất nhiều so với CPU.

    PhysX xử lý các môi trường vật lý trong game. Một vài đặc điểm nó có thể làm là :

    • Vụ nổ sinh ra bụi và các mảnh vỡ vụn

    • Nhân vật với những hình dạng chuyển động phức tạp và sự tương tác qua lại giữa các vật thể

    • Những loại vũ khí đặc biệt mới với những khả năng phi thường

    • Quần áo được xếp hoặc xé theo hướng lực tác động

    • Khói hoặc sương mù dầy đặc bao quanh vật thể trong lúc chuyển động.

                                                         Hình 3.

    Tất cả những trường hợp nêu ở trên đều có thể được tính toán trên GPU và sẽ được thực hiện nhanh hơn rất nhiều so với khi làm trên CPU. Hãy lấy ví dụ điển hình qua game GRAW 2 - game được tích hợp nhiều hiệu quả hình ảnh khá chân thực nếu chiếc PC của bạn được trang bị card vật lý. Tuy bạn có thể nhìn thấy rõ ràng sự khác nhau giữa game có và không có card vật lý nhưng sự khác nhau sẽ rất ít trong trường hợp bạn bắn vào viên gạch (chỉ nhìn thấy vài mảnh nhỏ) và sự khác nhau có thể sẽ nhiều hơn trong trường hợp xảy ra một vụ nổ nhưng dù đó là trường hợp nào thì bộ vi xử lý 2 nhân vẫn không thể xử lý được.

    Hình ảnh vụ nổ trong hình 2 được tính toán trên GPU thông qua engine vật lý PhysX. Thông thường chỉ với sự tính toán vật lý của CPU hình ảnh giống như trên sẽ không có.

    Liệu có cần PhysX?

                                                                                                    Sơ đồ 1

    Đây là một câu hỏi rất thú vị. Hiện nay game có tích hợp engine vật lý đã rất phổ biến. Tuy vậy, một số nhà phát triển game vẫn tự xây dựng engine vật lý riêng cho game của họ. Những engine này đều được xử lý thông qua CPU, có thể kể tên engine vật lý Havok nổi tiếng hiện đã được Intel mua lại.

                                  Sơ đồ 2

    Xem hình 3 để thấy, engine PhysX của nVIDIA đã hỗ trợ hầu hết những đặc tính mà các game hiện nay yêu cầu như quần áo, khớp nối, chất lỏng, mảnh vụn... Tất nhiên Havok cũng hỗ trợ tất cả những đặc tính vật lý tương tự. Vậy đâu là sự khác nhau giữa 2 engine này?

    Có một thực tế là hiện nay chỉ duy nhất engine vật lý PhysX của nVIDIA là có thể vừa được tăng tốc xử lý thông qua phần mềm (CPU xử lý) lại vừa được tăng tốc xử lý thông qua phần cứng (GPU xử lý) trong khi engine Havok chỉ có một cách xử lý là thông qua phần mềm. Intel cũng đang nghiên cứu để có thể xử lý được Havok bằng GPU nhưng chip đồ họa x86 Larrabee của Intel có khả năng xử lý Havok vẫn còn đang trong quá trình hoàn thiện và vẫn chưa thể xuất hiện trên thị trường ít nhất là trước năm 2009.

                                                                                                      Hình 4.

    Một lý do chính để chuyển việc tính toán PhysX từ CPU sang GPU là do sức mạnh to lớn trong tính toán vật lý của GPU. Qua bảng so sánh bên trên có thể thấy ưu thế rõ rệt của GPU so với CPU trong việc xử lý các hiệu ứng vật lý. Chẳng hạn khả năng xử lý dấu chấm động của chip đồ họa GeForce GTX 280 cao hơn CPU 4 nhân Core 2 Quad đến hơn 9 lần, chính yếu tố này sẽ giúp các nhà phát triển game tạo được nhiều hiệu ứng hình ảnh sống động hơn nữa. Một ví dụ đơn giản như khi bạn làm nổ tung một chiếc xe hơi, nếu PC của bạn không hỗ trợ khả năng xử lý PhysX bằng GPU, thì chiếc xe đó chỉ bị vỡ thành 20-30 mảnh nhỏ, tuy nhiên nếu PC có khả năng xử lý PhysX trên GPU thì chiếc xe đó sẽ bị vỡ thành hàng trăm mảnh nhưng tốc độ khung hình khi chơi game vẫn không bị giảm quá nhiều.

    Việc thêm vào PhysX cho các game không yêu cầu phải bổ sung thêm bất cứ cải tiến đặc biệt nào đối với những nhà sản xuất CPU hoặc GPU, công việc đã được lớp driver PhysX (PhysX driver's HAL - Hardware Abstraction Layer) đảm nhiệm, thông qua lớp driver PhysX này nó sẽ chuyển các mã lệnh PhysX phù hợp đến cho CPU, GPU hoặc PhysX PPU (card vật lý) xử lý. Một đặc điểm quan trọng nhất là nVIDIA không độc quyền công nghệ PhysX của họ. Các nhà phát triển phần mềm và game có thể tải về các công cụ PhysX và có thể bắt đầu làm việc ngay từ bây giờ. nVIDIA đã và đang cố gắng hỗ trợ các nhà phát triển game để họ có thể dễ dàng sáng tạo các hiệu ứng vật lý cho game, từ những hiệu ứng đơn giản được thực thi trên CPU cho đến các hiệu ứng phức tạp dành cho GPU xử lý.

    Cách cấu hình PhysX cho những card đồ họa GeForce của nVIDIA

    nVIDIA đã tạo ra 3 cách thiết lập PhysX mà bạn có thể tùy chọn thông qua cấu hình trong driver PhysX, cụ thể như sau :

    • Chế độ Standard (tiêu chuẩn): Một GPU chịu trách nhiệm cả phần dựng hình đồ họa và xử lý PhysX (bạn cần phải trang bị một GPU đủ mạnh)

    • Chế độ SLI: Hai GPU cùng chịu trách nhiệm dựng hình đồ họa và xử lý PhysX

    • Chế độ đa GPU (Multi-GPU): Một GPU chịu trách nhiệm dựng hình đồ họa còn GPU kia chịu trách nhiệm xử lý PhysX.

    Theo ý kiến cá nhân tôi, tùy chọn cuối cùng là thông dụng nhất, hiện nay có rất nhiều bo mạch chủ trang bị 2 khe PCIe x8 hoặc x16, và sẽ sử dụng thiết lập này để biến chiếc card đồ họa cũ của bạn thành card PhysX.

    Hãy xem bạn không cần phải có một chiếc card đồ họa thật mạnh để làm card PhysX. Chẳng hạn bạn có một chiếc card đồ họa cũ là GeForce 9600 GT hoặc 8600 GT và bạn mua thêm card cao cấp GeForce GTX 280.

    Sau đó bạn sẽ sử dụng 9600 GT (hoặc 8600 GT) như là card PhysX và GTX 280 cho xử lý đồ họa.

    Phương pháp này có 2 điểm khá hay. Thứ nhất bạn có thể sử dụng cùng lúc một card đồ họa cũ và một card đồ họa mới. Thứ hai bạn không cần phải mua bo mạch chủ có chipset nForce vì bạn đâu cần chạy chế độ SLI!

    Nhược điểm của giải pháp trên?

    Nếu bạn chọn chế độ SLI hoặc Multi-GPU thì đối với những hệ thống máy tính cao cấp rõ ràng vấn đề nằm ở công suất tiêu thụ của toàn hệ thống. Khi trang bị card đồ họa thứ hai cho dù ở chế độ không tải thì công suất tiêu thụ của hệ thống cũng hơn 200W. Và khi hai GPU cùng phải làm việc hết công suất thì rõ ràng năng lượng tiêu thụ sẽ tăng lên khá nhiều. Chẳng hạn trong trường hợp của hệ thống với bo mach chủ chipset nForce 680i, CPU Core 2 Duo 3GHz và 2 VGA là GeForce GTX 280 & 9600 GT, công suất tiêu thụ toàn hệ thống khi đầy tải sẽ lên đến 432W.

    Cách lắp đặt

    Hệ thống thiết lập ở chế độ Multi-GPU gồm có card GeForce 9600 GT cho xử lý PhysX và GeForce GTX 280 cho đồ họa.

    Hình 5

    Điều đầu tiên bạn cần là phải có 2 màn hình hoặc một màn hình có cả hai đầu nhận tín hiệu là D-Sub và DVI và bạn phải sử dụng cả hai đầu nhận tín hiệu này để nối vào hai đầu xuất tín hiệu của hai card đồ họa GeForce GTX 280 và 9600 GT. Sau đó bạn phải vào phần Display Settings để chỉnh thông số. Với một card đồ họa hoặc hai card đồ họa chạy ở chế độ SLI thì không gặp phải vấn đề này. Sau khi đã thực hiện đúng như phần hướng dẫn bên trên bạn chỉ mở PhysX Properties lên sẽ thấy như hình sau :

    Khi click vào mục Select GPU for GeForce PhysX bạn có thể tùy biến cấu hình để 9600 GT xử lý PhysX trong khi GTX 280 xử lý đồ họa.

    Để minh chứng cho sức mạnh của PhysX, chúng tôi đã đo (benchmark) bằng những demo benchmark và game hỗ trợ công nghệ PhysX của nVIDIA. Tất cả những demo và game đều cùng chạy trên hệ thống có cấu hình: BMC Asus P5Q-E chipset Intel P45; CPU Core 2 Duo E6550 2,33GHz, RAM OCZ 2x1GB DDR2, Driver PhysX 08.07.18, Driver nVIDIA GeForce Release 177.79, Driver ATI Catalyst 8.8 beta, Windows Vista Ultimate SP1 32bit.

                                                                                                     Sơ đồ 3

    Những card đồ họa tham gia thử nghiệm gồm:

    - Card đồ họa chip nVIDIA GeForce : Asus 9600 GT và Asus 9800 GTX TOP.

    - Card đồ họa chip ATI Radeon : Asus HD 4850 và Asus HD 4870.

    Kết quả benchmark đều ghi nhận cả tốc độ khung hình trung bình (Avg FPS) và tốc độ khung hình nhỏ nhất (Min FPS).

    Kết quả benchmark cho thấy rõ công nghệ PhysX của nVIDIA đã đem lại những cải thiện ấn tượng về cả hiệu ứng, tốc độ xử lý và có thể nói là đã mang lại một "luồng gió mới" cho các nhà phát triển game. Với công nghệ này hy vọng sắp tới chúng ta sẽ được chiêm ngưỡng những game 3D có tính chân thực ngày càng giống thật hơn. Các bạn quan tâm đến game và kết quả benchmark chi tiết có thể đón xem trên Thế Giới Game.

    Đỗ Việt Hà
    kachiusa@gmail.com
    Tham khảo: http://www.elitebastards.com http://hothardware.com

    ID: A0811_122