美文网首页OpenGL学习笔记
【四十,光照-光照基础_03镜面反射光照】

【四十,光照-光照基础_03镜面反射光照】

作者: Woodlouse | 来源:发表于2019-12-05 23:06 被阅读0次

    镜面反射光照

    镜面光照

    依赖因素:

    1. 光的方向向量;
    2. 物体的法向量;
    3. 观察者的观察方向;

    计算过程

    1. 计算反射向量;
    2. 计算视线向量和发射向量的夹角,夹角越小,镜面光的作用越大;

    观察向量的计算
    使用观察者世界空间位置和片段位置来计算

    实现

    镜面光照的实现主要是修改片段着色器,在片段着色器中:

    • 加入观察者位置,以摄像机位置为观察者位置
    uniform vec3 viewPos;
    
    • 在片段着色器中计算观察者视线方向,光线反射向量,两者之间的夹角,根据夹角值计算光线对物体的影像
        //Specular
        float specularStrength = 0.5f;
        vec3 viewDir = normalize(viewPos - FragPos);
        vec3 reflectDir = reflect(-lightDir, Normal);
        float spec = pow(max(dot(viewDir, reflectDir), 0.0), 128);
        vec3 speclular = specularStrength * spec * lightColor;
    

    运行效果

    镜面反射

    这个效果图和文章示例中的差很远呢,看不到一个比较亮的光斑


    镜面反射

    相关文章

      网友评论

        本文标题:【四十,光照-光照基础_03镜面反射光照】

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