前面代码:
https://files.cnblogs.com/files/zach0812/zcb202007121246.zip
颜色 Colors:
资料:https://learnopengl-cn.github.io/02%20Lighting/01%20Colors/
代码:
https://files.cnblogs.com/files/zach0812/zcb202007121515.zip
效果图:
光照基础 Basic Lighting:
- 环境光照(Ambient Lighting):即使在黑暗的情况下,世界上通常也仍然有一些光亮(月亮、远处的光),所以物体几乎永远不会是完全黑暗的。为了模拟这个,我们会使用一个环境光照常量,它永远会给物体一些颜色。
- 漫反射光照(Diffuse Lighting):模拟光源对物体的方向性影响(Directional Impact)。它是冯氏光照模型中视觉上最显著的分量。物体的某一部分越是正对着光源,它就会越亮。
- 镜面光照(Specular Lighting):模拟有光泽物体上面出现的亮点。镜面光照的颜色相比于物体的颜色会更倾向于光的颜色。
漫反射光照:
图左上方有一个光源,它所发出的光线落在物体的一个片段上。我们需要测量这个光线是以什么角度接触到这个片段的。
如果光线垂直于物体表面,这束光对物体的影响会最大化,最亮。
如果光线平行于物体表面,这束光对物体的影响会最小,最暗。
如何计算光线对片段颜色的影响?
点乘(cosθ 关系)返回一个标量,我们可以用它。不同片段朝向光源的方向的不同,这些片段被照亮的情况也不同。
所以,
- 法向量:一个垂直于顶点表面的向量。
- 定向的光线:作为光源的位置与片段的位置之间向量差的方向向量。为了计算这个光线,我们需要光的位置向量和片段的位置向量。
代码:
https://files.cnblogs.com/files/zach0812/zcb202007181734.zip
镜面光照
Specular Highlight 高光反射
这里的和人眼就有关了,跟观察者的位置有关系,
Note : 漫反射是不关心人的眼睛的,高光反射是考虑人眼的,
最终计算还是 计算 橘色向量和 人眼的向量的点乘,
具体的计算步骤是:
1,先用灯光向量和法向量产生橘色向量
2,然后用橘色向量和眼睛向量做点乘
代码:
https://files.cnblogs.com/files/zach0812/zcb202007181815.zip
材质 Materials
参考文档: https://learnopengl-cn.github.io/02%20Lighting/03%20Materials/
代码01:
https://files.cnblogs.com/files/zach0812/zcb202007192234.zip
代码再次封装:
https://files.cnblogs.com/files/zach0812/zcb202007192303.zip
光照贴图Lighting Map
漫反射贴图(Diffuse Map):
https://files.cnblogs.com/files/zach0812/zcb202007211215.zip
镜面光贴图(Specular Map)
https://files.cnblogs.com/files/zach0812/zcb202007211232.zip
投光物 Lighting Caster:
我们目前使用的光照都来自于空间中的一个点。它能给我们不错的效果,但现实世界中,我们有很多种类的光照,每种的表现都不同。将光投射(Cast)到物体的光源叫做投光物(Light Caster)。在这一节中,我们将会讨论几种不同类型的投光物。学会模拟不同种类的光源是又一个能够进一步丰富场景的工具。
我们首先将会讨论定向光(Directional Light),接下来是点光源(Point Light),它是我们之前学习的光源的拓展,最后我们将会讨论聚光(Spotlight)。
定向光:
https://files.cnblogs.com/files/zach0812/zcb202007232231.zip