OpenGL笔记之光照原理一漫反射 物体颜色的本质是吸收光能后释放出去的百分比。物体对光的吸收power light * cos(a) a是光线反方向和像素点法线的夹角物体对光的漫反射powerOut power* objectColor法线差值三角形光栅化时候会根据三个顶点的法线值对三角形中间像素的影响权重来加权得到中间像素的法线值。#version 460 core out vec4 FragColor; in vec2 uv; in vec3 normal; uniform sampler2D sampler; //漫反射光源参数 uniform vec3 lightDirection;//平行光方向 uniform vec3 lightColor; //平行光强度 void main() { //1 获取物体的当前像素的颜色 vec3 objectColor texture(sampler, uv).xyz; //2 准备diffuse漫反射相关的各类数据 vec3 normalN normalize(normal); vec3 lightDirN normalize(lightDirection); float diffuse clamp(dot(-lightDirN, normalN), 0.0,1.0); // diffuse表示有多少光被吸收 objectColor表示有多少光被反射 vec3 finalColor lightColor * diffuse * objectColor; FragColor vec4(finalColor, 1.0); }