Làm thế nào để kết hợp đúng các thuật ngữ khuếch tán và đầu cơ?


18

Theo như tôi hiểu, trong BRDF, thuật ngữ Fresnel đang cho chúng ta biết xác suất để một photon bị phản xạ hoặc khúc xạ khi nó chạm vào bề mặt.

Các photon phản xạ sẽ đóng góp vào thuật ngữ đặc trưng, ​​trong khi các photon khúc xạ sẽ góp phần vào thuật ngữ khuếch tán. Do đó, khi xác định, theo cách thức vật lý, sự đóng góp của ánh sáng vào màu sắc của vật liệu, tôi cảm thấy bị cám dỗ chỉ viết:

// Assuming for example:
//   diffuse = dot(L, N);
//   specular = pow(dot(H, N), alpha) * (alpha + 2.0) / 8.0;
//   fresnel = f0 + (1.0 - f0) * pow(1.0 - dot(E, H), 5.0);
color = lightIntensity * Lerp(diffuse * albedo, specular, fresnel);

Tuy nhiên, tôi không nghĩ rằng tôi đã từng thấy nó được viết theo cách này. Tôi đã thấy thuật ngữ cụ thể được tính trọng số theo thuật ngữ Fresnel, nhưng không phải là thuật ngữ khuếch tán. Trong bài viết chủ yếu được tham khảo trên PBR , Sébastien Lagarde thậm chí còn tuyên bố rằng việc sử dụng để cân nhắc thuật ngữ khuếch tán là không chính xác.(1-F)

Tôi đang thiếu gì?
Tôi rất hoan nghênh một lời giải thích nổi bật theo cách rõ ràng tại sao điều này sẽ không chính xác.

Câu trả lời:


14

Sử dụng hai thuật ngữ Fresnel là chính xác theo nghĩa là bất kỳ đường khuếch tán đã cho nào sẽ đi qua bề mặt hai lần. Nếu bạn đang giải quyết khuếch tán bằng cách lần theo một đường đi qua môi trường cho đến khi nó bật ra một lần nữa thì bạn sẽ nhận được hai (hoặc nhiều) thuật ngữ Fresnel cho đường dẫn đó khi nó tương tác với bề mặt.

Tuy nhiên, đó không phải là những gì bạn đang làm với BRDF khuếch tán. BRDF khuếch tán được dự định đại diện cho mức trung bình của tất cả các đường khuếch tán có thể có. Trong trường hợp của Lambertian, mức trung bình được mô hình hóa là sự phản xạ đồng nhất và một giá trị albedo duy nhất đo lường sự mất năng lượng bên trong trong quá trình khuếch tán, nhưng các mô hình phức tạp hơn là có thể. Điều quan trọng: một BRDF khuếch tán sẽ bao gồm hiệu ứng tổng hợp của một số đường được phản xạ trở lại vào môi trường để khuếch tán hơn nữa và một số bị loại bỏ ngay lập tức. đã được "nướng" vào BRDF¹ và bạn không cần yếu tố đó nữa.1-Fobạnt

Điều mà thuật ngữ Lambertian không bao gồm là phần năng lượng bị mất do bị phản xạ trước khi ánh sáng đi vào môi trường khuếch tán. Điều này phụ thuộc vào chế độ xem, nhưng phụ thuộc vào thùy bóng chính xác phía trên nó. Không có tổn thất năng lượng ở giao diện bề mặt (phi kim loại) nên mọi thứ không phản xạ sẽ bị khúc xạ, nghĩa là điều bạn thực sự muốn là tích hợp tổng tổn thất năng lượng ở bề mặt trên tất cả các hướng đi, tức là .1-bóng_bsdf(trong,ngoài)dngoài

Có thể tính toán gần đúng với tích phân đó cho các BRDF cụ thể. Kết quả cuối cùng nói chung sẽ phụ thuộc vào hướng xem, độ nhám vật liệu và IOR ít nhất. Là một xấp xỉ đầu tiên, bạn có thể giả định rằng thùy bóng là một phản xạ hoàn toàn cụ thể. Điều đó mang lại trọng số là , đó chính xác là những gì bạn đề xuất đầu tiên.1-bóngdngoài= =1-FTôin

Ngoài ra, lưu ý rằng Lambertian BRDF là suất phản chiếu chia cho và thuật ngữ cosin là thước đo mức độ suy giảm của ánh sáng tới trên bề mặt; nó áp dụng cho cả phản xạ bóng và khuếch tán.π

Vì vậy, đại khái:

// Assuming for example:
//   diffuse = albedo / PI;
//   specular = my_favorite_glossy_brdf(in_dir, out_dir, roughness);
//   fresnel = f0 + (1.0 - f0) * pow(1.0 - dot(E, H), 5.0);
//   total_surface_reflection = fresnel
color = lightIntensity * dot(L, N) * Lerp(diffuse, specular, total_surface_reflection);

¹ Thực sự là không thể thiếu của khắp nơi cố lối thoát khuếch tán nội bộ có thể là kết quả theo hướng ra ngoài của bạn, nhưng tôi lạc đề.F


8

Trong khi duyệt để viết đúng câu hỏi của tôi, tôi thực sự tìm thấy câu trả lời , điều này xảy ra rất đơn giản.

Một thuật ngữ Fresnel khác cũng sẽ có trọng lượng khi các photon thoát ra khỏi vật liệu (do đó bị khúc xạ trong không khí) và trở thành thuật ngữ khuếch tán. Do đó, yếu tố chính xác cho thuật ngữ khuếch tán sẽ là:

(1-FTôin)*(1-Fobạnt)

1
Phần giấy BRDF của Disney phần 5.3 đề cập đến phương trình trong câu trả lời của bạn và sau đó tiếp tục chỉ định một mô hình khác. Tôi không yêu cầu hiểu bất cứ điều gì vì tôi vừa mới bắt đầu triển khai BRDF bóng bẩy của mình!
PeteUK ngày

Tôi cho rằng điều này sẽ tiếp tục từ đây, nơi ánh sáng phản xạ lại bên trong sau đó sẽ chiếu lại bề mặt từ bên trong, ở phía đối diện, và sau đó, và một lần nữa, mỗi lần giảm dần, vào vô cực: P (hoặc vào phụ tán xạ bề mặt hehe)
Alan Wolfe

Làm thế nào để bạn tính toán một thuật ngữ Fresnel khác?
plasmacel
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.