ios 开发

OpenGLES 光照计算

2023-01-03  本文已影响0人  iOS小洁

光照基础

1、环境光照

2、漫反射光照

3、镜面光照

光照比较

光照特性

1、发射光:由物体资深发光

2、环境光:环境中充分散射的光,且无法分辨它的方向

3、漫反射光:光纤来自某个方向,但在物体上各个方向反射

4、镜面高光:光纤来自一个特定的方向,然后再物体表面上亿一个特定的方向反射出去

光照分类

环境光,漫反射光和镜⾯光的强度都会受距离的增⼤而衰减,只有发射光和全局环境光的强度不会受影响

材质属性

1、泛射材质

2、漫反射材质

3、镜面反射材质

4、发射材质

光照计算

1、环境光计算

环境光 = 光源的环境光颜⾊ * 物体的材质颜⾊

2、发射光的计算

发射颜色 = 物体的反射材质颜色

3、漫反射光照计算

光照有阴面和阳面,由法线计算光与物体之间的夹角,这个夹角分为入射角和反射角

漫反射颜色 = 光源的漫反射颜色 * 物体的漫反射材质颜色 * DiffuseFactor

DiffuseFactor = max(0, dot(N, L));

4、镜面光计算

镜面反射颜色 = 光源的镜面光颜色 * 物体的镜面材质颜色 * SpecularFactor

SpecularFactor = power(max(0, dot(N, H)), shininess);

H:视线向量E 与光线向量L 的半向量

dot(N, H):H,N的点积几何意义,平方线与法线夹角的cos值

shininess:高光的反光度

5、普通光照计算

光照颜色 = (环境颜色 + 漫反射颜色 + 镜面反射颜色) * 衰减因子

衰减因子计算:

img

衰减因⼦ = 1.0/(距离衰减常量 + 线性衰减常量 * 距离 + ⼆次衰减常量 * 距离的平方)

距离衰减常量,线性衰减常量和二次衰减常量均为常量值

6、聚光灯因子

聚光灯夹角cos值 = power(max(0, dot(单位光源位置, 单位光线向量)), 聚光灯指数);

单位光线向量:是从光源指向顶点的单位向量

聚光灯指数:表示聚光灯的亮度程度

公式解读:单位光源位置 * 单位光线向量 点积 的 聚光灯指数次方

增加过渡计算

聚光灯因子 = clamp((外环的聚光灯角度cos值 - 当前顶点的聚光灯角度cos值) / (外环的聚光灯角度cos值 - 内环聚光灯的角度cos值), 0.1)

聚光灯

7、光照计算终极公式

光照颜色 = 发射颜色 + 全局环境颜色 + (环境颜色 + 漫反射颜色 + 镜面颜色) * 聚光灯效果 * 衰减因子

上一篇 下一篇

猜你喜欢

热点阅读