Độ chi tiết của Shadowmap


7

Tôi nghĩ rằng chúng ta có thể sử dụng lại cùng một bóng tối cho mọi ánh sáng. Nhưng tôi đã thấy một bài báo trong ngành gợi ý rằng bạn không thể sử dụng lại bóng tối giữa các đèn và phải sử dụng các bề mặt riêng biệt.

Chúng ta có cần một bóng tối cho mỗi ánh sáng không? Hoặc một cho toàn bộ quá trình?


Có lẽ. Nó phụ thuộc vào hiệu ứng mà bạn muốn đạt được.
Gustavo Maciel

Câu trả lời:


5

Bằng cách "sử dụng lại cùng một bóng tối" Tôi giả sử bạn có nghĩa là sử dụng lại bộ nhớ (mục tiêu kết xuất). Rõ ràng bạn không thể sử dụng lại dữ liệu vì mỗi ánh sáng có một cái nhìn khác nhau về thế giới. :)

Dù sao, vâng, bạn có thể sử dụng lại mục tiêu kết xuất nếu bạn muốn. Có một vài cảnh báo. Đầu tiên, rõ ràng bạn phải thiết kế trình kết xuất của mình để nó chỉ cần một bản đồ bóng tại một thời điểm, điều này có thể gây bất tiện hoặc có thể yêu cầu một số thay đổi trong đường ống của bạn. Ví dụ, nếu bạn muốn sử dụng ánh xạ bóng xếp tầng cho ánh sáng mặt trời, bạn có thể cần một bộ đệm không gian màn hình để giữ kết quả bóng, vì vậy bạn có thể tích lũy nhiều lát mà không cần vẽ lại cảnh của mình cho mỗi lát.

Một lưu ý khác là bạn có thể thấy hiệu suất giảm, vì nhiều GPU mới hơn có thể hoạt động song song nhiều cuộc gọi rút thăm (thậm chí với các mục tiêu kết xuất khác nhau), nhưng điều này sẽ phá vỡ nếu một cuộc gọi rút thăm cần kết quả của cuộc gọi trước đó. Vì vậy, nếu bạn có một số mục tiêu kết xuất bản đồ bóng, GPU có thể song song (trong một chừng mực nào đó) các lệnh gọi vẽ để vẽ tất cả các bản đồ bóng, sau đó song song hóa các lệnh gọi vẽ bản đồ bóng và vẽ đèn. Nhưng nếu bạn chỉ có một mục tiêu kết xuất, bạn phải vẽ bản đồ bóng A, vẽ ánh sáng A, vẽ bản đồ bóng B, vẽ ánh sáng B, v.v. Trên các GPU cao cấp, các hoạt động này có thể không bão hòa GPU riêng lẻ, vì vậy một số lõi sẽ được nhàn rỗi.

Vì điều này, để có hiệu suất tốt nhất, có lẽ bạn nên có ít nhất hai mục tiêu kết xuất bản đồ bóng và xoay vòng qua chúng, nhưng vẫn không bắt buộc phải có mục tiêu kết xuất riêng cho từng ánh sáng riêng lẻ. Một cách khác là cố gắng cung cấp cho GPU một số công việc khác mà nó có thể sử dụng để lấp đầy các khoảng trống --- vẽ các hạt vào một mục tiêu kết xuất riêng biệt, có lẽ. (Và như với tất cả các mối quan tâm về hiệu suất, YMMV, vì vậy hãy lập hồ sơ!)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.