Opengl es 基本光照
Opengl es 中将光照分成了3种组成元素(3个通道),环境光、散射光以及镜面光。
环境光(Ambient):
物体周围的光线,从四面八方照射到物体上,全方位360度都是均匀的光,不依赖于光源位置,而且没有方向性。环境光不但入射均匀,反射各向也均匀。
数学模型公式:
环境光照射结果 = 材质的反射系数 × 环境光强度
顶点着色器
#version 300 es
uniform mat4 uMVPMatrix; //总变换矩阵
in vec3 aPosition; //顶点位置
out vec3 vPosition;//用于传递给片元着色器的顶点位置
out vec4 vAmbient;//用于传递给片元着色器的环境光分量
void main()
{
//根据总变换矩阵计算此次绘制此顶点位置
gl_Position = uMVPMatrix * vec4(aPosition,1);
//将顶点的位置传给片元着色器
vPosition = aPosition;
//将环境光强度传给片元着色器
vAmbient = vec4(0.15,0.15,0.15,1.0);
}
片段着色器
#version 300 es
precision mediump float;
in vec3 vPosition; //接收从顶点着色器过来的顶点位置
in vec4 vAmbient;//接收从顶点着色器过来的环境光强度
out vec4 fragColor;
void main()
{
vec4 finalColor=vec4(物体颜色);
//根据环境光强度计算最终片元颜色值
fragColor=finalColor*vAmbient;
}