Có phải là một người theo dõi con đường ngây thơ cần nhiều, nhiều mẫu để hội tụ?


7

Tôi có một triển khai theo dõi đường dẫn vật liệu khuếch tán / phát xạ ngây thơ (máy ảnh pinhole) và tôi thấy nó cần một số lượng rất lớn các mẫu trên mỗi pixel để hội tụ - như có thể trong hàng triệu - và tự hỏi liệu điều đó có bình thường đối với trình theo dõi đường dẫn "ngây thơ" không thực hiện?

Dưới đây là 10.000 mẫu trên mỗi pixel: nhập mô tả hình ảnh ở đây

Và đây là hình ảnh 10.000spp sử dụng các mẫu bán cầu có trọng số cosine để so sánh: nhập mô tả hình ảnh ở đây

Đối với mỗi pixel tôi làm điều này:

  1. Chiếu tia vào khung cảnh cho pixel (bắt đầu từ mặt phẳng gần, hướng của máy ảnh đến vị trí của pixel trên mặt phẳng gần).
  2. Khi một đối tượng bị tấn công, tôi tính toán một hướng ngẫu nhiên thống nhất trong bán cầu được xác định bởi bình thường và tiếp tục.
  3. Ở mỗi cấp độ, tôi trả lại emissive + (2 * Dot (bình thường, nảyRayDir) * ColorFromBounceRay * DiffuseColor / pi)
  4. Nếu không có gì bị tia dội lại, tôi sẽ trả về màu đen.
  5. Tôi đang làm việc với 3 kênh màu điểm nổi, trong đó mục đích là 0-1 tương ứng với 0-255 trong đầu ra cuối cùng uint8 trên mỗi kênh màu.
  6. Tôi cho phép tối đa 5 lần nảy.

Sau khi lấy trung bình tất cả các mẫu cho pixel, tôi thực hiện việc này để chuyển đổi nó từ HDR sang LDR:

  1. Đối với mỗi kênh màu tôi thực hiện hiệu chỉnh gamma: channel = powf (channel, 1.0f /2.2f)
  2. Sau đó, tôi nhân giá trị kênh với 255, kẹp nó từ 0-255 và chuyển nó thành uint8 cho màu pixel cuối cùng.

Mã nguồn có thể được nhìn thấy ở đây trong ý chính dưới đây. Nó bao gồm windows.h cho tiêu đề bitmap, nhưng mặt khác không có tiêu đề tiêu chuẩn thuốc, và không phụ thuộc thư viện: https://gist.github.com/anonymous/0dc9f7f5abf15f8fdb9aa84ecfcf67d5


2
Bản thử nghiệm truy tìm đường dẫn WebGL cũng không hội tụ rất nhanh cho các gương phản xạ khuếch tán. Vì vậy, của bạn ít nhất không phải là người duy nhất có tài sản như vậy.
Ruslan

Câu trả lời:


11

Nếu không lấy mẫu ánh sáng rõ ràng, tôi mong đợi sự hội tụ rất chậm.

Bất kỳ con đường nào không xảy ra để chạm vào nguồn sáng trước khi bị chấm dứt sẽ là vô ích (đóng góp bằng không). Vì bạn có một nguồn sáng nhỏ, phần lớn các đường dẫn sẽ không chạm vào nó. Sẽ rất thú vị khi thêm một số thống kê vào trình theo dõi của bạn để xem có bao nhiêu đường dẫn trả về 0 so với khác không. Tôi đoán bạn sẽ tìm thấy thứ gì đó giống như 99 Hàng99,9% trong số đó là số không, vì vậy bạn chỉ nhận được một mẫu hữu ích trong số 100 đường dẫn 1000 hoặc hơn.

Theo dõi đường dẫn ngây thơ là hợp lý hơn với ví dụ như một ánh sáng bầu trời, mà hầu như mọi con đường đều có thể được dự kiến ​​sẽ chạm tới.


Là gì lấy mẫu ánh sáng rõ ràngánh sáng trên bầu trời ? computergraphics.stackexchange.com/questions/8596/ từ
zwcloud

5

Vâng, điều này được mong đợi. Sự khác biệt giữa hai hình ảnh của bạn là sự khác biệt giữa sử dụng và không sử dụng lấy mẫu quan trọng.

Hình ảnh đầu tiên cho thấy nhiễu đáng chú ý hơn hình ảnh thứ hai. Điều này là do thay vì thiên vị các mẫu bán cầu so với bình thường bằng cách sử dụng trọng số cosin, mã thay vào đó là các mẫu đồng nhất trên bán cầu và sau đó cho ánh sáng phản xạ ít hơn tới các tia gần vuông góc với bình thường. Lưu ý rằng vì điều này sử dụng sản phẩm chấm, đây cũng là trọng số cosine:

AB=ABcosθ

Đó chỉ là trọng số đóng góp của từng tia, chứ không phải trọng số lượng tia theo mỗi hướng.

Hình ảnh thứ hai ít nhiễu hơn vì nó không lãng phí nhiều mẫu trên các tia gần vuông góc, đóng góp rất ít cho hình ảnh. Hình ảnh vẫn sẽ hội tụ đến cùng một kết quả được cung cấp đủ mẫu - cách tiếp cận được thực hiện trong hình ảnh thứ hai sẽ đến đó sớm hơn nhiều.

Hiệu quả trong cả hai trường hợp là như nhau:

  • Cách tiếp cận 1 : Trọng số được áp dụng cho lượng ánh sáng phản xạ trên mỗi tia, dẫn đến nhiều tia có đóng góp rất ít.
  • Cách tiếp cận 2 : Mỗi tia được cho cùng một trọng lượng, nhưng ít hơn trong số chúng được sử dụng theo các hướng liên quan đến sự đóng góp nhỏ.

Tổng dài hạn là như nhau, nhưng cách tiếp cận 1 liên quan đến nhiều tia có sự đóng góp không đáng kể, vẫn đòi hỏi tính toán nhiều như bất kỳ tia nào khác, do đó lãng phí phần lớn thời gian tính toán.


Lưu ý rằng ngay cả khi tăng tốc độ này, tốc độ hội tụ vẫn sẽ rất chậm đối với các cảnh có ánh sáng nhỏ, sáng hoặc nếu có những phần của cảnh chỉ có thể truy cập bằng các đường hẹp. Nói chung, bất kỳ cảnh nào có các khu vực chỉ có một phạm vi góc hẹp đóng góp phần lớn ánh sáng.


1
+1 để cung cấp cho tôi phần giới thiệu đơn giản / dễ hiểu về lấy mẫu quan trọng.
PeteUK
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.