我有一個小路徑示蹤器,我試圖找出如何實現一些基本的BRDF。 這裏的管道我使用(不遞歸)的簡要說明:BRDF通常如何實施?
1) For each pixel:
1.1) For each sample:
1.1.1) I construct a path.
1.1.2) I calculate the contribution of this path.
1.1.3) I calculate the "probability" of this path.
1.1.4) Finally, I calculate the overall color value(taking into account number of samples, "probability" and contribution of the path).
1.2) Take the sum of all samples' values and write it to the pixel.
所以,我計算反射光線的方向在步驟1.1.1) I construct a path
。
現在,我已經實現了漫反射,鏡面反射,光澤反射,折射。 現在我想實現一個複雜的BRDF,讓我們說庫克託蘭斯BRDF。 我看到它包含幾個組件(漫反射和鏡面反射)。我應該如何追蹤這些光線以獲得組合?我應該隨機選擇diffuse_ray/specular_ray,然後像往常一樣累積這些值(乘以一些係數)(例如,如果隨機值大於0.5,則追蹤漫射射線,否則 - 鏡面)或者我應該追蹤多條射線從每個路口?
它通常在基於物理的渲染器中實現嗎?
P.S.如果有人知道關於這個話題的一些好文章,我會很高興看到他們。我試着讀pbrt,但對我來說似乎非常複雜和巨大。有些東西的實現方式不同,如相機型號和其他東西。
在我的隨機跟蹤器中,我爲高光和漫反射生成了單獨的光線,但上面概述的方法使光線樹更小,並且應該減少計算複雜度。我曾考慮過使用這種方法,但我無法弄清楚如何使隨機係數具有「顏色」,以便漫反射和鏡面反射之間的分離可以根據表面顏色而變化(因爲我認爲這是發生在塑料和金屬材料上的) – Alnitak