精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
OpenGL 4.0 GLSL 用單光源 實現逐頂點 漫反射光照模型
漫反射光照模型是:在所有方向上反射的光照強度相等,光照射到物體表面上一部分會被吸收而另一部分在其他方向上散射。一個典型的漫反射表面是沒有光澤的,而沒有被照射的地方是黑色的。
下面顯示了一個漫反射光照模型
漫反射的數學模型包含兩個向量:從物體表面的點到光源的的向量S 和 物體表面的某一點的法線向量N。如圖:
到達物體表面的光照強度很大一部分依賴于物體表面的朝向,當物體的法線方向和光照方向平行  則光照強度最大,當光照方向和這點的法線垂直 則光照強度為0。在這 中間
光照強度同 N與S的余弦值程比例,因此 我們可以用S與N的點積來來表達照射到物體表面的光照強度
Ld 是光源的光照密度,s和n都是單位向量
前面說過  在光被射入到人眼中前 有一部分光被物體吸收  ,設光的反射系數為Kd 則  最終射入人眼的光照強度為
漫反射光照模型只和光源的位置和法線有關   而與攝像機(viewer)的位置無關
頂點shader
[cpp] view plain copy
print?
#version 430
layout (location = 0) in vec3 VertexPosition;
layout (location = 1) in vec3 VertexNormal;
out vec3 LightIntensity;
uniform vec4 LightPosition; // Light position in eye coords.
uniform vec3 Kd;            // Diffuse reflectivity
uniform vec3 Ld;            // Diffuse light intensity
uniform mat4 ModelViewMatrix;
uniform mat3 NormalMatrix;
uniform mat4 ProjectionMatrix;
uniform mat4 MVP;
void main()
{
vec3 tnorm = normalize( NormalMatrix * VertexNormal);
vec4 eyeCoords = ModelViewMatrix * vec4(VertexPosition,1.0);
vec3 s = normalize(vec3(LightPosition - eyeCoords));
LightIntensity = Ld * Kd * max( dot( s, tnorm ), 0.0 );
gl_Position = MVP * vec4(VertexPosition,1.0);
}
片元shader
[cpp] view plain copy
print?
#version 430
in vec3 LightIntensity;
layout( location = 0 ) out vec4 FragColor;
void main() {
FragColor = vec4(LightIntensity, 1.0);
}
本站僅提供存儲服務,所有內容均由用戶發布,如發現有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
光照基礎
WebGL 第七課 中文翻譯
webgl筆記
淺談卡通渲染與真實感渲染結合思路
【風宇沖】Unity3D教程寶典之Shader篇:第十五講光照基礎
[CG編程] 基本光照模型的實現與拓展以及常見光照模型解析
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服

主站蜘蛛池模板: 福安市| 手机| 青州市| 崇文区| 文昌市| 呼图壁县| 延庆县| 襄樊市| 昔阳县| 栾城县| 九龙坡区| 临桂县| 寿光市| 图木舒克市| 武城县| 乐都县| 余江县| 三明市| 海口市| 兴安盟| 安仁县| 阜康市| 万安县| 沧源| 泰来县| 荔浦县| 绥江县| 清河县| 扶余县| 佛山市| 塘沽区| 泗洪县| 星子县| 平乐县| 沂水县| 尼玛县| 都兰县| 彭水| 黄山市| 石城县| 武陟县|