Tôi đang cố gắng thực hiện Ray Trace with Cones (Amanatides 1984) . Thay vì tia, hình nón được bắn vào khung cảnh và giao nhau với hình học. Vì nhiều hình tam giác có thể chiếm khẩu độ của hình nón, chúng tôi cần tính toán (hoặc ước tính nhanh hơn, vì dấu vết hình nón tạo ra rất nhiều xấp xỉ) dù sao thì diện tích tương đối của hình tròn được bao phủ bởi hình tam giác. Sau đó, các đóng góp cá nhân được tính trọng số và tổng hợp.
Thật không may, tác giả không đưa ra nhiều chi tiết về giải pháp của mình. Dưới đây là những gì ông viết trên giao lộ hình nón:
Góc trải và góc giữa tia và mặt phẳng được tính ở trên với nhau cho biết khoảng cách giữa tâm của đường tròn và cạnh của nửa mặt phẳng [sic]. Với khoảng cách này, diện tích giao cắt được tính bằng cách sử dụng xấp xỉ đa thức. Điều này hoàn thành tính toán giao cho các mặt phẳng.
Và sau đó, sau khi chiếu một đa giác vào mặt phẳng vuông góc với vectơ chỉ phương của hình nón:
Sau đó, chúng ta phải tính toán giao điểm giữa đa giác được chiếu và một vòng tròn. Điều này có thể được thực hiện bằng cách tính khoảng cách từ tâm của vòng tròn đến từng cạnh và sau đó sử dụng ước lượng giao tuyến vòng tròn - nửa mặt phẳng đã đề cập trước đó.
Tôi đã tìm thấy một giải pháp cho vấn đề tại StackExchange. Tôi đã chuyển mã từ câu trả lời của NowIGetToLearnWhatAHeadIs và nó hoạt động tốt, nhưng có vẻ khá phức tạp đối với tôi. Tôi đang làm việc với Compute Shader, vì vậy việc phân nhánh là một điều tồi tệ và các giải pháp phụ thuộc rất nhiều vào nó.
- Phép tính gần đúng đa thức này mà Amanatides nói đến là gì, và nó được áp dụng như thế nào cho đa giác (đặc biệt là tam giác)?
- Có bất kỳ sự gần đúng nào cho vấn đề sẽ cho kết quả chính xác cộng hưởng (giả sử là 10%) với mức tăng đơn giản về hiệu suất / mã đơn giản không?
- Làm việc với GPU, tôi quan tâm đến một giải pháp tối ưu hóa sử dụng tối thiểu / tối đa so với phân nhánh, chẳng hạn. Có lẽ một cái gì đó như thế này đã tồn tại. Bất kỳ may mắn?