Thùy Oj của một shader Lafortune có làm cho ánh sáng bị dịch chuyển không?


7

Tôi đã triển khai trình tạo bóng Lafortune trong WebGL và mối quan tâm lớn nhất của tôi là về công thức này:

nhập mô tả hình ảnh ở đây

Giải trình

Kd / Ks là khuếch tán vật chất / màu sắc đặc trưng, ​​ρd / ρs là thành phần khuếch tán ánh sáng / đặc trưng, ​​m là số lượng thùy (trong shader tôi luôn sử dụng một thùy), o là hướng người xem (từ điểm bề mặt ), i là hướng sáng, Oj là thùy và ej là yếu tố sáng bóng.
Tham khảo đầy đủ tại đây: Một cuộc khảo sát về các mô hình tô bóng để hiển thị thời gian thực , tại trang 28.

Câu hỏi

Vấn đề đi kèm với thùy Oj. Tôi nhận ra rằng khi tôi thay đổi giá trị của Oj, ánh sáng bị dịch chuyển khỏi vị trí ban đầu của nó, ví dụ như đó là những gì tôi nhận được với Oj = (-1, -1,1):

nhập mô tả hình ảnh ở đây

Và đó là những gì tôi nhận được với Oj = (0,0,1):

nhập mô tả hình ảnh ở đây

Hành vi đó có bình thường không? Ánh sáng có bị dịch chuyển theo giá trị của Oj không?


Mô hình BRDF của Lafortune được mô tả chi tiết (bao gồm mã nguồn ví dụ) trong bài viết GPU Gems này .
MooseBoys

Tôi cũng đã thêm tài liệu tham khảo của tôi chỉnh sửa câu hỏi.
Ramy Al Zuhouri

Câu trả lời:


10

Vâng, hoàn toàn, người ta hy vọng rằng bằng cách nào đó ánh sáng dường như ở một nơi khác nếu bạn thay đổi tính chất của thùy chính mà không xem xét ý nghĩa vật lý của nó.

Các thùy mô tả, đối với một hướng ánh sáng tới, trong đó ánh sáng sẽ được phát lại. Dưới đây là một vài ví dụ về các thùy có thể có: một thùy phản xạ hình dạng hoàn hảo (đối với mô hình Phong), một thùy ngoại hình và một thùy phục hồi (như trường hợp cho các bề mặt catadioptric).

thùy

Bạn có thể quen thuộc với các điểm nổi bật đầu cơ . Khi bề mặt rất sáng bóng, đó là khu vực xung quanh ánh sáng được phát lại nhiều nhất đến mắt người xem. Điều này xảy ra khi hướng ánh sáng và hướng người xem được phản xạ chính xác ( tức là vectơ xem gần với vectơ R ở trên).

Trong trường hợp phục hồi cũng có một điểm nổi bật, nhưng điểm nổi bật đó nằm ở nơi ánh sáng và hướng người xem gần nhau ( tức là vectơ xem gần với vectơ L ).

Dưới đây là một ví dụ về các khu vực được tô sáng trong hai trường hợp khác nhau:

nổi bật

Như bạn có thể thấy, tùy thuộc vào thùy và ngay cả khi ánh sáng không di chuyển, các điểm nổi bật có thể ở các vị trí rất khác nhau.

Trong trường hợp cụ thể của bạn, bạn đã chọn Oj = [0,0,1]. Điều đó có nghĩa là bất kể hướng nào của ánh sáng tới, ánh sáng nhiều nhất sẽ luôn được phát lại dọc theo bề mặt bình thường. Nói cách khác, điểm nổi bật sẽ được đặt ở nơi vectơ xem đối diện với bề mặt bình thường . Và đây chính xác là những gì ảnh chụp màn hình thứ hai của bạn cho thấy.

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.