光照模型及cg實現

2021-05-24 21:52:58 字數 1636 閱讀 4883

經典光照模型(illumination model)

物體表面光照顏色由入射光、物體材質,以及材質和光的互動規律共同決定。

由於環境光給予物體各個點的光照強度相同,且沒有方向之分,所以在只有環境光的情況下,同一物體各點的明暗程度均一樣。

環境光是對光照現象的最簡單抽象,侷限性很大。它僅能描述光線在空間中無方向並均勻散布時的狀態。

還有一種是平行光,即光線都從同乙個方向照射。通過模擬方向光和物體表面的互動模式,可以渲染出具有高真實感(明暗變化、鏡面反射等)的三維場景。

漫反射與lambert 模型

粗糙的物體表面向各個方向等強度地反射光,這種等同地向各個方向散射的現象稱為光的漫反射(diffuse reflection)

對於僅暴露在環境光下的朗伯反射體,可以用公式(9-1)表示某點處漫反射的光強:

其中ia表示環境光強度(簡稱光強),dk(0

當方向光照射到朗伯反射體上時,漫反射光的光強與入射光的方向和入射點表面法向夾角的余弦成正比,這稱之為lambert 定律,並由此構造出lambert漫反射模型:

i是點光源強度,θ是入射光方向與頂點法線的夾角,稱為入射(0≤θ ≤90°)

若n 為頂點單位法向量,l 表示從頂點指向光源的單位向量(注意,是由頂點指向光源,不要弄反了),則cosθ 等價於n 與l 的點積。所以公式(9-2)可以表示為公式(9-3):

綜合考慮環境光和方向來,lambert 光照模型可寫為:

漫反射渲染

漫反射光照模型頂點著色程式(使用結構體)

鏡面反射與phong 模型

lambert 模型較好地表現了粗糙表面上的光照現象,但表現不出光澤,主要原因是該模型沒有考慮這些表面的鏡面反射效果。

phong bui tuong 提出乙個計算鏡面反射光強的經驗模型,稱為phong模型,認為鏡面反射的光強與反射光線和視線的夾角相關,其數學表達如公式(9-5)所示:

k 為材質的鏡面反射係數, ns是高光指數,v表示從頂點到視點的觀察方向, r代表反射光方向。

高光指數反映了物體表面的光澤程度。ns越大,反射光越集中,當偏離反射方向時,光線衰減的越厲害,只有當視線方向與反射光線方向非常接近時才能看到鏡面反射的高光現象,此時,鏡面反射光將會在反射方向附近形成亮且小的光斑; ns越小,表示物體越粗糙,反射光分散,觀察到的光斑區域小,強度弱。

反射光的方向r 可以通過入射光方向l(從頂點指向光源)和物體法向量n求出:

phong 模型渲染

phong 光照模型的頂點著色程式實現

phong 光照模型片段著色實現的結構體

首先將幾何頂點的模型空間座標轉換為用於光柵化的投影座標;然後將頂點模型座標和法向量模型座標賦值給繫結texcoord 語義詞的變數,用於傳遞到片段著色程式中。

phong 光照模型頂點著色程式

phong 光照模型片段著色程式

blinn-phong 光照模型

phong光照模型中,必須計算v • r的值,其中r為反射光線方向單位向量,v 為視線方向單位向量,但是在blinn-phong光照模型中,用n • h 的值取代了v • r。blinn-phong光照模型公式為:

h 是「光入射方向l 和視點方向v 的中間向量」,通常也稱之為半形向量。

blinn-phong 模型片段著色程式

CG語言 基本光照渲染

本人新人一枚,想要將自己所學分享給大家,如有錯誤或不足請大家毫不猶豫的指出,謝謝大家的支援!那麼開始吧 乙個物體我們能看見是通過被光線照亮後經過反射進入我們的眼睛後大腦成像。計算機 gpu 就是計算進入眼睛之前的各個步驟得到的從而給我們反饋乙個結果。計算公式 su cecolor emissive ...

簡單光照模型(Lambert 光照模型)

環境光是對光照現像的最簡單抽象,因而侷限性很大。它僅能描述光線在空間中無方向並均勻散布時的狀態。很多情況下,入射光是帶有方向的,比如典型的陽光。如果光照射到比較粗糙的物體表面,如粉筆,由於這些表面從各個方向等強度地反射光,因而從各個視角出發,物體表面呈現相同的亮度,所看到的物體表面某點的明暗程度不隨...

8 光照模型 蘭伯特光照模型

光照模型就是乙個公式,使用這個公式來計算在某個點的光照效果。標準光照模型 在標準光照模型裡,我們把進入攝像機的光分為下面幾個部分 自發光 self luminous 如螢火蟲 高光反射 specular 漫反射 diffuse 向量點乘和叉乘 點乘 標量 代表a在b上的投影和b的乘積 a b a b...