OpenGL光线二 opengl光照模型 Phong Lighting Model

一、Phong Lighting Model 光照模型的计算方式
在这里插入图片描述二、计算步骤
1、给定环境色ambient、灯光lightColor、物体本身的颜色objColor

2、计算漫反射diffuse
2.1、根据灯光位置和物体某点的位置计算光源的指向
vec3 lightDir = normalize(lightPos - FragPos);
2.2、根据光源的指向和法向量的内积(均为单位向量)计算反射的百分比,最后乘上光源
vec3 diffuse = max(dot(lightDir,Normal),0.0f)*lightColor;
2.3、如果模型矩阵执行了不等比缩放,法向量
Normal = mat3(transpose(inverse(modelMat)))*aNormal;
否则
Normal = mat3(modelMat)*aNormal;

3、计算镜面反射specular
3.1 计算反射向量
vec3 reflectVec =reflect(lightDir,Normal);
3.2计算相机方向向量
vec3 cameraVec = normalize(cameraPos - FragPos);
3.3计算放射光线的百分比
float specularAmount = pow(max(dot(reflectVec,cameraVec),0.0f),128);
3.4百分比乘以灯光得出反射光
vec3 specular = specularAmount*lightColor;

4、得出物体的光照
FragColor = vec4((ambientColor+diffuse+specular)*objColor,1.0f);

代码Git地址.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值