Trong một câu hỏi trước đây , có ý kiến cho rằng các trường khoảng cách đã ký có thể được tính toán trước, được tải trong thời gian chạy và sau đó được sử dụng từ đó.
Vì lý do tôi sẽ giải thích ở cuối câu hỏi này (đối với những người quan tâm), tôi cần tạo các trường khoảng cách trong thời gian thực.
Có một số bài báo về các phương pháp khác nhau được cho là khả thi trong môi trường thời gian thực, chẳng hạn như các phương pháp cho biến đổi khoảng cách Chamfer và biến đổi dựa trên sơ đồ Voronoi (như được đề xuất trong bài trình bày này của anh chàng nhà phát triển Pixeljunk Shooter ), nhưng Tôi (và do đó có thể được giả định là rất nhiều người khác) có một thời gian rất khó thực sự đưa chúng vào sử dụng, vì chúng thường dài, phần lớn chứa đầy toán học và không được giải thích bằng thuật toán.
Thuật toán nào bạn muốn đề xuất để tạo các trường khoảng cách trong thời gian thực (thuận lợi trên GPU) đặc biệt là xem xét chất lượng kết quả của các trường khoảng cách?
Vì tôi đang tìm kiếm một lời giải thích / hướng dẫn thực tế trái ngược với một liên kết đến một tờ giấy hoặc slide khác, câu hỏi này sẽ nhận được tiền thưởng một khi nó đủ điều kiện cho một :-).
Đây là lý do tại sao tôi cần phải làm điều đó trong thời gian thực:
Nếu bạn phải tính toán trước các SDF này cho các môi trường 2D lớn (nghĩ về một bản đồ lớn giống như Terraria), điều này có nghĩa là bạn chấp nhận một chi phí khá lớn trong không gian lưu trữ (và thời gian tạo bản đồ) để thực hiện nhiều hơn thuật toán phức tạp đủ nhanh để tạo SDF thời gian thực.
Ví dụ: bản đồ tương đối nhỏ với 1000 * 256 (chiều rộng * chiều cao) với kích thước ô 10 * 10 pixel và do đó, tổng kích thước 10000 * 2560 pixel sẽ khiến bạn mất khoảng 2 megabyte, nếu bạn chọn kích thước tương đối nhỏ Độ phân giải SDF là 128x128, giả sử rằng bạn chỉ lưu trữ các giá trị khoảng cách từ 0 đến 255.
Rõ ràng, điều này có thể nhanh chóng trở nên quá nhiều và là một chi phí mà tôi không muốn có.
Có một cái gì đó khác:
SDF có thể được sử dụng cho nhiều thứ (như phát hiện va chạm) và một số ứng dụng hữu ích thậm chí chưa được phát hiện. Tôi nghĩ rằng rất nhiều người sẽ tìm kiếm những điều này trong tương lai, và nếu chúng ta nhận được câu trả lời toàn diện ở đây, tôi nghĩ chúng ta sẽ giúp được rất nhiều người.