Trọng lượng đường dẫn để lấy mẫu ánh sáng trực tiếp


7

Ban đầu tôi đã viết một pathtracer chỉ bị trả về bởi BRDF và mỗi mẫu được thêm vào một bộ đệm chia cho số lượng khung hình hiện tại.

Bây giờ tôi muốn thực hiện ước tính sự kiện tiếp theo ở mỗi lần nảy, trực tiếp lấy mẫu ánh sáng dọc theo đường dẫn. Làm thế nào để tôi "cân" các mẫu được lấy bằng cách truyền bệnh thường xuyên cùng với các mẫu ánh sáng trực tiếp? Ngay cả khi tôi cân trọng lượng ánh sáng trực tiếp bằng góc rắn của ánh sáng, nếu tôi có nhiều hơn 1 mẫu được lấy, tôi không còn có thể chia cho số lượng khung phải không?


2
Điều này không liên quan gì đến câu hỏi của bạn nhưng có vẻ như bạn có thể sẽ thích thú khi nghe về nó. Bạn nên kiểm tra lấy mẫu có trọng số cosine nếu bạn chưa nghe về nó. Thay vì nhân với cos theta, bạn làm cho các tia của mình được phân phối dựa trên cos theta. Cách dễ nhất để làm điều này là chọn điểm ngẫu nhiên trên đĩa (x / z), sau đó đặt y sao cho nó là một vectơ chuẩn hóa. Bạn kết thúc việc lấy mẫu các hướng có ý nghĩa hơn và hội tụ nhanh hơn.
Alan Wolfe

Rất khó để hiểu những gì bạn cố gắng nói. Bạn có thể làm rõ câu hỏi của bạn? Bạn đang nói về theo dõi đường dẫn tiến bộ và lấy mẫu quan trọng?
JarkkoL

Câu trả lời:


3

Bằng cách "trả lại bởi BRDF", tôi giả sử bạn có nghĩa là chọn các hướng ngẫu nhiên trong bán cầu và cân bằng BRDF, sau đó lấy trung bình trên các mẫu đó. Tôi đoán bạn đang tích lũy một mẫu trên mỗi khung, do đó bạn chia cho số khung hiện tại.

Về mặt lý thuyết là "chính xác", bạn cũng nên cân các mẫu đó bằng cách 2π, vì đó là góc vững chắc của bán cầu mà bạn đang tích hợp. Điều đó không quá quan trọng khi bạn chỉ có một phương pháp lấy mẫu duy nhất, nhưng khi bạn kết hợp nhiều phương pháp, sẽ dễ dàng hơn để đảm bảo mọi thứ đều nhất quán nếu bạn có những yếu tố này.

Sau đó, để kết hợp lấy mẫu ánh sáng trực tiếp rõ ràng, bạn phải chuyển đổi từ mật độ xác suất lấy mẫu ánh sáng sang mật độ xác suất góc rắn tại điểm thu. Nếu các mẫu ánh sáng đồng đều trên khu vực nguồn sáng, thì thay vào đó là đơn giản2π trọng lượng, bạn sẽ sử dụng yếu tố trọng lượng này thay thế:

Ar2(NlightL)
Ở đâu A là diện tích của nguồn sáng, r là khoảng cách giữa điểm thu (điểm đường dẫn hiện tại) và điểm nguồn sáng đã chọn, Nlight là bình thường của điểm sáng, và L là vectơ đơn vị từ điểm đường dẫn, hướng tới điểm sáng.

Yếu tố này cho thấy các điểm nguồn sáng được lấy mẫu sẽ đậm đặc như thế nào trong góc rắn của điểm thu, thay đổi cả về khoảng cách và góc trên bề mặt của nguồn sáng (các điểm sẽ tập trung ở những khu vực mà bề mặt nguồn dốc ra khỏi máy thu, chẳng hạn như xung quanh các cạnh của ánh sáng khu vực hình cầu).

Sau khi tính theo yếu tố này, các mẫu ánh sáng trực tiếp nằm trong cùng một góc góc rắn với các mẫu BRDF, vì vậy bạn có thể thêm chúng lại với nhau và chia cho tổng số mẫu mà bây giờ sẽ gấp đôi số khung hình, nếu bạn Đang thực hiện một mẫu BRDF và một mẫu ánh sáng trên mỗi khung.

Ngoài ra, một điều quan trọng để có được đúng không phải là tính hai lần chiếu sáng. Vì hiện tại bạn đang lấy mẫu đèn một cách rõ ràng, bạn phải đảm bảo không bao gồm màu phát xạ nếu bạn tình cờ chạm vào đèn một cách ngẫu nhiên trong khi thực hiện các mẫu BRDF! Nếu không, bạn sẽ kết thúc với ánh sáng xuất hiện gấp đôi so với bình thường.

Một tinh tế của điều này là bạn có thể chỉ muốn áp dụng lấy mẫu ánh sáng rõ ràng cho phần khuếch tán của BRDF, chứ không phải phần cụ thể. Một điểm nổi bật đặc biệt hẹp được xử lý tốt hơn thông qua việc lấy mẫu BRDF quan trọng thay thế. Điều này ngụ ý rằng khi thực hiện các mẫu ánh sáng rõ ràng, bạn sẽ chỉ đánh giá thành phần khuếch tán của BRDF, và sau đó nếu bạn chiếu một nguồn sáng qua tia phản xạ đặc biệt, bạn sẽ bao gồm màu phát xạ của nó ở đó.

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.