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