Tôi sử dụng XNA cho các dự án của mình và trên các diễn đàn đó, đôi khi tôi thấy các tài liệu tham khảo về việc hoán đổi hiệu ứng cho lưới có chi phí khá cao, điều này làm tôi ngạc nhiên khi tôi nghĩ rằng việc hoán đổi hiệu ứng chỉ đơn giản là một trường hợp sao chép chương trình đổ bóng thay thế đến GPU cùng với các thông số phù hợp.
Tôi tự hỏi nếu ai đó có thể giải thích chính xác những gì tốn kém về quá trình này? Và đặt, nếu có thể, "tương đối" vào bối cảnh?
Ví dụ, tôi muốn sử dụng một shader ngắn để giúp chọn, tôi sẽ:
- Thay đổi hiệu ứng trên mọi đối tượng, lấy một màu duy nhất để xác định nó và cung cấp cho shader.
- Vẽ tất cả các đối tượng vào một mục tiêu kết xuất trong bộ nhớ.
- Lấy màu từ mục tiêu và sử dụng nó để tra cứu đối tượng đã chọn.
Phần nào của tổng thời gian cần thiết để hoàn thành quá trình đó sẽ được dành để hoán đổi các shader? Bản năng của tôi sẽ nói rằng việc dựng lại cảnh một lần nữa, cho dù trình tạo bóng đơn giản đến đâu, sẽ là một thứ tự cường độ chậm hơn bất kỳ phần nào khác của quá trình, vậy tại sao tất cả lại quan tâm đến hiệu ứng?