OpenGL ES 光照(一)

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;
} 

猜你喜欢

转载自blog.csdn.net/lmjssjj/article/details/78561276