2014-11-01 49 views
0

我正在寫射線追蹤。到目前爲止,我有漫反射和高光照明,我也計劃實施反射和折射。射線追蹤 - 混色

到目前爲止,我已經使用了白光燈,在這裏我計算了這樣的表面顏色:surface_color * light_intensity,除以適當的距離^ 2值,因爲我使用的是點光源。對於鏡面反射,它是light_color * light_intensity。 Afaik,鏡面反射不會改變燈光的顏色,所以這也適用於不同顏色的光源。

當光源不是白色時,我將如何計算從漫反射表面反射的顏色?例如,(0.7,0.2,0)光照(0.5,0.5,0.5)表面。此外,在這種情況下,距離因數是不同的嗎?

另外,如何從不同顏色的光源單點添加光源?例如,(1,0.5,1)表面被(0.5,0.5,1)點亮並且(1,0.7,0.2)點亮。我是否只計算兩者(包括距離)並將它們加在一起?

回答

0
  • 我發現RGB是一個很差的色彩空間來進行光照計算,因爲你必須考慮一堆特殊情況才能獲得看起來很現實的東西或按照你期望的方式行事。如此說來,在HSL而不是RGB中進行照明計算在概念上可能更容易。根據您使用的語言和工具包,這應該是標準庫/分發版或可用工具包的一部分。
  • 一個更物理上準確的替代方案是實現光譜渲染,而不是你的追蹤函數返回RGB值,它們返回一個採樣的光譜功率分佈。跟蹤大量RGB混合特殊情況,SPD更精確,更容易處理,代價是輕微但明顯的性能下降(特別是在未優化的情況下)。鏡面高光和彩色燈光是該模型的自然結果,在一般情況下不需要任何特殊處理。