Tôi sẽ không khuyên bạn nên thử dò tìm tia thực tế trong OpenGL vì bạn cần rất nhiều mẹo và thủ thuật cho điều đó và nếu bạn hỏi tôi, sẽ không có điểm nào trong việc thực hiện điều này nữa. Nếu bạn muốn thực hiện tìm kiếm tia trên GPU, bạn nên sử dụng bất kỳ ngôn ngữ GPGPU nào, chẳng hạn như CUDA hoặc OpenCL vì nó làm cho mọi thứ trở nên dễ dàng hơn nhiều (nhưng vẫn còn, xa tầm thường).
Để minh họa vấn đề thêm một chút: Để chiếu tia, bạn cần theo dõi các tia thứ cấp và kiểm tra giao điểm với hình học. Do đó, bạn cần truy cập vào hình học theo cách thông minh bên trong trình đổ bóng của bạn, tuy nhiên bên trong trình đổ bóng phân đoạn, bạn không thể truy nhập hình học, nếu bạn không lưu trữ nó "được mã hóa" vào một số kết cấu. Trình đổ bóng đỉnh cũng không cung cấp cho bạn thông tin hình học này một cách tự nhiên, và các trình đổ bóng hình học chỉ biết những người hàng xóm để ở đây sự cố đã bắt đầu. Tiếp theo, bạn cần tăng tốc cấu trúc dữ liệu để có được bất kỳ tỷ lệ khung hình hợp lý nào. Tuy nhiên, vượt qua ví dụ: một Kd-Tree bên trong một shader là khá khó khăn và nếu tôi nhớ lại chính xác, có một số giấy tờ chỉ duy nhất về vấn đề này. Nếu bạn thực sự muốn đi tuyến đường này, mặc dù, có rất nhiều giấy tờ về chủ đề này, nó không phải là quá khó để tìm thấy chúng.
Trình theo dõi tia yêu cầu các mẫu truy cập được thiết kế rất tốt và bộ nhớ đệm để đạt hiệu suất tốt. Tuy nhiên, bạn chỉ có ít quyền kiểm soát các bên trong GLSL và tối ưu hóa hiệu suất có thể trở nên thực sự khó khăn.
Một điểm cần lưu ý khác là, ít nhất là với kiến thức của tôi, theo dõi tia thời gian thực trên GPU hầu như bị giới hạn trong các cảnh tĩnh vì ví dụ: kd-tree chỉ hoạt động (tốt) cho các cảnh tĩnh. Nếu bạn muốn có cảnh động, bạn cần cấu trúc dữ liệu khác (ví dụ: BVHs, iirc?) Nhưng bạn liên tục cần phải duy trì những cấu trúc đó. Nếu tôi đã không bỏ lỡ bất cứ điều gì, vẫn còn rất nhiều nghiên cứu hiện đang diễn ra chỉ về vấn đề này.
Btw: google scholar là bạn của bạn trên những nội dung như thế này. Làm thế nào về http://scholar.google.de/scholar?q=glsl+ray+tracing – zerm
OpenCL nó là ... –
Ý của bạn là "cấu trúc dữ liệu tăng tốc"? – bluejamesbond