Trong các trò chơi AAA hiện đại với môi trường mở và nhiều nội dung tĩnh (ví dụ: crysis), việc loại bỏ tắc nghẽn được thực hiện như thế nào?


19

Hai ý tưởng tôi có trong đầu:

1) Cảnh được hiển thị cho bộ đệm vô hình, sử dụng các mô hình đếm đa giác thấp và đa giác thấp (hoặc thậm chí chỉ sử dụng các khối lượng giới hạn như hình khối hoặc hình cầu). Bộ đệm sau đó được kiểm tra để biết những gì có thể nhìn thấy hay không. Trước khi kết xuất cảnh có độ phân giải thấp, một số loại bỏ bực bội có thể được áp dụng, để loại bỏ càng nhiều đối tượng càng tốt.

2) Một công cụ được chạy trên bản đồ tĩnh và sẽ thực hiện theo dõi tia phức tạp (và do đó chậm) để biết một số vị trí 3d trên bản đồ những gì có thể nhìn thấy và những gì không. Tất cả thông tin đó sau đó được lưu trữ một cách hiệu quả mà người dùng có thể sử dụng sau này trong thời gian chạy (ví dụ: một octree) Giải pháp này sẽ chỉ hoạt động đối với các lưới tĩnh (ví dụ: tòa nhà) không di chuyển các đối tượng.


3
Các câu hỏi "Làm thế nào trò chơi <X> làm điều này" rõ ràng lạc đề theo Câu hỏi thường gặp . Có thể chỉnh sửa câu hỏi này để hỏi làm thế nào bạn có thể thực hiện việc loại bỏ tắc, thay vì làm thế nào người khác làm điều đó? (Ngoài ra, việc cung cấp câu trả lời của riêng bạn trong phần câu hỏi sẽ tạo cảm giác như bạn đang yêu cầu một cuộc thảo luận hoặc một danh sách, thay vì một câu trả lời )
Trevor Powell

Câu trả lời:


13

Câu trả lời của Jovan là tuyệt vời, nhưng chỉ muốn thêm rằng đôi khi có hỗ trợ phần cứng để đặt câu hỏi "Hình học này có thực sự hiển thị bất kỳ pixel nào không?" (ý tưởng của bạn # 1) Chúng được gọi là truy vấn tắc - đây là một bài viết tốt về GPU Gems về chúng ở đây

Điều này khá giống với ý tưởng số 1 của bạn, ngoại trừ bạn không cần một bộ đệm vô hình và có thể hiệu quả hơn hoặc đơn giản hơn so với việc kiểm tra bộ đệm. Bài viết được liên kết thực hiện một công việc tuyệt vời đi sâu vào cách thức các truy vấn tắc phần cứng hoạt động.

Unreal Engine tận dụng các truy vấn tắc phần cứng trên các nền tảng hỗ trợ nó, ngoài các kỹ thuật khác như xem loại bỏ bực bội và tính toán trước những gì hình học tĩnh bị chặn.


Các truy vấn tắc phần cứng thực sự phổ biến hơn một chút so với "đôi khi" ngày nay - ngoại trừ một số GPU di động, chúng có thể được coi là phổ biến.
Maximus Minimus

Họ không chậm lắm sao?
Quonux

12

1) Cảnh được hiển thị cho bộ đệm vô hình, sử dụng các mô hình đếm đa giác thấp và đa giác thấp (hoặc thậm chí chỉ sử dụng các khối lượng giới hạn như hình khối hoặc hình cầu). Bộ đệm sau đó được kiểm tra để biết những gì có thể nhìn thấy hay không. Trước khi kết xuất cảnh có độ phân giải thấp, một số loại bỏ bực bội có thể được áp dụng, để loại bỏ càng nhiều đối tượng càng tốt.

Kỹ thuật này được Killzone sử dụng và được trình bày chi tiết trong phần trình bày của họ Thực hành loại trừ Culling trên PS3 . Họ cũng sử dụng cổng cho khu vực trong nhà.

Một lưu ý về bản đồ ngoài trời lớn là đơn giản hóa lưới cũng quan trọng như việc loại bỏ tắc, do đó, một số biến thể của các trường độ cao với sơ đồ hình học thường được sử dụng. Đây là một bài báo tốt bao gồm cả việc loại bỏ là tốt. GPU Gems 2 có một triển khai của nó .


5

Ít nhất hai trò chơi Quake đầu tiên sử dụng chiến lược 2; Tôi không biết nếu động cơ idTech vẫn sử dụng nó. Thế giới có thể truy cập được chia thành các không gian lồi được tổ chức trong cấu trúc dữ liệu cây ("phân vùng không gian nhị phân") và đối với mỗi nút trong cây có một vectơ bit biểu thị các nút khác có thể nhìn thấy từ nút đó ("tập hợp có thể nhìn thấy").


1
Nếu bạn định mang Quake, bạn cũng có thể mang theo công nghệ kết xuất của Thief;) - nothings.org/gamedev/thief_Vndering.html
Jovan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.