OpenGL ES 光照(一)
阿新 • • 發佈:2018-12-12
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;
}