openGL光照要点总结
OpenGL的光照使用的是簡(jiǎn)化的模型,對(duì)現(xiàn)實(shí)的情況進(jìn)行近似。
其中一個(gè)模型被稱為馮氏光照模型,Phong Lighting Model。
馮氏光照模型的主要結(jié)構(gòu)由3個(gè)分量組成:環(huán)境,Ambient;漫反射,Diffuse;鏡面,Specular。
環(huán)境光照,Ambient Lighting,即使在黑暗的情況下,世界上通常也仍然有一些光亮(月亮、遠(yuǎn)處的光),為了模擬這個(gè),使用一個(gè)環(huán)境光照常量,它永遠(yuǎn)會(huì)給物體一些顏色。
漫反射光照,Diffuse Lighting,模擬光源對(duì)物體的方向性影響,Directional Impact;它是馮氏光照模型中視覺(jué)上最顯著的分量;物體的某一部分越是正對(duì)著光源,它就會(huì)越亮。
鏡面光照,Specular Lighting,模擬有光澤物體上面出現(xiàn)的亮點(diǎn);鏡面光照的顏色相比于物體的顏色會(huì)更傾向于光的顏色。
把環(huán)境光照添加到場(chǎng)景:用光的顏色乘以一個(gè)很小的常量環(huán)境因子,再乘以物體的顏色,然后將最終結(jié)果作為片段的顏色。示例代碼:
? ? float ambientStrength = 0.1;
? ? vec3 ambient = ambientStrength * lightColor;
? ? vec3 result = ambient * objectColor;
? ? FragColor = vec4(result, 1.0);
漫反射光照
? ? 為了測(cè)量光線和片段的角度,使用一個(gè)叫做法向量(Normal Vector)的東西,它是垂直于片段表面的一個(gè)向量。兩個(gè)向量之間的角度通過(guò)點(diǎn)乘計(jì)算出來(lái)。
? ? 計(jì)算漫反射光照需要:
? ? ? ? 法向量:一個(gè)垂直于頂點(diǎn)表面的向量;
? ? ? ? 定向的光線:作為光源的位置與片段的位置之間向量差的方向向量。
鏡面光照也是依據(jù)光的方向向量和物體的法向量來(lái)決定的,但是它也依賴于觀察方向。
總結(jié)
以上是生活随笔為你收集整理的openGL光照要点总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 超图js版本添加矢量图层并在图层上绘一个
- 下一篇: C# OpenGL 环境配置和入门程序