这个系列接近尾声了,自己也着急想早点弄完,最近忙着项目的事情,一连几天没有更新, 更新的时候遇到疑点也没有时间细细研究,大抵是囫囵吞枣,这种习惯很不好, 来得容易忘得也容易,到底是纸上得来终觉浅;想着闲下来细细做几个课题作业,想弄的很多,想看一遍整理一下Lua5.3.5的源码,分析一下skynet的机制,还想了解一下IBM-PC微机原理,一直因为各种各样的项目琐事被迫往后推迟,现在和自己说过最多的谎话大概是,等我闲下来。
一、光照计算的回顾
Blinn-Phong光照明模型
二、光照计算发生在哪个阶段?
三、三种明暗处理方法
1、常数明暗处理
2、Gourand阴暗处理(Gouraud shading)
3 、Phong明暗处理(phong shading)
四、用Vertex Shader实现逐顶点的光照计算(Gourand shading)
在Vertex shader中计算光照明公式:
关于光照计算这个前面的文章中有https://zhuanlan.zhihu.com/p/84093894介绍,
五、光照相关的全局变量
六、光照方向的计算(点光源)
七、视线方向的计算
eyeDir = vec3((vec4(0.0) - v));
eyeDir = normalize(eyeDir);
八、法向的计算
vec3 normal = vec3(gl_NormalMatrix * gl_Normal);
normal = normalize( normal );
为什么不是vec3 normal = vec3(gl_ModelViewMatrix * gl_Normal)?
扩展链接:https://www.jianshu.com/p/e001aec29976
九、计算H,N.L,N.H
这里做了一个判断,当是背面光照的时候我们不做计算
十、由此即可完成整个光照模型的计算