1. 程式人生 > >OpenGL ES 光照(一)

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