用乘法模拟颜色:光的颜色×物体表面颜色=可见颜色
[Unity Shader入门精要.pdf](Unity Shader入门精要.pdf)
通过Uniform将颜色传入Shader,Fragment Shader中对光、物体、贴图颜色做乘法,得到一个vec4
即为最后得到的颜色。
补充:gl_Position
是GLSL的一种内建变量
GLSL有几个以**gl_**为前缀的变量,使我们有一个额外的手段来获取和写入数据。其中两个我们已经打过交道了:
gl_Position
和gl_FragCoord
,前一个是顶点着色器的输出向量,后一个是片段着色器的变量。 来源:LearnOpenGL
gl_Position
是顶点着色器裁切空间输出的位置向量。
模拟光源对物体的方向性影响
Lanbert模型开始:
入射光与法线内积,得到所见亮度
FragColor = vec4(objectColor * ambientColor, 1.0);