OpenGL 圖形庫的使用(十七)—— 光照之復(fù)習(xí)總結(jié)

版本記錄

版本號 時間
V1.0 2017.12.31

前言

OpenGL 圖形庫項(xiàng)目中一直也沒用過,最近也想學(xué)著使用這個圖形庫,感覺還是很有意思,也就自然想著好好的總結(jié)一下,希望對大家能有所幫助。下面內(nèi)容來自歡迎來到OpenGL的世界
1. OpenGL 圖形庫使用(一) —— 概念基礎(chǔ)
2. OpenGL 圖形庫使用(二) —— 渲染模式、對象、擴(kuò)展和狀態(tài)機(jī)
3. OpenGL 圖形庫使用(三) —— 著色器、數(shù)據(jù)類型與輸入輸出
4. OpenGL 圖形庫使用(四) —— Uniform及更多屬性
5. OpenGL 圖形庫使用(五) —— 紋理
6. OpenGL 圖形庫使用(六) —— 變換
7. OpenGL 圖形庫的使用(七)—— 坐標(biāo)系統(tǒng)之五種不同的坐標(biāo)系統(tǒng)(一)
8. OpenGL 圖形庫的使用(八)—— 坐標(biāo)系統(tǒng)之3D效果(二)
9. OpenGL 圖形庫的使用(九)—— 攝像機(jī)(一)
10. OpenGL 圖形庫的使用(十)—— 攝像機(jī)(二)
11. OpenGL 圖形庫的使用(十一)—— 光照之顏色
12. OpenGL 圖形庫的使用(十二)—— 光照之基礎(chǔ)光照
13. OpenGL 圖形庫的使用(十三)—— 光照之材質(zhì)
14. OpenGL 圖形庫的使用(十四)—— 光照之光照貼圖
15. OpenGL 圖形庫的使用(十五)—— 光照之投光物
16. OpenGL 圖形庫的使用(十六)—— 光照之多光源

復(fù)習(xí)總結(jié)

恭喜您已經(jīng)學(xué)習(xí)到了這個地方!辛苦啦!不知道你有沒有注意到,總的來說我們在學(xué)習(xí)光照教程的時候關(guān)于OpenGL本身并沒有什么新東西,除了想訪問uniform數(shù)組這樣細(xì)枝末節(jié)的知識。目前為止的所有教程都是關(guān)于使用一些技巧或者公式來操作著色器,達(dá)到真實(shí)的光照效果。這再一次想你展示了著色器的威力。著色器是非常靈活的,你也親眼見證了我們僅僅使用一些3D向量和可配置的變量就能夠創(chuàng)造出驚人的圖像這一點(diǎn)。

在前面的幾個教程中,你學(xué)習(xí)了顏色、馮氏光照模型(包括環(huán)境光照、漫反射光照和鏡面光照)、物體的材質(zhì)、可配置的光照屬性、漫反射和鏡面光貼圖、不同種類的光,并且學(xué)習(xí)了怎樣將所有所學(xué)知識融會貫通,合并到一個程序當(dāng)中。記得去實(shí)驗(yàn)一下不同的光照、材質(zhì)顏色、光照屬性,并且試著利用你無窮的創(chuàng)造力創(chuàng)建自己的環(huán)境。

下一節(jié)當(dāng)中,我們在我們的場景當(dāng)中加入更高級的形狀,這些形狀將會在我們之前討論過的光照模型中非常好看。


詞匯表

  • 顏色向量(Color Vector):一個通過紅綠藍(lán)(RGB)分量的組合描繪大部分真實(shí)顏色的向量。一個物體的顏色實(shí)際上是該物體所不能吸收的反射顏色分量。

  • 馮氏光照模型(Phong Lighting Model):一個通過計算環(huán)境光,漫反射,和鏡面光分量的值來估計真實(shí)光照的模型。

  • 環(huán)境光照(Ambient Lighting):通過給每個沒有被光照的物體很小的亮度,使其不是完全黑暗的,從而對全局光照進(jìn)行估計。

  • 漫反射著色(Diffuse Shading):一個頂點(diǎn)/片段與光線方向越接近,光照會越強(qiáng)。使用了法向量來計算角度。

  • 法向量(Normal Vector):一個垂直于平面的單位向量。

  • 法線矩陣(Normal Matrix):一個3x3矩陣,或者說是沒有平移的模型(或者模型-觀察)矩陣。它也被以某種方式修改(逆轉(zhuǎn)置),從而在應(yīng)用非統(tǒng)一縮放時,保持法向量朝向正確的方向。否則法向量會在使用非統(tǒng)一縮放時被扭曲。

  • 鏡面光照(Specular Lighting):當(dāng)觀察者視線靠近光源在表面的反射線時會顯示的鏡面高光。鏡面光照是由觀察者的方向,光源的方向和設(shè)定高光分散量的反光度值三個量共同決定的。

  • 馮氏著色(Phong Shading):馮氏光照模型應(yīng)用在片段著色器。

  • Gouraud著色(Gouraud shading):馮氏光照模型應(yīng)用在頂點(diǎn)著色器上。在使用很少數(shù)量的頂點(diǎn)時會產(chǎn)生明顯的瑕疵。會得到效率提升但是損失了視覺質(zhì)量。

  • GLSL結(jié)構(gòu)體(GLSL struct):一個類似于C的結(jié)構(gòu)體,用作著色器變量的容器。大部分時間用來管理輸入/輸出/uniform。

  • 材質(zhì)(Material):一個物體反射的環(huán)境光,漫反射,鏡面光顏色。這些東西設(shè)定了物體所擁有的顏色。

  • 光照屬性(Light(properties)):一個光的環(huán)境光,漫反射,鏡面光的強(qiáng)度。可以使用任何顏色值,對每一個馮氏分量(Phong Component)定義光源發(fā)出的顏色/強(qiáng)度。

  • 漫反射貼圖(Diffuse Map):一個設(shè)定了每個片段中漫反射顏色的紋理圖片。

  • 鏡面光貼圖(Specular Map):一個設(shè)定了每一個片段的鏡面光強(qiáng)度/顏色的紋理貼圖。僅在物體的特定區(qū)域顯示鏡面高光。

  • 定向光(Directional Light):只有一個方向的光源。它被建模為不管距離有多長所有光束都是平行而且其方向向量在整個場景中保持不變。

  • 點(diǎn)光源(Point Light):一個在場景中有位置的,光線逐漸衰減的光源。

  • 衰減(Attenuation):光隨著距離減少強(qiáng)度的過程,通常使用在點(diǎn)光源和聚光下。

  • 聚光(Spotlight):一個被定義為在某一個方向上的錐形的光源。

  • 手電筒(Flashlight):一個擺放在觀察者視角的聚光。
    GLSL uniform數(shù)組(GLSL Uniform Array):一個uniform值數(shù)組。它的工作原理和C語言數(shù)組大致一樣,只是不能動態(tài)分配內(nèi)存。

后記

未完,待續(xù)~~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容