opengl10基础光照
现实光照的复杂性与OpenGL简化模型:
- 现实世界光照复杂,受多种因素影响,难以模拟。
- OpenGL使用简化模型,如冯氏光照模型,近似现实情况以便更易处理并看起来类似。
冯氏光照模型:
- 由环境、漫反射和镜面光照三个分量构成。
- 模拟环境光照、漫反射和镜面光照对物体的影响。
环境光照:
- 模拟环境中即使黑暗也存在的微弱光线,给物体一些颜色。
- 通过光的颜色乘以常量环境因子,再乘以物体的颜色,将结果作为片段的颜色。
漫反射光照:
- 受光线方向影响,角度越接近光源,物体片段越亮。
- 计算漫反射光照需要法向量、光线方向和片段位置。
- 使用法向量和光线方向的点乘计算影响,乘以光的颜色,得到漫反射分量。
环境光照:
- 模拟即使在黑暗情况下仍有一些光线存在,为物体增添常量颜色以模拟周围光线的影响。
- 通过乘以环境因子和物体颜色来计算片段的颜色。
漫反射光照:
- 反映光源对物体方向性影响,计算光线与物体法向量之间的角度,乘以光的颜色以得到漫反射分量。
- 强调正对光源的部分更亮,角度越大,片段越暗。
法线矩阵:
- 介绍了如何转换法向量到世界空间坐标,避免了不等比缩放对法向量造成的影响。
- 使用法线矩阵针对模型矩阵的左上角3x3部分的逆矩阵的转置矩阵来修复法向量的变换。
镜面光照:
- 计算入射光线的反射向量和观察方向,以及两者之间的夹角来实现高光效果。
- 加入到环境光和漫反射光的组合中,以模拟物体表面的反射性
Code
漫反射
https://gist.github.com/Flandre923/e0e1c5eb1fbfd712c27b54a3c3b6dc35
镜面光照
https://gist.github.com/Flandre923/8eb43384d2f7c05f780b58f462b97788
练习
1
1 |
|
2
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment