Nhớ lại hồi năm 2007 khi Crysis vừa ra mắt, tựa game này đã làm nên một cuộc cách mạng vì khả năng sát phần cứng và đặc biệt là đồ họa chân thực, không có game nào ở thời điểm đó có được. Và nếu anh em để ý thì thứ giúp đồ họa của Crysis tạo được sự khác biệt to lớn như vậy chính là nhờ tính năng đổ bóng tĩnh, ambient occlusion. Vậy đổ bóng tĩnh là gì và nó có tác động đến phần cứng ra sao, anh em cùng mình tìm hiểu qua bài viết này nhé.
Đổ bóng tĩnh là gì?
Ngoài đời thật thì chắc hẳn anh em ai cũng thấy rằng nếu có vật cản ánh sáng thì sẽ tạo ra một cái bóng ở phía sau đúng không nào. Tuy nhiên, đối với các tựa game xưa cũ thì vật thể không có cái bóng phía sau giống như ngoài đời thật anh em ạ. Sau này, người ta mới tạo ra tính năng ambient occlusion giúp tính toán mức độ che khuất ánh sáng của vật thể dựa trên vị trí của nó với vị trí của nguồn sáng và làm đồ họa trong game chân thực hơn.
Ví dụ nếu anh em xem một ví dụ về sự khác nhau khi bật và tắt đổ bóng tĩnh ở bên dưới. Khi bật đổ bóng thì phía sau những cây cột, phòng giam,… sẽ có bóng tạo nên độ sâu cho vật thể và cảnh vật, giúp anh em nhìn vào sẽ nghĩ đây là một hình ảnh 3D. Còn nếu không bật đổ bóng thì hình ảnh sẽ bị phẳng và nhìn khá là giống hình 2D.
Các loại đổ bóng tĩnh
Screen Space Ambient Occlusion (SSAO)
Đây chính là phương pháp tạo bóng đầu tiên, được Crytek phát triển và được sử dụng cho tựa game “hủy diệt phần cứng” Crysis. Phương pháp tạo bóng này sử dụng độ sâu của từng điểm ảnh trong khung hình và các điểm ảnh xung quanh để tạo ra phần bóng. Nói đơn giản hơn là phương pháp này sẽ tìm xem trong khung hình điểm ảnh nào ở phía trước, điểm ảnh nào ở phía sau. Những điểm ảnh ở phía sau sẽ bị “tô màu” tối hơn để tạo bóng chứ không tính toán góc chiếu, cường độ ánh sáng,… từ nguồn sáng trong game nha anh em.
Vì vậy, SSAO không yêu cầu bất kỳ sức mạnh tính toán từ CPU mà chỉ yêu cầu GPU render tạo bóng thôi. Tuy nhiên, phương pháp này có nhược điểm là không thể áp dụng được lên toàn bộ vật thể trong game và phần viền của bóng có thể bị mờ (blur) hoặc răng cưa hoặc không khớp với ánh sáng tổng thể của khung hình. Với sức mạnh của phần cứng thời điểm đó thì SSAO vừa mang lại hiệu ứng đổ bóng gần giống như thật mà vẫn không quá ảnh hưởng đến hiệu suất tổng. Và vì đổ bóng tĩnh dạng này không tối ưu cho cho vật thể chuyển động nên phương pháp này thường được áp dụng các khung nền dạng tĩnh mà game thủ không thể tương tác được.
Screen Space Directional Occlusion (SSDO)
Đây là phương pháp “con cháu” của SSAO ở trên. Thay vì chỉ tính toán tạo bóng từ độ sâu của các pixel, phương pháp này thực sự tính toán góc ánh sáng chiếu vào vật thể cũng như lượng ánh sáng phản chiếu như thế nào. Ưu điểm lớn nhất của SSDO là sẽ giúp game thủ phân biệt vật thể trong game tốt hơn vì vùng sáng và vùng tối được thể hiện rõ ràng. Vì vậy, phương pháp SSDO sẽ giúp hình ảnh trong game chân thực hơn phương pháp trước.
Một số engine hiện đại như Unity và Unreal đều sử dụng SSDO nên anh em có thể thấy thế giới trong các tựa game này có hiệu ứng ánh sáng và đổ bóng vô cùng chân thực. Mặc dù SSDO có thể tạo ra phần bóng chính xác hơn nhưng nó vẫn có một số hạn chế như phần viền của bóng vẫn bị răng cưa và phần bóng đè lên vật thể khác có thể chưa được chính xác cho lắm.
Global Illumination (GI)
Đây là một nhóm phương pháp tạo bóng dùng tất cả các nguồn sáng có trong thế giới game chứ không chỉ là nguồn sáng có trong khung hình bạn đang xem. Ví dụ như nếu có một bóng cây từ xa, dù cái cây không xuất hiện trong khung hình nhưng GI vẫn sẽ hiện cái bóng lên.
Hiện tại thì phương pháp GI vẫn chưa xuất hiện trong nhiều game lắm mà thường dùng để tạo hiệu ứng cho các bộ phim điện ảnh. Một phương pháp tạo bóng thuộc “chủng tộc” GI được nhiều anh em biết đến là ray tracing. Rõ ràng là hiệu ứng ánh sáng và tạo bóng của ray tracing đạt đến một tầm cao mà không có phương pháp đổ bóng tĩnh nào làm được nhưng lại yêu cầu phần cứng mạnh mẽ và tại thời điểm viết bài này thì chỉ có dòng card Nvidia RTX mới hỗ trợ.
Như vậy, nếu anh em muốn đồ họa trong game ở mức ổn mà không “ăn” quá nhiều sức mạnh phần cứng thì chỉ cần bật SSAO là được rồi. Các phương pháp tạo bóng hiện đại hơn sẽ làm đồ họa đẹp hơn nhưng ngốn sức mạnh phần cứng hơn vì cần phải tính toán góc chiếu, tạo bóng sao cho giống thật nhất có thể.
Nguồn: Wikipedia (1), (2), The Wired Shopper