Tôi có một kết cấu độ sâu hiện có và một số kết cấu màu khác và muốn xử lý thông tin trong đó bằng cách hiển thị thành kết cấu 3D (dựa trên độ sâu có trong kết cấu độ sâu, nghĩa là một điểm tại (x / y) trong kết cấu độ sâu sẽ được kết xuất thành (x / y / texture (độ sâu, uv)) trong kết cấu 3D).
Đơn giản chỉ cần thực hiện một lệnh gọi thủ công cho mỗi lát của kết cấu 3D (thông qua glFramebufferTextureLayer) rất chậm, vì tôi không biết trước lát cắt nào của kết cấu 3D mà một texel đã cho từ một trong các kết cấu màu hoặc kết cấu chiều sâu. Điều này có nghĩa là toàn bộ quá trình có hiệu quả
for each slice
for each texel in depth texture
process color textures and render to slice
Vì vậy, tôi phải lấy mẫu kết cấu độ sâu hoàn toàn trên mỗi lát và tôi cũng phải trải qua quá trình xử lý (ít nhất là cho đến khi loại bỏ;) cho tất cả các texels trong nó.
Nó sẽ nhanh hơn nhiều nếu tôi có thể sắp xếp lại quá trình để
for each texel in depth texture
figure out what slice it should end up in
process color textures and render to slice
Điều này có thể không? Nếu vậy thì thế nào?
Những gì tôi thực sự đang cố gắng thực hiện: kết cấu màu chứa thông tin ánh sáng (nhìn từ chế độ xem ánh sáng, đó là bản đồ bóng phản chiếu). Tôi muốn tích lũy thông tin đó trong kết cấu 3D và sau đó sử dụng nó để chiếu sáng cảnh. Cụ thể hơn, tôi đang cố gắng thực hiện thuật toán Khối lượng tuyên truyền ánh sáng của Cryteks.