美文网首页
OpenGLES5-光照

OpenGLES5-光照

作者: AlanGe | 来源:发表于2020-06-29 11:34 被阅读0次

    光照基础

    1. 环境光照
    2. 漫反射光照
    3. 镜面光照


    光照特性

    1. 发射光:由物体自身发光
    
    2. 环境光:就是在环境中充分散射的光,而且无法分辨它的方向
    
       在OpenGL中,全局环境光的强度(0.2,0.2,0.2,1.0)
    
    3. 漫反射光:光线来自某个方向,但在物体上各个方向反射。
    
    4. 镜面高光:光线来自一个特定的方向,然后在物体表面上以一个特定的方向反射出去
    

    材质属性

    1. 泛射材质
    2. 漫反射材质
    3. 镜面反射材质
    4. 发射材质

    光照计算

    1. 发射光的计算

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

    2. 环境光的计算

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

    3. 漫反射光计算

    漫反射颜⾊色 = 光源的漫反射颜色 * 物体的漫发射材质颜色 * DiffuseFactor
    DiffuseFactor = max(0,dot(N,L))

    漫反射因⼦子DiffuseFactor 是光线 与顶点法线向量的点积

    材质

    1. 镜面反射

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

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

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

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

    H = normalise( l + E)

    衰减因子

    衰减因子 = 1.0/(距离衰减常量 + 线性衰减常量 * 距离 + 二次衰减常量 * 距离的平方) 距离衰减常量,线性衰减常量和二次衰减常量均为常量值

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

    聚光灯因子

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

    单位光线向量是从光源指向顶点的单位向量 
    
    聚光灯指数,表示聚光灯的亮度程度
    
    公式解读:单位光源位置 * 单位光线向量点积的聚光灯指数次方。
    

    聚光灯无过渡 与 有过渡处理

    增加过渡计算

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


    光照计算终极公式

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

    案例实战

    Demo: 07-光照

    相关文章

      网友评论

          本文标题:OpenGLES5-光照

          本文链接:https://www.haomeiwen.com/subject/zkkofktx.html