光線追蹤實踐(四)高光、陰影和反射

教程來自


目前我們已經搭建瞭一個擁有光源的基礎場景,接下來讓我們完善球體的光照模型。

高光

我們經常能夠看到物體的表面會產生高光,尤其是一些比較光滑的物體。高光的大小我們可以用一種近似的方法來衡量,即當視線方向和光線的鏡面反射方向夾角較小時,我們可以看到更明顯的高光。

那麼首先我們需要根據入射光的方向向量求出鏡面反射光的方向向量,幾何意義比較清晰簡單,因為這裡是鏡面反射,所以入射光和反射光與法線的夾角是一樣的,那麼隻需要用入射光的方向向量減去其在法線方向上的兩倍投影長度的投影向量,即為鏡面反射光的方向向量。

寫一個專門用於計算反射光的函數:

vec3 reflect(const vec3 &I, const vec3 &N) {
return I - N * 2.f * (I * N);;
}

赞(0)