05/10/2026 · VietTechies · Biên tập

Vào đầu năm 1993, trong quá trình phát triển tựa game Doom tại id Software, lập trình viên trưởng John Carmack nhận thấy trình dựng hình đồ họa ba chiều mới của mình rơi vào tình trạng trì trệ. Engine này gặp rắc rối khi xử lý các cấu trúc kiến trúc phức tạp, như những hố cầu thang hình tròn, khiến phần mềm phải thực hiện liên tục vô số phép tính dựng hình lặp đi lặp lại. Doom cần mang lại trải nghiệm hành động mượt mà trên máy tính cá nhân thông thường, nhưng engine đồ họa bên dưới lại không thể duy trì hiệu năng. Để khắc phục nút thắt cổ chai này, Carmack buộc phải giải bài toán khó bậc nhất của đồ họa máy tính sơ khai: xác định những bề mặt nào thực sự hiển thị mà không lãng phí năng lượng xử lý vào các hình khối ẩn.

Giới hạn của kỹ thuật dựng hình bằng phần mềm theo thời gian thực
Vào đầu những năm 1990, máy tính cá nhân tương thích IBM thiếu phần cứng đồ họa chuyên dụng, buộc CPU phải xử lý toàn bộ quá trình dựng hình bằng phần mềm. Để duy trì nhịp độ chơi mượt mà, engine trò chơi phải giải quyết bài toán xác định bề mặt hiển thị bằng cách quyết định những đa giác nào sẽ xuất hiện từ góc nhìn camera cụ thể với tần suất tối thiểu 30 lần mỗi giây. Trong tựa game trước đó của id Software là Wolfenstein 3D, Carmack đã đơn giản hóa thách thức này bằng cách giới hạn thiết kế màn chơi trong các bức tường căn chỉnh theo trục trên một lưới cố định. Thiết kế này cho phép một thuật toán duyệt tia đơn giản tính toán nhanh chóng các điểm giao nhau với bức tường mà chỉ tốn rất ít chu kỳ xử lý. Tuy nhiên, Doom lại đưa vào những yếu tố sống động hơn như tường đường chéo, cầu thang và trần nhà có độ cao linh hoạt, khiến thuật toán duyệt tia dựa trên lưới không còn khả năng ứng dụng.
Từ hệ thống mô phỏng bay đến các nghiên cứu hàn lâm
Để hỗ trợ các môi trường phức tạp này, ban đầu Carmack đã xây dựng một thuật toán phân đoạn lồi, vẽ căn phòng hiện tại của người chơi rồi lan dần ra các khoảng không gian lân cận. Khi hình học lồng ghép phức tạp khiến tốc độ xử lý suy giảm nghiêm trọng, ông bắt đầu tìm kiếm một giải pháp thay thế triệt để. Trong thời gian chuyển thể Wolfenstein 3D sang nền tảng Super Nintendo với phần cứng hạn chế, Carmack đã đào sâu nghiên cứu các bài báo khoa học về đồ họa máy tính. Ông phát hiện ra rằng khái niệm phân chia không gian vốn xuất phát từ một báo cáo năm 1969 của Không quân Mỹ với nhan đề "Nghiên cứu ứng dụng hình ảnh do máy tính tạo ra vào mô phỏng trực quan", trong đó khám phá đồ họa thời gian thực cho các hệ thống mô phỏng bay. Dựa trên nền tảng đó, các nhà nghiên cứu Henry Fuchs, Zvi Kedem và Bruce Naylor đã công bố một bài báo vào năm 1980 mang tên "Về việc tạo bề mặt hiển thị bằng cấu trúc cây tiên nghiệm", giới thiệu khái niệm cây phân chia không gian nhị phân (BSP).
Tích hợp cây phân chia không gian nhị phân vào Doom
Cấu trúc cây BSP đã giải quyết vấn đề xác định bề mặt hiển thị bằng cách chuyển các phép tính hình học nặng nề từ thời gian thực sang giai đoạn tiền xử lý. Thuật toán sẽ tính toán trước các phân chia không gian dọc theo những mặt phẳng trong mô hình kiến trúc của màn chơi, tổ chức thế giới game thành một hệ thống phân cấp chặt chẽ ngay trước khi trò chơi vận hành. Trong quá trình chơi, việc sắp xếp các đối tượng theo độ sâu chỉ còn là thao tác duyệt cây theo thứ tự trung vị nhẹ nhàng dựa trên vị trí camera của người chơi. Carmack đã đưa cấu trúc học thuật này vào engine dựng hình của Doom. Nhờ loại bỏ các phép tính hình học dư thừa cùng những thao tác ghi tốn kém vào bộ đệm khung hình VGA, engine này có thể dựng các kiến trúc không phụ thuộc vào lưới một cách nhanh chóng trên nhiều dòng phần cứng phổ thông.
Bước ngoặt tái thiết kiến trúc đồ họa 3D
Khi id Software phát hành Doom vào năm 1993, engine này đã thiết lập một bài đo hiệu năng mới cho kỹ thuật dựng hình đồ họa 3D bằng phần mềm theo thời gian thực trên máy tính cá nhân. Bằng cách đưa một cấu trúc dữ liệu phát triển từ năm 1980 cho các hệ thống mô phỏng bay cao cấp lên máy tính gia đình, Carmack chứng minh rằng việc phân chia không gian tính toán trước có thể giúp các môi trường ảo phức tạp vận hành mượt mà mà không cần bộ tăng tốc phần cứng chuyên dụng. Đột phá kỹ thuật này đã biến cây BSP trở thành một kỹ thuật kiến trúc nền tảng trong thiết kế engine trò chơi suốt nhiều năm sau đó.
Ảnh đầu bài: minh họa do AI tạo, không phải ảnh tư liệu.
Nguồn: 0b10
0b10
How Much of a Genius-Level Move Was Using Binary Space Partitioning in Doom?
